好不容易有個(gè)十一長(zhǎng)假,終于可以編點(diǎn)自己喜歡的東西了,由于公司主要用的是C#,我也就入鄉(xiāng)隨俗了,拿C#寫(xiě)了個(gè)小游戲練練手,以后有時(shí)間再用JAVA重寫(xiě)一遍。

        這只是初版,如果有BUG的話,大家盡量提出來(lái)噢,我會(huì)盡力改的,不會(huì)改的就得請(qǐng)教各位高手咯!
我同時(shí)也希望可以幫助像我一樣的初學(xué)者能更上一層樓 。

        還有一個(gè)我不解的問(wèn)題,希望高手賜教。

        當(dāng)我在Visual Studio 2005里點(diǎn)運(yùn)行按鈕時(shí),游戲運(yùn)行會(huì)很卡,很占CPU,而且源代碼目錄下會(huì)生成一大堆.TMP文件;但是,我直接雙擊DEBUG文件夾下編譯好的.exe文件,游戲運(yùn)行正常,CPU占用率很低

        誰(shuí)能告訴我為什么?先謝謝啦!

        以下是可執(zhí)行文件及源代碼的下載
        MySnake
                                                                                                                                                                               08.10.05


        今天修復(fù)了一個(gè)BUG,即在定時(shí)器每次時(shí)間間隔中,可以改變N次蛇的移動(dòng)方向,只要按的夠快。這樣就產(chǎn)生了一個(gè)問(wèn)題,比如說(shuō),蛇正在向右移動(dòng),用很快的手速依次按下"↓"鍵和"←"鍵,當(dāng)按下"↓"鍵時(shí),蛇實(shí)際并沒(méi)有移動(dòng)(每次時(shí)間間隔只能移動(dòng)一次),但移動(dòng)方向已改變?yōu)橄拢@時(shí)可以按下"←"鍵的條件為真,按下"←"鍵后在界面顯示蛇還未移動(dòng)的情況下,就GAME OVER了(即蛇頭撞到了蛇身)。


        我在原有基礎(chǔ)上加了個(gè)BOOL變量canChangeDirection,來(lái)控制在定時(shí)器每次時(shí)間間隔中,只能改變一次蛇的移動(dòng)方向,這樣就修復(fù)了以上BUG。

        以下為1.01版本的可執(zhí)行文件及源代碼的下載
        MySnake_v1.01

                                                                                                                                                                                08.10.12
 
      今天又修改了兩個(gè)地方,這都要多虧raof01 給我提的兩個(gè)很好的建議。在這里要好好謝謝他!

      1.原來(lái)蛇身移動(dòng)的算法效率不高,我的做法是先將移動(dòng)前的整個(gè)蛇身坐標(biāo)復(fù)制一遍,然后再進(jìn)行移動(dòng)時(shí)的賦值;其實(shí)只要復(fù)制當(dāng)前Tile的前一個(gè)Tile的坐標(biāo)即可,詳情請(qǐng)見(jiàn)v1.02版的代碼。

      2.在v1.01版中,不支持在每個(gè)時(shí)間間隔內(nèi)玩家多次的鍵盤(pán)輸入,即每個(gè)時(shí)間間隔內(nèi)只接受玩家的第一次輸入,其實(shí)這樣很不人性化,通過(guò)raof01 的指點(diǎn),我在v1.02版中添加了一個(gè)保存蛇的移動(dòng)方向的隊(duì)列,存儲(chǔ)用戶(hù)的輸入,這樣玩家想按多快都可以了,他按的都會(huì)被處理,按照隊(duì)列的順序依次改變蛇的移動(dòng)方向,不過(guò)每個(gè)時(shí)間間隔依然只能改變一次移動(dòng)方向。

      以下為1.02版本的可執(zhí)行文件及源代碼的下載
      MySnake_v1.02
                                                                                                                                                                                08.10.18


what the hell is going on ??!!