主頁 > 知識(shí)庫 > jsp網(wǎng)頁實(shí)現(xiàn)貪吃蛇小游戲

jsp網(wǎng)頁實(shí)現(xiàn)貪吃蛇小游戲

熱門標(biāo)簽:鎮(zhèn)江云外呼系統(tǒng)怎么樣 成都銷售外呼系統(tǒng)公司 電話機(jī)器人案例 土地證宗地圖標(biāo)注符號(hào) vue 地圖標(biāo)注拖拽 保定電銷機(jī)器人軟件 客服外呼系統(tǒng)呼叫中心 自動(dòng)外呼系統(tǒng)怎么防止封卡 電話機(jī)器人銷售公司嗎

本文實(shí)例為大家分享了jsp網(wǎng)頁實(shí)現(xiàn)貪吃蛇小游戲的具體代碼,供大家參考,具體內(nèi)容如下

一、主要思路

(1)第一步實(shí)現(xiàn)地圖。
(2)第二步實(shí)現(xiàn)蛇身。
(3)第三步實(shí)現(xiàn)食物。
(4)第四步實(shí)現(xiàn)移動(dòng)吃食物。
(5)第五步實(shí)現(xiàn)規(guī)則(撞墻游戲結(jié)束)。

二、代碼實(shí)現(xiàn)

!DOCTYPE html>
html lang="en">
head>
 meta charset="UTF-8">
 title>貪吃蛇/title>
 style>
  #map{
   width: 400px;
   height: 400px;
   border: 1px solid black;
  }
  /*地圖顏色*/
  .divMap{
   width: 18px;
   height: 18px;
   margin: 1px;
   background-color: yellow;
   float: left;
  }
  /*蛇身顏色*/
  .divSnake{
    width: 18px;
    height: 18px;
    margin: 1px;
    background-color: red;
    float: left;
   }
  /*食物顏色*/
  .divFood{
   width: 18px;
   height: 18px;
   margin: 1px;
   background-color: green;
   float: left;
  }
 /style>
 script>
  var mapX=20;
  var mapY=20; //地圖邊界,橫向和縱向的div小格
  var arrMap=new Array();//地圖數(shù)組
  var snackeX = [4,5,6,7],snackeY=[2,2,2,2];//蛇身初始化坐標(biāo)值
  var foodX,foodY; //創(chuàng)建食物坐標(biāo)
  var keyCode = 39;//蛇身移動(dòng)方向,默認(rèn)向右

  //創(chuàng)建地圖
  function createMap() {
   //獲取地圖外框div
   var map=document.getElementById("map");
   //地圖創(chuàng)建div小格,橫縱各20個(gè)
   for(y=0;ymapY;y++)
   {
    arrMap[y]= new Array();
    for(x=0;xmapX;x++)
    {
     //div小格
     var div =document.createElement("div");
     div.className="divMap";//初始化樣式
     arrMap[y][x]=div;//將div小格放入地圖數(shù)組中
     map.appendChild(div);//頁面繪制
    }
   }
  }

  //創(chuàng)建蛇身
  function createSnack(){
   //改變地圖中一串連續(xù)div底色
   for(i=0;isnackeX.length;i++)
   {
    arrMap[snackeY[i]][snackeX[i]].className ="divSnake";
   }
  }
  //清除蛇身
  function clearSnack() {
   for(i=0;isnackeX.length;i++)
   {
    arrMap[snackeY[i]][snackeX[i]].className="divMap";
   }
  }
  //創(chuàng)建食物
  function createFood()
  {
   //arrMap[foodY][foodX].className="divFood";
   var result;//判斷是否要重新生成食物
   do {
    result = false;//默認(rèn)不重疊
    //隨機(jī)食物坐標(biāo)
    foodX=parseInt(Math.random()*mapX);
    foodY=parseInt(Math.random()*mapY);

    //判斷食物不能出現(xiàn)在蛇身上
    for(i=0;i>snackeX.length;i++) {
     if(snackeX[1]==foodXsnackeY[1]==foodY)
     {
      result = true;//需要重新生成
      break;
     }
    }

   }while(result);
   arrMap[foodY][foodX].className="divFood";
  }
  //蛇身運(yùn)動(dòng)
  //1.清除蛇身
  //2.移動(dòng)蛇身坐標(biāo),增加蛇頭,清除蛇尾一格
  function snackMove() {
   //清除蛇身
   clearSnack();
   for (i = 0; i  snackeX.length - 1; i++) {
    snackeX[i] = snackeX[i + 1];
    snackeY[i] = snackeY[i + 1];
   }
   //每次移動(dòng),蛇頭增加一格, keyCode匹配鍵盤方向
   switch (keyCode) {
    case 37://向左
     snackeX[snackeX.length - 1]--;
     break;
    case 38://向上
     snackeY[snackeY.length - 1]--;
     break;
    case 39://向右
     snackeX[snackeX.length - 1]++;
     break;
    case 40://向下
     snackeY[snackeY.length - 1]++;
     break;

   }
   //吃食物
   if (snackeX[snackeX.length - 1] == foodX  snackeY[snackeY.length - 1] == foodY)
   {
    //吃到食物
    snackeX[snackeX.length]=snackeX[snackeX.length-1];
    snackeY[snackeY.length]=snackeY[snackeY.length-1];
    //重新排列蛇身
    for(i=snackeX.length-1;i>0;i--)
    {
     snackeX[i]=snackeX[i-1];
     snackeY[i]=snackeY[i-1];
    }
    createFood();//重新生成下一個(gè)食物
   }
   //超出游戲邊框
   if(snackeX[snackeX.length-1]0
    || snackeX[snackeX.length-1]>mapX-1
    || snackeY[snackeY.length-1]0
    || snackeY[snackeY.length-1]>mapY-1)
   {
    clearInterval(move);//停止移動(dòng)
    alert("游戲結(jié)束");
    return ;
   }

   createSnack();//重新創(chuàng)建蛇身
  }
  //鍵盤事件
  function keyDown(){
   var newKey = event.keyCode//鍵盤按鍵
   if(keyCode == 37  newKey == 39||
    keyCode == 39  newKey == 37||
    keyCode == 38  newKey == 40||
    keyCode == 40  newKey == 38
   ) {
    //禁止掉頭
    return ;
   } else if(newKey>=37newKey=40){
    //用戶按了某個(gè)方向鍵
    keyCode=newKey;
    }
    else{
     //其他按鍵
   }
  }
  //運(yùn)行
  window.onload =function () {
   createMap(); //創(chuàng)建地圖
   createSnack();//創(chuàng)建蛇身
   createFood();//創(chuàng)建食物

   move= setInterval("snackMove()",200)//蛇身移動(dòng)
   document.onkeydown = keyDown;//獲取方向鍵
  }
 /script>
/head>
body>
div id="map">/div>
/body>
/html>

三、實(shí)現(xiàn)效果

按方向鍵實(shí)現(xiàn)蛇身運(yùn)動(dòng)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • JavaScript實(shí)現(xiàn)簡(jiǎn)單貪吃蛇效果
  • 原生JS實(shí)現(xiàn)貪吃蛇小游戲
  • 原生javascript制作貪吃蛇小游戲的方法分析
  • js實(shí)現(xiàn)網(wǎng)頁版貪吃蛇游戲
  • JS寫的貪吃蛇游戲(個(gè)人練習(xí))
  • javascript貪吃蛇完整版(源碼)
  • js實(shí)現(xiàn)貪吃蛇小游戲(容易理解)
  • 20行js代碼實(shí)現(xiàn)的貪吃蛇小游戲
  • js貪吃蛇游戲?qū)崿F(xiàn)思路和源碼
  • 基于JavaScript實(shí)現(xiàn)貪吃蛇游戲

標(biāo)簽:成都 天津 麗江 內(nèi)江 公主嶺 重慶 懷化 臺(tái)灣

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《jsp網(wǎng)頁實(shí)現(xiàn)貪吃蛇小游戲》,本文關(guān)鍵詞  jsp,網(wǎng)頁,實(shí)現(xiàn),貪吃,蛇,小游戲,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《jsp網(wǎng)頁實(shí)現(xiàn)貪吃蛇小游戲》相關(guān)的同類信息!
  • 本頁收集關(guān)于jsp網(wǎng)頁實(shí)現(xiàn)貪吃蛇小游戲的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章