92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

JavaScript制作貪吃蛇小游戲

2022-1-25    前端達人

目錄

效果展示

原理分析

 Game.js文檔

Snake.js文檔

Food.js文檔

附上源代碼


寫了這么久的代碼

是否你和我一樣感到枯燥乏味了呢?

是否沒有前進的動力了呢?

別忘了當時的你躊躇滿志將前端Web一舉拿下的斗志??!


今天博主要給大家展現一個好玩的游戲

貪吃蛇小游戲!

嘿,你可別小瞧這東西!

制作過程是從無到有

等做完它

你就能從中體會到比玩游戲還快樂的居然是打代碼!


效果展示

原理分析

我們制作前為了代碼更清晰就分成幾個js文檔來編寫。

其中Game.js可以看作是一個媒介的作用;Snake.js是當蛇初始化時在最左邊向右走的狀態;

 貪吃蛇在游戲中的運動可以想象成這條蛇是在一張25*25的表格中運動:

 如圖所示

 Game.js文檔

所以我們在Game.js中添加表格節點

 
  1. function Game() {
  2. this.row = 25;
  3. this.col = 25;
  4. }
  5. Game.prototype.init = function() {
  6. this.dom = document.createElement('table');
  7. // 創建表格--父元素為document(頁面中創建表格)
  8. // var tr, td;
  9. for (var i = 0; i < this.row; i++) { //追加行
  10. var tr = document.createElement('tr');
  11. for (var j = 0; j < this.td; j++) { //追加列
  12. var td = document.createElement('col');
  13. td.appendChild(tr);
  14. }
  15. }
  16. };

Snake.js文檔






Snake.js中當蛇初始化時最左邊向右走的狀態

如圖所示

 
  1. function Snake() {
  2. // 蛇的初始化身體
  3. this.body = [
  4. { 'row': 3, 'col': 5 },
  5. { 'row': 3, 'col': 4 },
  6. { 'row': 3, 'col': 3 },
  7. { 'row': 3, 'col': 2 }
  8. ];
  9. }
  10. Snake.prototype.render = function() {
  11. // 蛇頭的渲染
  12. game.setColorHead(this.body[0].row, this.body[0].col.'pink');
  13. // 蛇身的渲染
  14. for (var i = 1; i < this.body.length; i++) {
  15. game.setColor(this.body[i].row, this.body[i].col, 'cyan')
  16. }
  17. }

蛇在運動的時候它的原理是“頭增尾刪”。

因為蛇的長度先是不變的,而我們改變的也是改變這個四個格子的顏色,走一格頭部那一格顏色變為粉色,尾巴那一格的顏色變為白色。


接下來讓蛇通過我們按鍵來進行運動:放在一個監聽事件內

 
  1. // 設置鍵盤的事件監聽
  2. Game.prototype.bindEvent = function() {
  3. var self = this;
  4. document.addEventListener('keydown', function(e) {
  5. // 用ASCII碼值判斷鍵盤方向
  6. switch (e.keyCode) {
  7. case 37: //左
  8. if (self.snake.direction == 'R') return; // 先進行判斷,如果當前的方向是向右移動,此時我們不能按左鍵
  9. self.snake.changeDirection('L');
  10. self.d = 'L';
  11. break;
  12. case 38: //上
  13. if (self.snake.direction == 'D') return; // 先進行判斷,如果當前的方向是向下移動,此時我們不能按上鍵
  14. self.snake.changeDirection('U');
  15. self.d = 'U';
  16. break;
  17. case 39: //右
  18. if (self.snake.direction == 'L') return; // 先進行判斷,如果當前的方向是向左移動,此時我們不能按右鍵
  19. self.snake.changeDirection('R');
  20. self.d = 'R';
  21. break;
  22. case 40: //下
  23. if (self.snake.direction == 'U') return; // 先進行判斷,如果當前的方向是向上移動,此時我們不能按下鍵
  24. self.snake.changeDirection('D');
  25. self.d = 'D';
  26. break;
  27. }
  28. })
  29. }

接下來我們判定蛇是否撞到墻而結束

 
  1. // 死亡的判斷,超出了表格邊緣的部分
  2. if (this.body[0].col > game.col - 1 || this.body[0].col < 0 || this.body[0].row > game.row - 1 || this.body[0].row < 0) {
  3. alert('撞到墻了哦,一共吃掉了' + game.score + '顆草莓');
  4. this.body.shift();
  5. clearInterval(game.timer);
  6. location.reload();
  7. }


接下來我們判定蛇是否撞到自己而結束

 
  1. // 自己撞到自己的時候會判定死亡
  2. for (var i = 1; i < this.body.length; i++) {
  3. // 如果當前蛇的頭部和身體的某一個部位的 row 和 col 完全重合的時候
  4. if (this.body[0].row == this.body[i].row && this.body[0].col == this.body[i].col) {
  5. alert('撞到自己了,吃掉了' + game.score + '顆草莓');
  6. this.body.shift();
  7. clearInterval(game.timer);
  8. location.reload();
  9. }
  10. }

Food.js文檔


食物food類,用來產生食物

 
  1. function Food(gameSnake) {
  2. // 食物的位置
  3. this.row = parseInt(Math.random() * gameSnake.row)
  4. this.col = parseInt(Math.random() * gameSnake.col)
  5. }
  6. Food.prototype.render = function() {
  7. game.setHTML(this.row, this.col);
  8. }

食物隨機生成在單元格中,利用do...while來實現

 
  1. function Food(gameSnake) {
  2. var self = this;
  3. // 下面的 do-while 循環語句作用是先創建一個 row 和 col
  4. 然后判斷這個 row 和 col 是否在蛇的身上
  5. //do...while來創建食物
  6. do {
  7. // 食物的位置
  8. this.row = parseInt(Math.random() * gameSnake.row)
  9. this.col = parseInt(Math.random() * gameSnake.col)
  10. } while ((function() {
  11. // 遍歷蛇的 row col 然后和 food 新隨機出來的 row col 進行判斷,是否重合
  12. for (var i = 0; i < gameSnake.snake.body.length; i++) {
  13. if (self.row == gameSnake.snake.body[i].row && self.col == gameSnake.snake.body[i].col) {
  14. return true;
  15. }
  16. }
  17. return false;
  18. })());
  19. }

文章來源:csdn   作者:

分享此文一切功德,皆悉回向給文章原作者及眾讀者.

免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務



日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
99精品视频在线观看播放| 亚洲一区二区中文字幕| 国产喷白浆一区二区三区| 国产成人精品午夜视频免费| 伊人精品一区| 91精品国产高清久久久久久久久| 97se视频在线观看| 五月激情丁香一区二区三区| 91国产视频在线播放| 91xxx在线观看| 一区二区三区无毛| 日韩欧美中文字幕在线观看| 久久网福利资源网站| 久久久久久久久久久人体| 亚洲欧洲av色图| 91麻豆精品国产91久久久资源速度| 国产日韩欧美| 日韩欧美一区电影| 不卡av电影院| 久久精品免视看国产成人| 国产精品狼人色视频一区| av毛片午夜不卡高**水| 久久精品免费电影| 欧美精品电影| 亚洲欧美日韩成人高清在线一区| 久久国产精品久久国产精品| 97精品欧美一区二区三区| melody高清在线观看| 亚洲国产精品免费| 综合欧美精品| 成人a免费视频| 日韩精品毛片| 国产日韩欧美a| 日韩一区二区精品在线观看| 欧美日韩综合视频网址| 日韩精品不卡一区二区| 亚洲国产一成人久久精品| 久久色在线播放| 天天射综合网视频| 亚洲精选在线观看| 亚洲国产中文在线二区三区免| 国内成+人亚洲+欧美+综合在线| av网址在线播放| 91超碰在线播放| 欧美色播在线播放| 国产精品视频网站| 中文字幕中文字幕在线中高清免费版| 国产自产v一区二区三区c| 媚黑女一区二区| 国产精品久久久久久久久粉嫩av| 久久99久国产精品黄毛片入口| 日韩精品福利一区二区三区| 精品免费二区三区三区高中清不卡| 狠狠色丁香久久婷婷综合丁香| 国产成人精品日本亚洲11| 亚洲国产视频二区| 成人午夜电影小说| 欧美日韩一区中文字幕| 美女视频黄 久久| 国产精品电影| 九色porny丨首页在线| 亚洲欧美日本韩国| 日韩视频精品在线观看| 久久国产精品久久国产精品| 亚洲乱码免费伦视频| 日韩亚洲精品电影| 亚洲欧洲日本国产| 亚洲丝袜自拍清纯另类| 亚洲精品乱码久久久久久日本蜜臀| 亚洲免费视频一区| 欧美极品美女视频| 久久精品男人的天堂| 亚洲婷婷免费| 人人鲁人人莫人人爱精品| 91精品国产品国语在线不卡| 中文字幕亚洲综合久久五月天色无吗''| 美女三级99| 欧美一级爽aaaaa大片| 国产精品欧美一区二区三区不卡| 性欧美videohd高精| 欧美一区二区三区免费大片| 成人综合婷婷国产精品久久| 欧美极品少妇xxxxⅹ高跟鞋| 欧美色另类天堂2015| 久久中文欧美| 日本精品免费观看| 亚洲精品videossex少妇| 国产精品天干天干在线综合| 国产毛片久久| 欧美一乱一性一交一视频| 欧美三级一区| 国产丝袜一区二区三区| 夜夜精品视频一区二区| 影音先锋在线视频| а√资源新版在线天堂| 国产福利在线播放麻豆| 日韩在线观看网址| 一级日本不卡的影视| 在线成人av影院| 粉嫩av四季av绯色av第一区| 亚洲福利影视| h网站在线免费观看| 亚洲精品亚洲人成人网在线播放| 欧美中文字幕在线播放| 奇米狠狠一区二区三区| 狠狠色香婷婷久久亚洲精品| 久久久高清一区二区三区| 一级毛片视频在线观看| 国产一区二区精品久久99| 久草免费在线观看| 国产精品第二页| 欧美蜜桃一区二区三区| a美女胸又www黄视频久久| 一本色道综合亚洲| 色乱码一区二区三区88| 国产99久久久国产精品免费看| 欧美精品激情blacked18| 日本在线观看高清完整版| 免费电影一区二区三区| 国产精品自产拍在线观看中文| 欧美一级二级三级区| 亚洲黄色一区| 一本一本久久a久久精品综合麻豆| 波多野结衣一区二区三区免费视频| 欧美大胆一级视频| 欧美激情一级二级| 欧美孕妇孕交黑巨大网站| 四虎国产精品免费观看| 三级久久三级久久| 亚洲欧美日韩国产成人综合一二三区| 精品国产一区二区三区不卡| av电影免费在线看| 乱一区二区三区在线播放| 欧美激情一区二区三区久久久| 国产精品丝袜高跟| 中国日韩欧美久久久久久久久| 久久久国产精品一区| 国产精品麻豆成人av电影艾秋| 678五月天丁香亚洲综合网| 免费毛片一区二区三区久久久| 欧美三级电影一区二区三区| 久久成人麻豆午夜电影| 欧美福利一区| 欧洲一区二区三区免费视频| 精品国产一级| 91精品国产成人www| 国产麻豆精品| 色综合久久综合中文综合网| 噜噜噜噜噜久久久久久91| 51蜜桃传媒精品一区二区| 91精品国产色综合久久不卡蜜臀| 日韩国产精品大片| 欧美激情极品| 国产福利一区二区三区在线观看| 欧美高清视频一区二区三区在线观看| 久久免费看少妇高潮| 一区二区三区中文字幕电影| 国产97人人超碰caoprom| 亚洲深夜福利视频| 超碰在线观看免费版| 玖玖玖免费嫩草在线影院一区| 免费成人毛片| 国产成人a亚洲精品| 久久365资源|