c語言貪吃蛇詳解-1.畫出地圖
前幾天的實驗室培訓課后作業我布置了貪吃蛇,今天有時間就來寫一下題解。我將分幾步來教大家寫一個貪吃蛇小游戲。由於大家c語言未學完,這個教程只涉及數組和函數等知識點。
首先我們使用宏定義來定義兩個常數,地圖的高(H)和地圖的寬(W)
#define H 20 #define W 20
這樣寫的好處是以后改變地圖的大小就不用更改寫好的代碼了,只要修改下宏定義。節省了時間又避免改出bug
接下來,我們定義一個二維數組,這個二維數組的每一個值剛好對應了平面的每一個點,這樣就可以方便地自定義地圖了。可以設置障礙物什么的了。然后我們用數組a[H][W]來存儲地圖情況,如果a[i][j]==0,就說明第i+1行,第j+1列是空的,如果a[i][j]==1,就說明這個點是障礙物。
然后我們使用下面的代碼來把地圖數組的邊框做出來,就是讓數組邊緣等於1。(int全局變量默認為0)。
1 void init() 2 { 3 int i,j; 4 for(i=0; i<H; i++) 5 { 6 a[i][0]=1; //讓第一列為1 7 a[i][W-1]=1; //讓最后一列為1 8 } 9 for(j=0; j<W; j++) 10 { 11 a[0][j]=1; //讓第一行為1 12 a[H-1][j]=1; //讓最后一行為1 13 } 14 }
這個只是最簡單的地圖,如果你有其他想法可以自由發揮,畫出自己的地圖。
地圖畫好了,剩下的就是畫出地圖了。我們把畫地圖的過程也寫為一個函數,這樣能使代碼結構更清晰,更容易找出bug。畫地圖就簡單了,就是遍歷整個數組,然后值為0的地方輸出空格,值為1的地方輸出一個符號,符號按自己喜好,我這里使用了#。

然后我們發現長寬不合適,我們可以修改剛開始的H和W的值。
按自己喜好調整,比如這樣
#define H 23 #define W 75
然后看看是不是比剛才好看了。知道宏定義的好處了吧。

好了,到這里為止,我們已經學會了畫地圖。
這只是最簡單的地圖,通過修改地圖數組,我們就能做出很多不一樣的地圖。
下面附上第一步的完整代碼。
#include <stdio.h> #include <stdlib.h> #define H 23 #define W 75 int a[H][W]; //地圖數組 void init() //程序開始時的初始化操作 { int i,j; for(i=0; i<H; i++) { a[i][0]=1; //讓第一列為1 a[i][W-1]=1; //讓最后一列為1 } for(j=0; j<W; j++) { a[0][j]=1; //讓第一行為1 a[H-1][j]=1; //讓最后一行為1 } } void drawMap() //畫地圖 { int i,j; for(i=0;i<H;i++) { for(j=0;j<W;j++) //兩重for循環遍歷數組 { if(a[i][j]==0) //為0輸出空格 printf(" "); else //為1輸出# printf("#"); } printf("\n"); //別忘了換行 } } int main() { init(); drawMap(); return 0; }
