摘要:貪吃蛇制作部分首先我們需要一個的頁面制作歷史最高分數當前分數簡單中級較難開始暫停部分緊接著我們需要一個的頁面我是用來做的上面的代碼是大盒子移動端的配置部分下面我們需要頁面來做效果首先我們要獲取
貪吃蛇制作
(https://wujian1994.github.io/...)
HTML部分 首先我們需要一個HTML的頁面制作css部分 緊接著我們需要一個css的頁面我是用sass來做的
歷史最高分數:0
當前分數:5
.container{ width: 3.2rem; height: 3.2rem; float: left; ul{ width: 3.16rem; height: 3.16rem; border: 2px solid #FF9797; li{ list-style: none; width: 0.158rem; height: 0.158rem; float: left; border-radius: 10px; } } }
.oper{ font-size: 0.1rem; padding: 0.2rem 0; width: 3.2rem; float: left; #level{ width: 0.5rem; height: 0.2rem; } input{ margin-top: 0.1rem; width: 0.5rem; border-radius: 6px; height: 0.2rem; color: #fff; background: green; border: none; outline: none; font-weight:bold; } input:active{ background:#93FF93; } }
@media screen and (min-width:320px){ html{ font-size: 100px; } } @media screen and (min-width:360px){ html{ font-size: 112px; } } @media screen and (min-width:375px){ html{ font-size: 117px; } } @media screen and (min-width:412px){ html{ font-size: 128px; } } @media screen and (min-width:414px){ html{ font-size: 129px; } } @media screen and (min-width:440px){ html{ font-size: 138px; } } @media screen and (min-width:480px){ html{ font-size: 150px; } } @media screen and (min-width:640px){ html{ font-size: 200px; }.container{margin: 0 auto;} } @media screen and (max-width:640px){ html{ font-size: 200px; } }js部分 下面我們需要js頁面來做效果
var oul = document.getElementById("oul"); var btnStart = document.getElementById("btnStart"); var btnsuspend = document.getElementById("btnsuspend"); var bjyy = document.getElementById("bjyy"); var siwang = document.getElementById("siwang"); var siwu = document.getElementById("siwu"); var zuigao = document.getElementById("zuigao"); var fenshu = document.getElementById("fenshu"); var level = document.getElementById("level");
//初始化格子 function init(){ var pianduan = document.createDocumentFragment(); for(var i = 0 ; i < 400 ; i++){ var oli = document.createElement("li"); pianduan.appendChild(oli); } oul.appendChild(pianduan); lis = oul.children; }
var snake= []; for(var i=0 ; i<5 ; i++){ snake.push({pos:i , color:randColor()}) } //隨機色 function randColor(){ return "rgb("+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+")"; } //初始化前五個格子改背景色 function initSnake(){ for(var i=0,l=snake.length ; i接著我們需要初始化一個食物
//食物的索引 var food = {pos:0,color:"yellow"}; //生成食物 function initFood(){ var index = Math.floor(Math.random()*400); while(isInSnake(index)){ index = Math.floor(Math.random()*400); } food = {pos:index,color:randColor()}; lis[food.pos].style.background=food.color; }判斷食物不能出現在蛇的位置
//判斷食物不能出現蛇的位置 function isInSnake(index){ for(var i=0,l=snake.length ; i當我們讓蛇運動的時候,每前進一步,最后面的一個將變成白色
var shewei = snake.slice(0,1)[0].pos; lis[shewei].style.background = "#fff"; for(var i=0 , l=snake.length ; i接著我們在吃掉食物之后,將吃掉的食物累加都蛇尾
//蛇吃食物的碰撞檢測 if(shetou == food.pos){ //將食物放到數組的前面 snake.unshift({pos:shewei,color:food.color}); //音樂特效 siwu.play(); //分數 fenshu.innerHTML = snake.length; //生成新的食物 initFood(); }下面我們做蛇與墻壁的碰撞
var direction = 39;//方向 37左鍵 38上鍵 39右鍵 40下鍵 //個數 var geshu = 20; //蛇跑 var shetou = snake.slice(-1)[0].pos; //關于墻的碰撞檢測 if((shetou+1)%geshu == 0 && direction == 39){ death() }else if(shetou>=(400-geshu) && direction == 40){ death() }else if((shetou < geshu) && direction == 38){ death() }else if(shetou%geshu == 0 && direction == 37){ death() }接著我們檢測是否碰撞到自身
//檢測是否吃到自己 for(var i=0 , l=snake.length ; i下面我們控制方向
if(direction == 40){//向下 snake[l-1].pos = snake[l-1].pos+geshu; }else if(direction == 37){//向左 snake[l-1].pos = snake[l-1].pos-1; }else if(direction == 39){//向右 snake[l-1].pos = snake[l-1].pos+1; }else if(direction == 38){//向上 snake[l-1].pos = snake[l-1].pos-geshu; } //給文檔加點擊下鍵事件 document.addEventListener("keydown" , function(e){ e=e || window.event; //獲取按下的是什么鍵 switch(e.keyCode){ //左鍵 case 37:{ if(direction == 39)return false; direction = e.keyCode; break; } //上鍵 case 38:{ if(direction == 40)return false; direction = e.keyCode; break; } //右鍵 case 39:{ if(direction == 37)return false; direction = e.keyCode; break; } //下鍵 case 40:{ if(direction == 38)return false; direction = e.keyCode; break; } } } , false)如果碰撞到墻壁和自身以后調用死亡函數
//死亡函數 function death(){ alert("你以頭破血流,游戲結束!"); //location.href=location.href; location.reload(); }接著我們來做開始游戲和暫停游戲
var timer = null; //開始游戲 btnStart.onclick = function(){ clearInterval(timer); timer = setInterval(yundong,shudu); //背景音樂開始 bjyy.play(); } //暫停游戲 btnsuspend.onclick = function(){ clearInterval(timer); }下面我們設置游戲難度
//蛇的熟讀 var shudu = 100; //設置難度 shudu = level.value;緊跟著我們需要做歷史最高分數和當前分數
//獲取蛇的長度 //分數 fenshu.innerHTML = snake.length; //歷史最高分 var score = localStorage.getItem("score")||0; //分數 fenshu.innerHTML = snake.length; var changdu = snake.length; //歷史最高分 var score = localStorage.getItem("score")||0; if(changdu > score){ localStorage.setItem("score" , changdu); }最后我們做手機效果,上下左右滑動
function hua(e){ //獲取按下的是什么鍵 switch(e){ //左鍵 case 37:{ if(direction == 39)return false; direction = e; break; } //上鍵 case 38:{ if(direction == 40)return false; direction = e; break; } //右鍵 case 39:{ if(direction == 37)return false; direction = e; break; } //下鍵 case 40:{ if(direction == 38)return false; direction = e; break; } } } //位置改變 //開啟滑動 hammertime.get("swipe").set({ direction: Hammer.DIRECTION_ALL }); hammertime .on("swipeleft", logEventType1) .on("swiperight", logEventType3) .on("swipeup",logEventType2) .on("swipedown", logEventType4); function logEventType1() { hua(37); } function logEventType2() { hua(38); } function logEventType3() { hua(39); } function logEventType4() { hua(40); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91427.html
摘要:利用制作簡單的貪吃蛇游戲首先,我們先來分析一下整個頁面的構成。代碼如下因為我們需要兼容移動端設備和端設備,所以我們需要在前加上媒體查詢樣式,并且在使用單位時,需要用到而不是。 利用js制作簡單的貪吃蛇游戲 showImg(https://segmentfault.com/img/remote/1460000010708169); 首先,我們先來分析一下整個頁面的構成。一看可知,游戲框內...
摘要:基本介紹一款移動端貪吃蛇大作戰游戲。主要的游戲邏輯有貪吃蛇移動碰撞檢測貪吃蛇碰撞碰撞墻壁和吃食物。貪吃蛇的身體如何跟隨頭部移動需要分為兩種情況,在單位時間內貪吃蛇移動一單位長度和貪吃蛇移動多單位長度。 基本介紹 一款移動端貪吃蛇大作戰游戲。(只支持移動端) 這是一個臨近 deadline 的課設項目,為了方便地使用TS,我直接使用angular-cli生成了TypeScript的項...
摘要:最近幫人做了個貪吃蛇的游戲交作業用,很簡單,界面如下開始界面游戲中界面是不是很簡單樸素。代碼在這里賦值,而不是在事件的循環中賦值,避免按鍵太快 最近幫人做了個貪吃蛇的游戲(交作業用),很簡單,界面如下:開始界面: showImg(https://segmentfault.com/img/bV49cP?w=638&h=478); 游戲中界面: showImg(https://segmen...
摘要:貪吃蛇類默識貪吃蛇速度,毫秒地圖軸分為多少單位地圖軸分為多少單位貪吃蛇運動速度貪吃蛇每節身體和食物的寬高地圖軸分為多少單位初始化貪吃蛇屬性蛇移動方向食物和食物的坐標游戲開始創建地圖初始化食物初始化貪吃蛇綁定鍵盤方向更改貪吃蛇方向移動貪吃蛇創 /** 貪吃蛇類 @author 默識 @param {int} speed 貪吃蛇速度,毫秒 @param {int} x 地圖x軸分...
閱讀 2311·2021-10-11 10:59
閱讀 2602·2021-10-11 10:58
閱讀 3304·2021-09-08 09:35
閱讀 3783·2021-09-02 15:21
閱讀 1455·2019-08-30 15:53
閱讀 2608·2019-08-29 14:16
閱讀 2068·2019-08-26 14:00
閱讀 2942·2019-08-26 13:52