小時候玩的經典貪吃蛇遊戲我們印象仍然深刻,謀劃了幾天,小時候喜歡玩的遊戲,長大了終於有能力把他做出來(從來都沒有通關過,不知道自己寫的程式,是不是能通關了...),好了,閒話不多談,先來看一下效果吧!!
功能和小時候玩的貪吃蛇一樣,
1、選擇速度
slow
normal
fast
2、選擇是否有牆作為障礙物
onoff
如果構建乙個簡單的經典貪吃蛇遊戲呢?我們根據面板可以分解出如下結構:
因為其他面板比較簡單,我們重點來看一下遊戲面板
遊戲面板是核心,在遊戲面板中,我們來分解一下遊戲面板我們需要的因素:
首先我們需要乙個遊戲場景、snake、食物這些基礎設施
這裡使用canvas作為我們的整個遊戲的場景:
需要乙隻snake,後面初始化他的位置
var activedot = function (x, y)
需要食物作為物件(關於食物我們需要定義一些規則,如食物的產生)
var food = ;
規則是遊戲的核心
1、關於遊戲的規則
snake的方向控制:(使用鍵盤的上下左右鍵控制蛇的方向)
// changer dir
var changedir = function (key) else else else }}
}}
關於食物,如果食物被吃掉,我們就需要產生新的食物
// add food
var addfood = function () }}
var checkblock = function (x, y, _x, _y)
接下來是核心的函式,根據選擇的速度和是否有牆體作為障礙物的設定,讓蛇運動起來,並且實現
1、根據選擇slow、norma、fast決定蛇運動速度速度
2、如果蛇碰到自己==自殺,遊戲結束
3、有牆模式碰到牆體,遊戲結束
4、無牆模式蛇穿過牆體,從另一側出現
5、使蛇碰到食物就加入自身身體的一部分,執行增加食物函式
var mainloop = function ()
snake.pop();
snake.unshift()
// --wall
if (wall == 1)
} else
if (snake[i].x == canvas.width / 10)
if (snake[i].y < 0)
if (snake[i].y == canvas.height / 10) }}
// autophagy death
for (var i = 1; i < snake.length; i++)
}// eat food
if (checkblock(snake[0].x, snake[0].y, food.x, food.y)) ;
score += 1;
altscore(score);
addfood();
activedot(food.x, food.y);
}// --------------------
ctx.beginpath();
ctx.fillstyle = "#111";
ctx.fillrect(0, 0, canvas.width, canvas.height);
// --------------------
for (var i = 0; i < snake.length; i++)
// --------------------
activedot(food.x, food.y);
settimeout(mainloop, snake_speed);
}
ok以上展示出一些核心部分,構建出乙個舞台中乙隻小蛇的故事.
小時候爸媽手機裡有一款小遊戲叫貪吃蛇。就是一條小蛇,不停地在螢幕上游走,吃各個方向出現的蛋,越吃越長。只要蛇頭碰到螢幕四周,或者碰到自己的身子,小蛇就立即斃命。方寸的舞台間,亦有無限精彩;ps:到現在也沒有通關過..現在不知道能不能通關了...
一起來寫web server 04
從這個版本開始,後面的 差不多是越來越難啦.這個版本,我們主要是要實現乙個執行緒池版本的web server.這個版本的設計出自unp.思想非常簡單,那就是父執行緒首先構建n多子執行緒,這些子執行緒全部爭搶全域性的一把鎖,只有搶到了鎖的執行緒才能夠呼叫accept函式,否則都會阻塞掉.執行緒池版本的...
shell 清楚空格 一起來寫乙個Shell指令碼吧
說實話,寫指令碼這一塊屬實 業務不精 一來現如今的工具已經比較方便了,二來自己還是比較懶。正巧最近再嘗試公司的雲編譯功能,雖然雲編譯外掛程式自動做了大量的工作,但是最終也只是把產物 apk 拉到本地某檔案目錄下,因此還是需要我們主動要install。因此基於這個場景就像寫乙個指令碼可以一鍵的把拉下的...
一起來點讚
description 小a同學最近接了乙個專案,專案的一部分內容是設計朋友圈模組,他在寫點贊功能的時候遇到了一點麻煩。現在他的資料表裡面有如下內容資訊 zhangsan 1 lisi 2 zhangsan 2 lisi 3 wangwu 1 wangwu 2 wangwu 3 其中每一行的由兩部分...