日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手起刀落-一起来写经典的贪吃蛇游戏

發布時間:2024/1/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手起刀落-一起来写经典的贪吃蛇游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

回味

小時候玩的經典貪吃蛇游戲我們印象仍然深刻,謀劃了幾天,小時候喜歡玩的游戲,長大了終于有能力把他做出來(從來都沒有通關過,不知道自己寫的程序,是不是能通關了...),好了,閑話不多談,先來看一下效果吧!!

功能和小時候玩的貪吃蛇一樣,

1、選擇速度 slownormalfast 2、選擇是否有墻作為障礙物onoff

看完效果就先附上地址嘍:大山深處修煉的小龍蝦,歡迎fork.

結構分解

如果構建一個簡單的經典貪吃蛇游戲呢?我們根據面板可以分解出如下結構:

因為其他面板比較簡單,我們重點來看一下游戲面板

游戲面板

游戲面板是核心,在游戲面板中,我們來分解一下游戲面板我們需要的因素:

場景、snake、食物

首先我們需要一個游戲場景、snake、食物這些基礎設施
這里使用canvas作為我們的整個游戲的場景:

<canvas class="wrap" id="snake" width="400" height="400" tabindex="1"></canvas>

需要一只snake,后面初始化他的位置

var activeDot = function (x, y) {ctx.fillStyle = "#eee";ctx.fillRect(x * 10, y * 10, 10, 10); }

需要食物作為對象(關于食物我們需要定義一些規則,如食物的產生)

var food = {x: 0,y: 0 };

規則

規則是游戲的核心

1、關于游戲的規則

snake的方向控制:(使用鍵盤的上下左右鍵控制蛇的方向)

// changer dirvar changeDir = function (key) {if (key == 38 && snake_dir != 2) {snake_next_dir = 0;} else {if (key == 39 && snake_dir != 3) {snake_next_dir = 1;} else {if (key == 40 && snake_dir != 0) {snake_next_dir = 2;} else {if (key == 37 && snake_dir != 1) {snake_next_dir = 3;}}}}}

關于食物,如果食物被吃掉,我們就需要產生新的食物

// add foodvar addFood = function () {food.x = Math.floor(Math.random() * ((canvas.width / 10) - 1));food.y = Math.floor(Math.random() * ((canvas.height / 10) - 1));for (var i = 0; i < snake.length; i++) {// 如果食物被吃就增加食物if (checkBlock(food.x, food.y, snake[i].x, snake[i].y)) {addFood();}}}var checkBlock = function (x, y, _x, _y) {return (x == _x && y == _y) ? true : false;}

接下來是核心的函數,根據選擇的速度和是否有墻體作為障礙物的設置,讓蛇運動起來,并且實現

1、根據選擇slow、norma、fast決定蛇運動速度速度
2、如果蛇碰到自己==自殺,游戲結束
3、有墻模式碰到墻體,游戲結束
4、無墻模式蛇穿過墻體,從另一側出現
5、使蛇碰到食物就加入自身身體的一部分,執行增加食物函數

var mainLoop = function () {var _x = snake[0].x;var _y = snake[0].y;snake_dir = snake_next_dir;// 0 — up 1 — right 2 — down 3 — leftswitch (snake_dir) {case 0:_y--;break;case 1:_x++;break;case 2:_y++;break;case 3:_x--;break;}snake.pop();snake.unshift({x: _x,y: _y})// --wallif (wall == 1) {if (snake[0].x < 0 || snake[0].x == canvas.width / 10 || snake[0].y < 0 || snake[0].y == canvas.height / 10) {showScreen(3);return;}} else {// off 無墻for (var i = 0, x = snake.length; i < x; i++) {if (snake[i].x < 0) {snake[i].x = snake[i].x + (canvas.width / 10);}if (snake[i].x == canvas.width / 10) {snake[i].x = snake[i].x - (canvas.width / 10);}if (snake[i].y < 0) {snake[i].y = snake[i].y + (canvas.height / 10);}if (snake[i].y == canvas.height / 10) {snake[i].y = snake[i].y - (canvas.height / 10);}}}// Autophagy deathfor (var i = 1; i < snake.length; i++) {if (snake[0].x == snake[i].x && snake[0].y == snake[i].y) {showScreen(3);return;}}// Eat foodif (checkBlock(snake[0].x, snake[0].y, food.x, food.y)) {snake[snake.length] = {x: snake[0].x,y: snake[0].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(snake[i].x, snake[i].y);}// --------------------activeDot(food.x, food.y);setTimeout(mainLoop, snake_speed);}

ok以上展示出一些核心部分,構建出一個舞臺中一只小蛇的故事.

小時候爸媽手機里有一款小游戲叫貪吃蛇。就是一條小蛇,不停地在屏幕上游走,吃各個方向出現的蛋,越吃越長。只要蛇頭碰到屏幕四周,或者碰到自己的身子,小蛇就立即斃命。方寸的舞臺間,亦有無限精彩;PS:到現在也沒有通關過..現在不知道能不能通關了...

最后在附上次源碼,歡迎fork交流:okaychen... 因為自己測試用的服務器被占用,目前只有做的效果圖供大家參考嘍.
掘金地址:手起刀落-一起來寫經典的貪吃蛇游戲

轉載于:https://www.cnblogs.com/okaychen/p/7954207.html

總結

以上是生活随笔為你收集整理的手起刀落-一起来写经典的贪吃蛇游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩av无码一区二区三区不卡 | 综合网色| 中日韩精品视频在线观看 | av88av| 女性向小h片资源在线观看 日本天天操 | 亚洲高清中文字幕 | 欧美中日韩在线 | 日本中文字幕视频 | 国产婷婷 | 国语对白做受69按摩 | 爽爽视频在线观看 | 牛牛在线 | 亚洲一区二区三区免费在线观看 | 亚洲爆爽 | 欧美亚洲一区二区在线观看 | 国产综合精品在线 | 巨胸爆乳美女露双奶头挤奶 | 国产无遮挡免费观看视频网站 | 国产欧美日韩综合精品一区二区三区 | 四虎永久网址 | 国偷自拍第113页 | 国产理伦 | 国内视频一区 | 日韩欧| 呦女精品| 欧美黄色网| 精品国产三级 | 91天天综合 | 九九热这里有精品 | 国产大奶在线观看 | 色久婷婷| 日本美女动态 | 国产麻豆免费视频 | 蜜臀久久99精品久久久久久 | 婷婷激情五月 | 五月婷婷免费视频 | 久久精品一区二区 | 午夜免费av | 西西人体大胆4444ww张筱雨 | 无码毛片aaa在线 | 偷拍综合网 | 91九色成人 | 午夜污污 | 交专区videossex另类 | av中文在线| 欧洲综合视频 | 精品欧美视频 | 亚洲av人无码激艳猛片服务器 | 黄视频网站免费看 | 日韩电影在线观看一区二区 | 国产国语亲子伦亲子 | 国产9区 | 亚洲综合在线播放 | 重口变态虐黄网站 | 亚洲性生活网站 | 成年人国产精品 | 欧美成人片在线观看 | 波多野吉衣一区 | 日韩高清影视在线观看 | 艳妇乳肉豪妇荡乳av | 国产微拍精品一区 | 久久久久毛片 | 上海贵妇尝试黑人洋吊 | 欧美日韩午夜 | 国产白丝一区二区三区 | 夜夜躁狠狠躁日日躁 | 免费视频久久久 | 99中文字幕在线观看 | 在线黄色免费网站 | 不卡中文字幕在线观看 | 黄色小视频免费网站 | 在线观看h视频 | 欧美一区二区三区成人久久片 | 俺去俺来也在线www色官网 | 亚洲免费视频一区二区三区 | 中文字幕免费视频 | 懂色一区二区三区免费观看 | 欧美午夜精品久久久 | jizz高潮 | 日韩一级不卡 | 新婚若妻侵犯中文字幕 | 黄色小说在线视频 | 夜夜高潮夜夜爽 | 二区三区偷拍浴室洗澡视频 | 婷婷视频一区 | 手机看片福利在线 | 免费簧片在线观看 | 青娱乐最新地址 | 国产乱女淫av麻豆国产 | 国产精品五区 | 国产一区二区三区精品愉拍 | 国产又粗又硬 | 香蕉网在线观看 | 日本妇女毛茸茸 | 久久99免费视频 | av片在线免费观看 | 黄色一几片 | 久久国产精品亚洲 | 2017日日夜夜 |