貪吃蛇遊戲實驗報告

2021-09-29 20:33:39 字數 3127 閱讀 1856

使用教材:c語言課程設計與遊戲開發實踐

一、實驗目的

熟悉實驗環境vc++(或dev c++);

熟悉console的輸入和輸出;

通過遊戲的需求,進一步掌握陣列的使用。

二、實驗環境

dev c++/vc++

三、實驗記錄

實驗思路:以實驗教材p87至p91頁的**為基礎,加入計分功能,計命功能,變速功能,遊戲成功和失敗出口,規則和選擇蛇型的輸入介面,道具,復活和暫停等功能。

實驗過程:由於一開始思路比較正確且有上次實驗經驗,問題都能得到較好解決。但由於缺乏如加入斷點等除錯經驗,導致浪費較多時間。

實驗結果:**量248行,分為front() startup() show() move() updatewithinput() back() 6個模組,基本實現上述功能。

實驗的**和注釋:

#include

#include

#include

#include

#define h 24

//畫面尺寸

#define w 79

int dire;

// 小蛇移動位置,上下左右分別用1,2,3,4表示

int f_x, f_y;

// 食物f

int s_x, s_y;

// 道具s

int canvas[h]

[w]=

;//陣列畫布

int a;

//使用者輸入變數

int life =

3, score =0;

void

gotoxy

(int x,

int y)

void

front()

system

("cls");

}void

startup()

// 初始化資料

for(j =

0; j < w; j++

) canvas[h /2]

[w /2]

=1;//頭

for(i =

1; i <=

4; i++

)//身

canvas[h /2]

[w /

2- i]

= i +1;

dire =4;

// 初始向右移

for(i =

0; i <

6; i++)}

void

move()

if(max = canvas[i]

[j]+1)

//確定第二大數,配合道具s使用

if(canvas[i]

[j]==2)

}int nh_i, nh_j;

if(dire ==1)

// 向上

if(dire ==2)

// 向下

if(dire ==3)

// 向左

if(dire ==4)

// 向右

if(canvas[nh_i]

[nh_j]==-

3)//道具s

else

if(canvas[nh_i]

[nh_j]==-

2)//食物f

else

canvas[ot_i]

[ot_j]=0

;if(canvas[nh_i]

[nh_j]

>

0|| canvas[nh_i]

[nh_j]==-

1||life==0)

//判斷小蛇和自身撞或和邊框撞

else

}else

canvas[nh_i]

[nh_j]=1

;}void

show()

// 輸出蛇身*

else

if(canvas[i]

[j]==-2

)printf

("f");

// 輸出食物f

else

if(canvas[i]

[j]==-3

)printf

("s");

// 輸出道具s

}printf

("\n");

}printf

("分數為%d "

, score)

;printf

("生命為%d "

, life);if

(score<20)

sleep

(100);

//速度

else

if(score>=20)

sleep(70

);else

if(score >=50)

sleep(50

);}void

updatewithinput()

else

if(input ==

'd')

else

if(input ==

'w')

else

if(input ==

'p')

else

if(input ==

0x1b

)exit(0

);else

if(input ==

's')}}

void

back()

intmain()

back()

;return0;

}

四、問題記錄

1.實驗中,本來想用goto begin功能返回實現復活,但編譯器會報錯(原因未知)。解決辦法:在142行的位置重新呼叫一次startup()模組。

2.實驗中,本來想再增加一種道具,並在二維陣列畫布中以-4作為標記,增加後發現,邊框上總會有2個#號發生1格位置的偏移,且在蛇經過與#號同一行位置,也會發生相同位置偏移。(原因未知,尚無解決辦法)

3.蛇在向左和向上行進的過程中(向右和向下則不會),組成蛇的符號會出現週期性的消失和重現(原因未知,尚無解決辦法)

五、小結體會

1.模組化程式設計可以更加方便的找到相關功能的**和自變數。

2.即使在思路正確的情況下,如果缺乏足夠的除錯經驗和手段,找bug依舊很麻煩。

貪吃蛇實驗

總的來說共分為三個部分 遊戲介面 食物 蛇。遊戲介面很簡單,不多贅述。食物要實現隨機出現在介面內。蛇部分是重難點,要實現其移動 吃食物 身體的移動 碰撞檢測等等。我運用了for迴圈來列印出整個遊戲介面,以下為 部分 void print wall cout for int i 1 i n i cou...

貪吃蛇遊戲

貪吃蛇遊戲 結構化程式設計 c語言程式設計 重要的的是結構化的程式設計思想 include include include include include include define field width 300 就做20個格仔的 define field height 300 define f...

貪吃蛇遊戲

include include include include include 使用當前時間做種子 enum dir 列舉型別enum dir 圍牆 class fencef 定義物件 畫框框 void fence initfence 顯示框框 void fence outputf int snak...