貪吃蛇的製作過程中遇到的一些小問題

2021-08-14 04:16:29 字數 1102 閱讀 9070

第一步是介面的設計

首先定義乙個二維陣列,做出乙個17*17的方陣,每個二維陣列map的座標就是方陣中的座標,然後我們用』『和『 』空格,來定義這些字元,構成乙個圖形介面,這個就是貪吃蛇的活動框即活動範圍,如果蛇頭碰到牆壁即『』則遊戲結束。

如下圖定義好介面,並printf之後,定義蛇的座標,定義結構體struct snake,代表蛇身蛇頭的座標,並把map地圖上對應座標的字元定義為』x』(蛇身)或『h』(蛇頭),初始化蛇的長度為5.

然後接下來就遇到困難了,怎麼蛇運動呢?

下面是**

void food() 

}}void move()

else

map[a[i].x][a[i].y] = 'x'; //把地圖上蛇身座標處的字元設定成『x』

}a[sum - 1].x = a[sum - 1].x + dx[a[sum - 1].dir]; //蛇頭按當前方向移動一格

a[sum - 1].y = a[sum - 1].y + dy[a[sum - 1].dir];

map[a[sum - 1].x][a[sum - 1].y] = 'h'; //把地圖上蛇頭座標處的字元設定成『h』

}else

先判斷是否吃到食物,然後將座標代表的字元進行改變,表面上看起來是蛇在動實際上是地圖上的字元改變,從而致蛇運動。

其中是使用無限迴圈的方式來使蛇不斷運動的,裡面的邏輯關係需要稍微思考一下。

然後是如何轉彎

主要是利用輸入字元對應的數字對座標進行加減乘除,然後改變蛇頭的座標,從而進行轉彎,一下是**

void turn() 

}}

做完蛇的功能然後就是生成食物了。利用隨機函式生成座標,同時要保證實在方框內的座標,即字元已經被初始化為『 』的字元,不可以出現在邊框上或蛇身上。

然後就是吃下食物,在蛇身變化之前,判斷下乙個座標上的字元是空格還是食物,如果是食物要在蛇尾多加上乙個新的字元『x』,並使sum即snake_length+1。

接下來是判斷如何結束遊戲,與判斷是否為食物相同,判斷下乙個座標是否為『*』,如果是,則表明遊戲結束,輸出game over。然後隨機按鍵,重新開始遊戲。

一 貪吃蛇的製作

對於貪吃蛇 很多人都不陌生 但作為學程式設計的學生 如何在學完c語言後寫出一款控制台貪吃蛇呢?1首先,我們要明確要定義的標頭檔案 include include include windows程式設計標頭檔案 include include 控制台輸入輸出標頭檔案 include2其次,無論是遊戲還...

社會實踐(軟體)製作過程中遇到的問題

從現在開始就準備做暑期社會實踐的軟體了,現在想的是做乙個課程表。當然不是簡單的課程表,我們要做乙個客戶端,和學校的伺服器連線 當然很可能學校不給我們用伺服器的介面,那我們就用自己的伺服器 或者考慮直接通過http請求向教學資訊網傳送請求,然後我們在手機端解析,然後顯示。當然現在還沒定最終怎麼弄,還只...

工作過程中遇到的問題記錄

一 除錯過程中遇到的問題 硬體 arm9 系統 linux 1 使用的sqlite3 資料庫 在向某個表中插入列時,遇到插入的當前值為空時,顯示插入錯誤 就是向表中插入的資料的值不能為空。注 空和null不相等。插入null時是正確的。2 函式 a snprintf 為函式原型int snprint...