資源描述:
《貪食蛇游戲?qū)崿F(xiàn)思路》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、貪食蛇游戲?qū)崿F(xiàn)思路1?游戲狀態(tài)參數(shù)定義vargameLoop;var型旦I辿]]I;//療戲區(qū)域敗急誓vargameHeight;//滋我區(qū)域勿髙度varsuagdafc;//保存蛇的數(shù)組varfood={nxn::-?。?/食物口方塊的大小varpx;varleft=37;varup=38;varright=39;vardown=40;//游戲的控制蛇的方向varleft=37;varup=38;varright=39;//蛇頭的方商vardown=40;vard;//游戲開關(guān)varfalgD
2、;2?編寫初始化方法,初始化游戲里面的必要數(shù)據(jù)init();//游戲初始化數(shù)據(jù)的方法functioninit()gameWidth
3、=cl.width;gameHeight=c2?height;snakeArry^=^
4、[];px=20;falgD=false;d=right;initSnakeArry(3);//初始化蛇的數(shù)據(jù)initFood();piay();2.1編寫initSnakeArry函數(shù),初始化蛇數(shù)組'口初始化蛇functioninitSnakeArry(Length){for(
5、vari=length;i>0;i??){snakeArry.push({"xn:i,"y":0});}}■??2.2編寫初始化食物的方法//初始化食物functioninitFood(){varfl=false;do{food["x"]=Math.floor(
6、gameWidth
7、/px*Math.random());food["y"]=Math.floor(gameHeight/px*Math.random());for(vari=0;i8、ood?x==snakeArry[i]?x&&food?y==snakeArry[i]?y){f1=true;}}}while(fl);}3?編寫開始游戲的方法,調(diào)用打印蛇和食物的方法,接下來編寫蛇移動的方法。functionplay()//很重要的代碼,需要給游戲區(qū)域繪制snakeArry[i]?y*pxJpx-ctx.fillstyle='white';ctx.fillRect(0^0,gameWidthgameHeight);ctx.strokeStyle=1black1;ctx.stro
9、keRect(0,0,gameWidth,gameHeight);paintSnake();//打印蛇到區(qū)域游戲paintCell(food.x,food?y);//為r印食物到游戲區(qū)域moveSnake();//移動吃}functionpaintCell(x’y){ctx.fillStyle='red';ctx.fillRect(x*px,y*px,px-1,px-1);}functionpaintSnake(){ctx.fillstyle='blue';for(variinsnakeArry
10、){ctx.fillRect(snakeArry[i].x*px,px-1);}}使用定時器才能使蛇動起來gameLoop=setInterval(play^100);.Z/十宀一丄r4厶—A-..亠3.1編寫蛇移動的方法functionmoveSnake(){falgD=false;//得到蛇頭的位置varhead={"x":snakeAmy[0]:snakeAnry[0]?y};if(d==left)head?x??;elseif(d==right)head.x++;elseif(d==up
11、)head.;elseif(d==down)headpop();}if(head.x==?2
12、
13、head.x=gameWidth/px
14、
15、head.y==-11
16、head?y==gameHeight/px){if(confirm('游戲結(jié)束了,是否繼續(xù)’)){return;}else{clearlnterval(gameLoop);return;}}snakeAr
17、ry.unshift(head);falgD=true;}4.1鍵盤按下去觸發(fā)事件//鍵盤事件functionchangeD(e){if(falgD){if(e.keyCode==left&&d!=right)d=left;elseif(e.keyCode==right&&d!=left)d=right;elseif(e.keyCode==up&&d!=down)d=up;elseif(e