好不容易有個十一長假,終于可以編點自己喜歡的東西了,由于公司主要用的是C#,我也就入鄉隨俗了,拿C#寫了個小游戲練練手,以后有時間再用JAVA重寫一遍。
這只是初版,如果有BUG的話,大家盡量提出來噢,我會盡力改的,不會改的就得請教各位高手咯!
我同時也希望可以幫助像我一樣的初學者能更上一層樓 。
還有一個我不解的問題,希望高手賜教。
當我在Visual Studio 2005里點運行按鈕時,游戲運行會很卡,很占CPU,而且源代碼目錄下會生成一大堆.TMP文件;但是,我直接雙擊DEBUG文件夾下編譯好的.exe文件,游戲運行正常,CPU占用率很低。
誰能告訴我為什么?先謝謝啦!
以下是可執行文件及源代碼的下載
MySnake
08.10.05
今天修復了一個BUG,即在定時器每次時間間隔中,可以改變N次蛇的移動方向,只要按的夠快。這樣就產生了一個問題,比如說,蛇正在向右移動,用很快的手速依次按下"↓"鍵和"←"鍵,當按下"↓"鍵時,蛇實際并沒有移動(每次時間間隔只能移動一次),但移動方向已改變為下,這時可以按下"←"鍵的條件為真,按下"←"鍵后在界面顯示蛇還未移動的情況下,就GAME OVER了(即蛇頭撞到了蛇身)。
我在原有基礎上加了個BOOL變量canChangeDirection,來控制在定時器每次時間間隔中,只能改變一次蛇的移動方向,這樣就修復了以上BUG。
以下為1.01版本的可執行文件及源代碼的下載
MySnake_v1.01
今天又修改了兩個地方,這都要多虧raof01 給我提的兩個很好的建議。在這里要好好謝謝他!
1.原來蛇身移動的算法效率不高,我的做法是先將移動前的整個蛇身坐標復制一遍,然后再進行移動時的賦值;其實只要復制當前Tile的前一個Tile的坐標即可,詳情請見v1.02版的代碼。
2.在v1.01版中,不支持在每個時間間隔內玩家多次的鍵盤輸入,即每個時間間隔內只接受玩家的第一次輸入,其實這樣很不人性化,通過raof01 的指點,我在v1.02版中添加了一個保存蛇的移動方向的隊列,存儲用戶的輸入,這樣玩家想按多快都可以了,他按的都會被處理,按照隊列的順序依次改變蛇的移動方向,不過每個時間間隔依然只能改變一次移動方向。
以下為1.02版本的可執行文件及源代碼的下載
MySnake_v1.02
08.10.18
what the hell is going on ??!!
我當時構成的是一個非對稱加密程序的萬次運算對比。。。
當時給我的答復是:編譯的時候要加載編譯信息庫等等,所以耗資源。。。
謝謝你的程序,下來看看。
建立一個隊列,將用戶按鍵事件所代表的方向enqueue;每個timer時間發生時,從該隊列dequeue一個元素,這樣每個方向都能處理到了。
你一點都不菜。
你的實現沒問題,我只是從空間效率上說一下。
恩 說的好 我去試試
謝謝你哈
以后可能要經常請教你咯
別的機器不需要.net freamwork 都可以運行嗎
“請問你是怎么把他生成EXE的”
當編譯完成后,.exe你可以去debug或release目錄下找到(哪個目錄取決于你的設置),
“別的機器不需要.net freamwork 都可以運行嗎”
必須要安裝.net freamwork 才可以運行。
謝謝
使用雙緩沖就不閃屏了,至于一閃屏蛇身就不見了一截,這個估計你重繪的時候邏輯有問題?不清楚。
根據蛇的移動規則,蛇將永遠無法與目標豆重合(比如蛇每次移動五個單位,也就是說蛇頭的坐標是五的倍數,而目標豆的坐標卻不是五的倍數,這樣怎么也吃不到豆)
為什么一次要移動5個單位?我是一次移動一個單位。