2019春第二次课程设计实验报告
2019春第二次課程設計實驗報告
一、實驗項目名稱:
貪吃蛇游戲編寫;
二、實驗項目功能描述:
這個實驗主要是實現游戲的正常運行,實現的目標是對小蛇移動的控制,
同時對小蛇數據的保存,如何實現轉彎的效果,吃到食物后如何自行增
加長度;還有就是食物的出現的位置,以及食物的消失;
三、項目模塊結構介紹:
第一步:構造小蛇,在畫面中出現一條靜止的小蛇,并且用二維數組canvas[High][width]
對應的元素進行相關數據的輸出,當其值是0輸出空格,值為-1時輸出邊框#,值為1時
輸出蛇頭@,值為大于1的正數時輸出蛇身*。在startup()函數中初始化蛇頭在畫布的中間位置(canvas[High/2][width]=1),蛇頭向左依次生成4個蛇身(for(i=1;i<=4;i++))canvas[High/2][width/2-i]=i+1;),元素分別是2,3,4,5,;第二步:小蛇的移動,列出小蛇分別向右向上運動后對應二維數組元素變換;假設小蛇元素為54321,其中1為蛇頭,5432為蛇身,最大值5為蛇尾。實現將所有大于0的元素加1,得到65432,將最大值變為0;即去除原來的尾巴;再根據對應的移動方向將2對應方向的元素由0變成1;達到移動目的;
第三步:玩家控制小蛇移動,在undateWithInput()函數中按a,s,d,w鍵改變moveDirection的值,然后調用moveSnakeByDirection()實現小蛇不同方向的移動;
第四步:判斷游戲的失敗,當小蛇和邊框或者自身發生碰撞時游戲結束;
第五步:吃食物增加自身長度,當二維數組canvas[High][eidth]的元素值為-2時輸出食物數值F,當蛇頭碰到食物食物時長度加1;
總體模型:
Int main()
{Startup(); //初始化While(1) //游戲循環執行{Show(); //顯示畫面updateWithoutInput(); //與用戶輸入無關的更行updateWithInput(); //與用戶輸入有關的更新
}
return 0;
} 四、實現界面展示:
五、代碼托管鏈接:
https://gitee.com/LYL596/game.git
六、實驗總結:
這一周這樣游戲設計感覺比上一個飛機小游戲的細節要難一點點,上一個飛機小游戲做的還是挺成功的,同時自己設計的游戲,玩起來感覺就是很不錯,雖然說吧畫面看起來有一點點別扭,但是這個都不是事,阻擋不了成功的喜悅。經過一個星期對git的使用,對git上傳代碼,建立倉庫操作還是很熟練,消除了以前怎樣上傳代碼,這個游戲完成了,下一個游戲代碼怎樣上傳這一些問題;貪吃蛇這個游戲在編寫過程中遇到sleep()這個在給定的代碼頭文件不存在,然后就一直運行不了,最后去百度查找之后,需要加一個頭文件#include <unistd.h>,其次書本上提供的代碼感覺存在一點點問題,起初給定的移動代碼,到后面卻沒有了;然后再運行的時候沒有蛇頭,這個就屬于粗心大意,賦值打錯了;這個游戲最難的地方就是小蛇的移動,如果還是書本提供,自己很難想到怎樣去實現移動這一操作;每一次完成一個游戲自己感覺還是非常高興的,畢竟努力的成果。慢慢的應該向更難的方向進軍了;
轉載于:https://www.cnblogs.com/lyl68/p/10957360.html
總結
以上是生活随笔為你收集整理的2019春第二次课程设计实验报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6 Proxy 性能之我见
- 下一篇: 【原创】大叔经验分享(65)spark读