版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 信息技術(shù)學院本科課程設(shè)計報告</p><p><b> 課程設(shè)計題目</b></p><p> 學 生 姓 名: </p><p> 學 院: 信息技術(shù)學院 </p><p> 專
2、 業(yè): 信息管理與信息系統(tǒng) </p><p> 班 級: </p><p> 學 號: </p><p> 指 導 教 師: </p><p>
3、 完 成 日 期: </p><p><b> 題目(問題)描述</b></p><p> 貪吃蛇小游戲程序設(shè)計</p><p> 圖1 貪吃蛇系統(tǒng)界面</p><p><b> 功能分析</b></p><
4、;p> 貪吃蛇游戲是一個經(jīng)典小游戲,一條蛇在封閉圍墻里,圍墻里隨機出現(xiàn)一個食物,通過按鍵盤四個光標鍵控制蛇向上下左右四個方向移動,蛇頭撞倒食物,則食物被吃掉,蛇身體長一節(jié),同時記10分,接著又出現(xiàn)食物,等待蛇來吃,如果蛇在移動中撞到墻或身體交叉蛇頭撞倒自己身體游戲結(jié)束。</p><p><b> 系統(tǒng)設(shè)計</b></p><p><b> 程序總
5、體結(jié)構(gòu)</b></p><p> 圖2貪吃蛇程序系統(tǒng)的構(gòu)圖</p><p><b> 2.界面設(shè)計</b></p><p> 如圖,通過W、S、A、D、space鍵進行操作</p><p><b> 3.輸入方式設(shè)計</b></p><p> A 用W、
6、S、A、D、鍵控制蛇的上下左右移動,space鍵停止,esc鍵結(jié)束。</p><p> B 游戲目標:操縱屏幕上那條可愛的小蛇,在方框中不停吃豆豆,而每吃一個豆豆,蛇的身體都變的更長一些,即增加一顆星星。游戲的難度也會隨之加大。</p><p> C 游戲終止:終止條件1——蛇頭撞到墻上;終止條件2——蛇身形成一個圈,也就是蛇頭碰到自身的任何一處</p><p>
7、; 4.重要數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)設(shè)計</p><p><b> 5.函數(shù)設(shè)計</b></p><p><b> 6.函數(shù)調(diào)用圖</b></p><p><b> 7. 實體屬性圖</b></p><p> 關(guān)鍵技術(shù)、難點及其解決方法</p><p>
8、;<b> 測試方法</b></p><p><b> 總結(jié)</b></p><p><b> 附錄1</b></p><p><b> 程序源代碼</b></p><p> #include <windows.h></p>
9、;<p> #include <stdlib.h></p><p> #include <time.h></p><p> #include <stdio.h></p><p> #include <string.h></p><p> #include <coni
10、o.h></p><p> #define N 21</p><p> int apple[3];</p><p> char score[3];</p><p> char tail[3]; </p><p> void gotoxy(int x, int y) //輸出坐標 </p>
11、;<p><b> {</b></p><p> COORD pos;</p><p> pos.X = x; </p><p> pos.Y = y;</p><p> SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
12、</p><p><b> }</b></p><p> void color(int b) //顏色函數(shù) </p><p><b> {</b></p><p> HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ; &
13、lt;/p><p> SetConsoleTextAttribute(hConsole,b) ;</p><p><b> } </b></p><p> int Block(char head[2]) //判斷出界 </p><p><b> {</b></p><p&
14、gt; if ((head[0] < 1) || (head[0] > N) || (head[1] < 1) || (head[1] > N))</p><p><b> return 1;</b></p><p><b> return 0;</b></p><p><b>
15、}</b></p><p> int Eat(char snake[2]) //吃了蘋果 </p><p><b> {</b></p><p> if ((snake[0] == apple[0]) && (snake[1] == apple[1]))</p><p><b&
16、gt; {</b></p><p> apple[0] = apple[1] = apple[2] = 0;</p><p> gotoxy(N+44,10);</p><p> color(13);</p><p> printf("%d",score[0]*10);</p><
17、p> color(11);</p><p><b> return 1;</b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><
18、;p> void Draw(char **snake, int len) //蛇移動 </p><p><b> {</b></p><p> if (apple[2]) {</p><p> gotoxy(apple[1] * 2, apple[0]);</p><p> color(12);&l
19、t;/p><p> printf("●");</p><p> color(11);</p><p><b> }</b></p><p> gotoxy(tail[1] * 2, tail[0]);</p><p> if (tail[2]) </p>&
20、lt;p> { color(14);</p><p> printf("★");</p><p> color(11);</p><p><b> }</b></p><p><b> else </b></p><p> printf
21、("■");</p><p> gotoxy(snake[0][1] * 2, snake[0][0]);</p><p> color(14);</p><p> printf("★");</p><p> color(11);</p><p> putchar(
22、39;\n');</p><p><b> }</b></p><p> char** Move(char **snake, char dirx, int *len) //控制方向 </p><p><b> {</b></p><p> int i, full = Eat(sn
23、ake[0]);</p><p> memcpy(tail, snake[(*len)-1], 2);</p><p> for (i = (*len) - 1; i > 0; --i) </p><p> memcpy(snake[i], snake[i-1], 2);</p><p> switch (dirx) </
24、p><p><b> { </b></p><p> case 'w': case 'W': --snake[0][0]; break;</p><p> case 's': case 'S': ++snake[0][0]; break;</p><p>
25、 case 'a': case 'A': --snake[0][1]; break;</p><p> case 'd': case 'D': ++snake[0][1]; break;</p><p> default: ;</p><p><b> } </b><
26、;/p><p> if (full) </p><p><b> { </b></p><p> snake = (char **)realloc(snake, sizeof(char *) * ((*len) + 1));</p><p> snake[(*len)] = (char *)malloc(size
27、of(char) * 2);</p><p> memcpy(snake[(*len)], tail, 2);</p><p><b> ++(*len);</b></p><p> ++score[0];</p><p> if(score[3] < 16) </p><p>
28、++score[3];</p><p> tail[2] = 1;</p><p><b> }</b></p><p><b> else </b></p><p> tail[2] = 0;</p><p> return snake;</p>&
29、lt;p><b> }</b></p><p> void init(char plate[N+2][N+2], char ***snake_x, int *len) //初始化 </p><p><b> {</b></p><p><b> int i, j;</b></p&
30、gt;<p> char **snake = NULL;</p><p><b> *len = 3;</b></p><p> score[0] = score[3] =3;</p><p> snake = (char **)realloc(snake, sizeof(char *) * (*len));</p&
31、gt;<p> for (i = 0; i < *len; ++i)</p><p> snake[i] = (char *)malloc(sizeof(char) * 2);</p><p> for (i = 0; i < 3; ++i) </p><p><b> {</b></p><
32、;p> snake[i][0] = N/2 + 1;</p><p> snake[i][1] = N/2 + 1 + i;</p><p><b> } </b></p><p> for (i = 1; i <= N; ++i) </p><p> for (j = 1; j <= N;
33、++j) </p><p> plate[i][j] = 1;</p><p> apple[0] = rand()%N + 1; apple[1] = rand()%N + 1;</p><p> apple[2] = 1;</p><p> for (i = 0; i < N + 2; ++i) </p>&l
34、t;p><b> {</b></p><p> gotoxy(0, i);</p><p> for (j = 0; j < N + 2; ++j) </p><p><b> {</b></p><p> switch (plate[i][j]) </p>&l
35、t;p><b> {</b></p><p><b> case 0: </b></p><p> color(12);printf("□");color(11); continue;</p><p> case 1: printf("■"); continue;<
36、;/p><p> default: ;</p><p><b> }</b></p><p><b> }</b></p><p> putchar('\n');</p><p><b> } </b></p><
37、;p> for (i = 0; i < (*len); ++i)</p><p><b> {</b></p><p> gotoxy(snake[i][1] * 2, snake[i][0]);</p><p> printf("★");</p><p><b> }
38、 </b></p><p> putchar('\n');</p><p> *snake_x = snake;</p><p><b> }</b></p><p> void Manual()</p><p><b> {</b>&l
39、t;/p><p> gotoxy(N+30,2);</p><p> color(10);</p><p> printf("按 W S A D 移動方向");</p><p> gotoxy(N+30,4);</p><p> printf("按 space 鍵暫停");
40、 </p><p> gotoxy(N+30,8);</p><p> color(11);</p><p> printf("歷史最高分為: ");</p><p> color(12);</p><p> gotoxy(N+44,8);</p><p> pr
41、intf("%d",score[1]*10);</p><p> color(11);</p><p> gotoxy(N+30,12);</p><p> printf("你現(xiàn)在得分為: 0"); </p><p><b> }</b></p>
42、<p> int File_in() //取記錄的分數(shù) </p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> if((fp = fopen("C:\\tcs.txt","a+")) == NULL
43、)</p><p><b> {</b></p><p> gotoxy(N+18, N+2);</p><p> printf("文件不能打開\n");</p><p><b> exit(0);</b></p><p><b> }
44、</b></p><p> if((score[1] = fgetc(fp)) != EOF);</p><p><b> else</b></p><p> score[1] = 0;</p><p><b> return 0;</b></p><p>
45、;<b> }</b></p><p> int File_out() //存數(shù)據(jù) </p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> if(score[1] > score[0]) </p
46、><p> {gotoxy(10,10);</p><p> color(12);</p><p> puts("闖關(guān)失敗 加油耶");</p><p> gotoxy(0,N+2); </p><p><b> return 0;</b></p><
47、p><b> }</b></p><p> if((fp = fopen("C:\\tcs.txt","w+")) == NULL)</p><p><b> {</b></p><p> printf("文件不能打開\n");</p>
48、<p><b> exit(0);</b></p><p><b> }</b></p><p> if(fputc(--score[0],fp)==EOF)</p><p> printf("輸出失敗\n");</p><p> gotoxy(10,10)
49、;</p><p> color(12);</p><p> puts("恭喜您打破記錄"); </p><p> gotoxy(0,N+2);</p><p><b> return 0;</b></p><p><b> }</b></
50、p><p> void Free(char **snake, int len) //釋放空間 </p><p><b> {</b></p><p><b> int i;</b></p><p> for (i = 0; i < len; ++i) </p><
51、p> free(snake[i]);</p><p> free(snake);</p><p><b> }</b></p><p> int main(void)</p><p><b> {</b></p><p><b> int len;
52、</b></p><p> char ch = 'g';</p><p> char a[N+2][N+2] = {{0}};</p><p> char **snake;</p><p> srand((unsigned)time(NULL));</p><p> color(1
53、1);</p><p> File_in();</p><p> init(a, &snake, &len);</p><p><b> Manual();</b></p><p> while (ch != 0x1B) // 按 ESC 結(jié)束 </p><p><
54、;b> { </b></p><p> Draw(snake, len);</p><p> if (!apple[2]) {</p><p> apple[0] = rand()%N + 1;</p><p> apple[1] = rand()%N + 1;</p><p> appl
55、e[2] = 1;</p><p><b> }</b></p><p> Sleep(200-score[3]*10);</p><p> setbuf(stdin, NULL);</p><p> if (kbhit())</p><p><b> {</b>&
56、lt;/p><p> gotoxy(0, N+2);</p><p> ch = getche();</p><p><b> }</b></p><p> snake = Move(snake, ch, &len); </p><p> if (Block(snake[0])==1
57、) </p><p><b> {</b></p><p> gotoxy(N+2, N+2);</p><p> puts("你輸了");</p><p> File_out();</p><p> Free(snake, len);</p><
58、p><b> getche();</b></p><p><b> exit(0); </b></p><p> } </p><p><b> }</b></p><p> Free(snake, len);<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貪吃蛇java課程設(shè)計--貪吃蛇程序設(shè)計
- 貪吃蛇小游戲
- 基于mfc的貪吃蛇程序設(shè)計課程設(shè)計
- java貪吃蛇游戲 課程設(shè)計
- c語言程序設(shè)計課程設(shè)計(論文)-貪吃蛇
- qt課程設(shè)計--貪吃蛇游戲設(shè)計
- c語言貪吃蛇游戲課程設(shè)計
- c語言課程設(shè)計--貪吃蛇游戲
- 貪吃蛇游戲的實現(xiàn)課程設(shè)計
- java課程設(shè)計--設(shè)計一個貪吃蛇游戲程序
- java課程設(shè)計---java設(shè)計貪吃蛇游戲
- 貪吃蛇課程設(shè)計
- java課程設(shè)計報告貪吃蛇游戲
- 貪吃蛇課程設(shè)計
- 貪吃蛇課程設(shè)計
- 貪吃蛇c語言程序設(shè)計
- 課程設(shè)計--安卓手機游戲---貪吃蛇
- 貪吃蛇課程設(shè)計報告
- java課程設(shè)計貪吃蛇
- java課程設(shè)計--貪吃蛇
評論
0/150
提交評論