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