這次的實現還是使用table實現,移動蛇頭還是純色,那塊想美化加四張新增url引用就行了,ok說說思路
最開始做的時候,
這次的實現還是使用table實現,移動蛇頭還是純色,那塊想美化加四張新增url引用就行了,ok說說思路,
1:初始化使用乙個二維陣列記錄組成snake的所有td下標,然後預設向右移動,我這個預設是從左上角開始的
2:snake的移動還是使用interval,這個最好實現,設定500毫秒重新整理一次就行了,
加分肉塊(暫時先這麼叫吧)直接使用乙個生成隨機數的方法,每次吃上就再次呼叫生成
3:snake的具體移動問題,規劃到這塊才發現這是最大的問題,開始想的是記錄組成蛇身的每個**td,然後在下次更新時候對所有下標做乙個對應的操作,腦子裡隨便想了一幅心電圖樣子的爬行軌跡圖,簡直太複雜了.換個思路看能不能有簡便的處理方式.
首先觀察一下snake的特點,由於我是使用**實現的,所以每次定時器重新整理,snake的頭部都會在對應方向增加乙個格仔,暫時先不用管方向問題,只要記得頭部會增加乙個格仔,於此對應的是,尾部會減少乙個格仔,這樣的話,看起來只要在interval裡面每次加減頭部就行了.然而還有乙個問題,如果遇到加分肉塊怎麼處理——遇到加分塊繼續直走就說明這個加分塊的下標就是snake所生成的頭部,這樣的話,尾部不做減少操作,頭部繼續增加,蛇身變長.此時剛才」吃」掉的加分塊已經變成組成蛇身陣列的一部分了,毫不影響後面的邏輯,
4:方向,使用keydown捕捉四個方向鍵,然後對snake的頭部生成下標做操作:
左:行不變,列減小,只適用於上下移動,向右移動,此按鍵不生效
上:行減小,列不變,只適用於左右自動,向下移動此按鍵不生效
右:行不變,列增加,…
下:行增加,列不變,…
5:"死亡"判定,暫設定為只能在**內移動,不能左出右進或者右出坐進,所以新生成的行和列必須小於行數(方形**),碰到蛇身也會死,這個直接使用生成頭部下標和和組成蛇身的陣列去遍歷對比,有相等的就over清除interval
好了所有都準備妥當搬磚!
貼兩張最終圖
初始化
14*14的看著挺有模有樣的,8 *8的太猥瑣了,ok貼碼
重置棋盤
實現貪吃蛇
貪吃蛇 1.它的移動我們採用頭部加乙個尾巴減乙個 2.我們將view的大小分成很多個格仔 3.蛇的移動是以乙個格仔為單位 created by administrator on 2016 10 11.public class gameview extends view public gameview...
c 實現貪吃蛇
include include include include include include include include include word square color 7 義方向 define key up 72 define key down 80 define key left 75...
canvas實現貪吃蛇
效果圖ps 這個只是思路,詳細可看 注釋 一 先把蛇畫出來 定義一下蛇的結構,用乙個陣列儲存一堆矩形,包含蛇頭 紅 和蛇身 灰 畫蛇 初始狀態 二 蛇能動 重點 蛇移動方式 自始至終都只有蛇頭在動 需要乙個儲存方向的變數 direction 根據方向進行移動,一次移動乙個格 根據按鍵改方向 三 隨機...