最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript實現貪吃蛇游戲(娛樂版)

 更新時間:2020年08月17日 08:32:37   作者:54渣渣shuo  
這篇文章主要為大家詳細介紹了javascript實現貪吃蛇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了javascript實現貪吃蛇游戲的具體代碼,供大家參考,具體內容如下

一共三個對象map,snake,food,代表的含義如名字。snake和food其實就是數組,表示位置,map來畫圖、判斷得分、失敗等等,直接上代碼,可直接運行。

<!doctype html>
<html>

<body>
 <canvas id="map" width="400" height="400" style="background:Black"></canvas>
 <h1>Score:</h1>
 <h2 id="score">0</h2>

 <script>
 //地圖
 function Map() {
 this.field = document.getElementById("map").getContext("2d"); //畫布
 this.draw = function (something) { //畫蛇或者食物
 this.field.fillStyle = something.color;
 var position;
 for (position in something.positions) {
 this.field.fillRect(something.positions[position][0], something.positions[position][1], 20, 20);
 }
 }
 this.clear = function () { //清除畫布
 this.field.clearRect(0, 0, 400, 400);
 }
 this.judge = function (snake, food) { //判斷狀態(tài)(得分、失敗、普通)
 var snakeHeadX = snake.positions[0][0];
 var snakeHeadY = snake.positions[0][1];
 var foodX = food.positions[0][0];
 var foodY = food.positions[0][1];
 if ((snakeHeadX == foodX) && (snakeHeadY == foodY)) { //吃食物
 snake.positions.unshift([foodX, foodY]);
 food.positions[0] = [Math.floor(Math.random() * 20) * 20, Math.floor(Math.random() * 20) * 20];
 this.clear();
 this.draw(food);
 this.draw(snake);
 var score = document.getElementById('score');
 score.innerHTML = (Number(score.innerHTML)+1).toString();
 }
 else if ((snakeHeadX+20 > 400) || (snakeHeadX < 0) || (snakeHeadY+20 > 400) || (snakeHeadY < 0)) {
 alert('GIME OVER!'); //撞墻
 }
 else {
 this.clear();
 this.draw(food);
 this.draw(snake);
 }
 }
 }
 
 //蛇
 function Snake() {
 this.positions = [[40 + 20, 40], [40, 40], [40 - 20, 40]]; //蛇的軀干
 this.color = "Yellow";
 this.direction = [1,0]; //蛇頭方向
 this.move = function () { //移動
 this.positions.unshift([this.positions[0][0] + this.direction[0] * 20, this.positions[0][1] + this.direction[1] * 20]);
 this.positions.pop();
 }
 this.obeyOrders = function (snake = this) { //等待鍵盤上下左右
 document.onkeydown = function (event) {
 var e = event || window.event || arguments.callee.caller.arguments[0];
 var order = e.keyCode;
 console.log(snake.direction);
 switch (order) {
 case 37:
 snake.direction[0] = -1;
 snake.direction[1] = 0;
 break;
 case 38:
 snake.direction[1] = -1;
 snake.direction[0] = 0;
 break;
 case 39:
 snake.direction[0] = 1;
 snake.direction[1] = 0;
 break;
 case 40:
 snake.direction[1] = 1;
 snake.direction[0] = 0;
 break;
 default:
 ;
 }
 };
 }
 }

 //食物
 function Food() {
 this.positions = [[Math.floor(Math.random() * 20) * 20, Math.floor(Math.random() * 20) * 20]]; //隨機位置
 this.color = 'Red';
 }


 //開始執(zhí)行
 (function () {

 var map = new Map();
 var snake = new Snake();
 var food = new Food();
 map.draw(snake);
 map.draw(food);
 snake.obeyOrders();
 var t=0;
 var interval = setInterval(function () { //每0.5s走一步
 map.judge(snake, food);
 snake.move();
 }, 500);
 })()
 </script>


</body>

</html>

效果如圖

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • chrome瀏覽器不支持onmouseleave事件的解決技巧

    chrome瀏覽器不支持onmouseleave事件的解決技巧

    發(fā)現給div加的 onmouseleave事件在chrome 中不起效果,下面與大家分享下具體的解決方法,不會的朋友可以了解下哈,希望對大家有所幫助
    2013-05-05
  • 深入理解js 中async 函數的含義和用法

    深入理解js 中async 函數的含義和用法

    async 函數就是隧道盡頭的亮光,很多人認為它是異步操作的終極解決方案。接下來通過本文給大家分享js 中async 函數的含義和用法,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-05-05
  • 微信小程序實現tab左右切換效果

    微信小程序實現tab左右切換效果

    這篇文章主要為大家詳細介紹了微信小程序實現tab左右切換效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • JS event使用方法詳解

    JS event使用方法詳解

    event代表事件的狀態(tài),例如觸發(fā)event對象的元素、鼠標的位置及狀態(tài)、按下的鍵等等。 event對象只在事件發(fā)生的過程中才有效。
    2008-04-04
  • 微信小程序中吸底按鈕適配iPhone X方案

    微信小程序中吸底按鈕適配iPhone X方案

    這篇文章主要介紹了微信小程序中吸底按鈕適配iPhone X方案,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • javascript正則表達式使用replace()替換手機號的方法

    javascript正則表達式使用replace()替換手機號的方法

    這篇文章主要介紹了javascript正則表達式使用replace()替換手機號的方法,可實現把手機號第4位到第7位替換成****的功能,是非常實用的技巧,需要的朋友可以參考下
    2015-01-01
  • JavaScript提取PDF和Word文檔內圖片

    JavaScript提取PDF和Word文檔內圖片

    這篇文章主要為大家詳細介紹了如何利用JavaScript實現提取PDF和Word文檔內的圖片,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下
    2025-03-03
  • JS字符串false轉boolean的方法(推薦)

    JS字符串false轉boolean的方法(推薦)

    下面小編就為大家?guī)硪黄狫S字符串false轉boolean的方法(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 選擇與取消選擇不錯的應用 js

    選擇與取消選擇不錯的應用 js

    選擇與取消選擇不錯的應用 js...
    2006-12-12
  • JS+CSS實現下拉刷新/上拉加載插件

    JS+CSS實現下拉刷新/上拉加載插件

    這篇文章主要介紹了JS+CSS實現下拉刷新/上拉加載插件,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03

最新評論

安阳市| 浦北县| 元朗区| 长丰县| 泰和县| 温州市| 上栗县| 外汇| 九龙城区| 河南省| 田阳县| 壶关县| 白河县| 略阳县| 武城县| 凤庆县| 陆川县| 抚松县| 格尔木市| 丰都县| 福清市| 曲松县| 平邑县| 辽中县| 汽车| 福建省| 米易县| 筠连县| 溧水县| 利川市| 房山区| 芮城县| 阿尔山市| 扶余县| 延安市| 旬邑县| 雅安市| 沙田区| 合川市| 南岸区| 东方市|