在前面的智慧型蛇遊戲中,我已經將我的全部**都貼出來了,大家也都看到了我的成果,雖然存在很多bug,但總算是有乙個初步的構架了,接下來,我要與大家分享一下這條蛇的艱難成長過程。
首先,當然是最順利的乙個部分啦,那就是除去最基本的影象列印了,這我想也不用多說,大家接觸到這個作業時,肯定噼里啪啦就打出了乙個大概的框架了,因此,在這裡我就一筆帶過了。
那麼,在順利地完成了框架後,我就開始膨脹了,極其順暢地敲完了移動的**,自信地一跑,結果蛇的身體竟然斷開了!而且蛇的行動也與我的設想大相徑庭,這就讓我覺得很難辦了。
最開始的移動**如下:
int i;
if(sx == 1)
if(snake_x[i] == snake_x[i+1])
else snake_x[i]++;
}for(i=4;i>=1;i--)
if(snake_x[i] == snake_x[i+1]) ;
else }}
if(sx == -1)
if(snake_y[i] == snake_y[i+1])
else
if(snake_y[i] > snake_y[i+1]) snake_y[i]--;
else snake_y[i]++;
}for(i=4;i>=0;i--)
if(snake_x[i] == snake_x[i+1]) ;
else }}
if(sy == -1)
if(snake_y[i] == snake_y[i+1])
else snake_y[i]++;
}for(i=4;i>0;i--)
map[snake_y[i]][snake_x[i]] = map[snake_y[i-1]][snake_x[i-1]];}}
if(sy == 1)
if(snake_y[i] == snake_y[i+1])
else
if (snake_y[i] < snake_y[i+1]) snake_y[i]++;
else snake_y[i]--;
}for(i=5;i>0;i--)
map[snake_y[i]][snake_x[i]] = map[snake_y[i-1]][snake_x[i-1]];
}}
打了這麼多**,結果卻出現了許多難以預料的bug,我的心情是崩潰的,在經過苦苦思索後,突然,我意識到了乙個問題,我上面的**很多部分都是無意義的重複(我是利用除了蛇頭以外,其他部分都沿著上一節的位置運動的),想通了這點,我立刻修改了我的**
這裡是修改後的**:
int i;
map[snake_y[0]][snake_x[0]] = ' ';
for(i = 0;i
<4;i++ )
if(sx == 0)
else snake_x[4] = snake_x[4] + sx;
map[snake_y[4]][snake_x[4]] = 'h';
打完這個,突然覺得之前的我好傻…..
既然是貪吃蛇,自然少不了其重要的一部分:吃東西啦,這部分**較為簡單,利用c庫帶的rand函式即可實現
**如下:
void put_money()}}
}
上面的是修改之後的**,由於我之前的**使用遞迴的方法,在生成幾個食物後,程式會自己崩潰,我便利用迴圈來達到生成食物的目的。
當然,還要相應地新增伸長的**:
if(map[snake_y[0]][snake_x[0]] == '$')
這樣,我們的第乙個模組就完成了。
利用我們的智慧型蛇程式,我們可以實現蛇自動行走,我們只控制方向,然而,這樣還是毫無難度,我們可以設計乙個**,使蛇越長,爬的越快,利用時間函式,可以很輕易地做到這一點。
**如下:
clock_t start,end;
start = time(null);
end = time(null);
while(end - start
< 4 / snake_index) end = time(null);
這樣就稍微增加了一點難度了。
這就是我的這個小遊戲的設計過程了,雖然很簡陋,但總的還是挺能吸引初學者的興趣的。
字元版本貪吃蛇遊戲設計及演算法
貪吃蛇,是一款經典的益智遊戲。我們可以通過演算法捕捉和傳遞智慧型,設計出能自動跑著吃食物的智慧型蛇。有不少人對此研究,設計出了很棒的演算法,如圖 歸納一些比較高階的演算法為三類 1.寬度優先搜尋最短路徑 2.走哈密頓迴路 3.特殊決策 這裡我主要介紹最簡單的貪婪演算法及整個遊戲的設計。首先是自動尋路...
字元遊戲 貪吃蛇
貪吃蛇遊戲的設計思路很簡單,相信有過一些程式設計經驗的同學都不至於束手無策,可在我剛剛接觸程式設計時,這個小小的貪吃蛇遊戲可是讓我費了不少腦筋,即使軟導老師已經把偽 告訴了我們,我還是花費了好大的功夫。話不多說,我們現在就開始吧,首先我們整理一下思路。首先列印地圖,然後用兩個一維陣列來表示蛇頭的座標...
字元遊戲 貪吃蛇
貪吃蛇是一款十分經典的遊戲。下面介紹一下字元版本貪吃蛇。偽 框架 輸出字元矩陣 while not 遊戲結束 do ch 等待輸入 case ch do a 左前進一步,break d 右前進一步,break w 上前進一步,break s 下前進一步,break end case 輸出字元矩陣 e...