This article shares the specific code for JavaScript to implement the webpage snake game for your reference. The specific content is as follows <!DOCTYPE html> <html> <head><title>Snake</title> </head> <body> <canvas id="canvas" width="400" height="400"></canvas> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script> <script> var canv = document.getElementById("canvas"); var ctx = canv.getContext("2d"); var score=0; //Define a block constructor var Block = function (col, row, size) { this.col=col; this.row=row; this.size=size; }; //Define the prototype method draw of the Block function; Block.prototype.draw = function() { ctx.fillRect(this.col*this.size,this.row*this.size,this.size,this.size) } //Define object snake var snake = { body:[ new Block(20,20,10), new Block(20,21,10), new Block(20,22,10) ], direction:"right", }; //Define the function of drawing snake snake.draw=function() { for(var i=0;i<this.body.length;i++) { this.body[i].draw(); } }; snake.move = function() { var head = this.body[0]; if(snake.direction=="right") { var newhead = new Block (head.col + 1, head.row, head.size) } if(snake.direction == "left") { var newhead = new Block(head.col-1,head.row,head.size); } if(snake.direction=="up") { var newhead = new Block (head.col, head.row-1, head.size) } if(snake.direction=="down") { var newhead = new Block (head.col, head.row+1, head.size) } if(newhead.col<0 || newhead.col>39 ) { clearInterval(intervalId); gameover(); } if(newhead.row<0 || newhead.row>39 ) { clearInterval(intervalId); gameover(); } for(var i=0;i<this.body.length;i++) { if(this.body[i].col==newhead.col &&this.body[i].row==newhead.row) { clearInterval(intervalId); gameover(); } } this.body.unshift(newhead); if(newhead.col==apple.posX &&newhead.row==apple.posY) { score=score+100; while(true) { var checkApple =false; apple.posX=Math.floor(Math.random()*40); apple.posY=Math.floor(Math.random()*40); for(var i=0; i<this.body.length;i++) { if(this.body[i].col==apple.posX &&this.body[i].row==apple.posY) checkApple=true; } if(!checkApple) break; } } else{ this.body.pop(); } }; //Create an apple object var apple={ posX:Math.floor(Math.random()*40), posY:Math.floor(Math.random()*40), sizeR:5 } //Draw apple function apple.draw=function() { ctx.fillStyle="Green"; ctx.beginPath(); ctx.arc(this.posX*10+5,this.posY*10+5,5,0,Math.PI*2,false); ctx.fill(); ctx.fillStyle="Black"; }; //End var gameover = function() { ctx.font="60px Comic Sans MS"; ctx.textAlign="center"; ctx.textBaseline="middle"; ctx.fillText("GAME OVER!",200,200) }; // Timing function var intervalId = setInterval (function () { ctx.clearRect(0,0,400,400); ctx.font="20px Arial"; ctx.fillText("Score:"+score,5,15); snake.draw(); snake.move(); apple.draw(); ctx.strokeRect(0,0,400,400); },200); //Snake key control $("body").keydown(function(event) { console.log(event.keyCode); if(event.keyCode==37 &&snake.direction!="right") { snake.direction="left"; } if(event.keyCode==38 &&snake.direction!="down") { snake.direction="up"; } if(event.keyCode==39 &&snake.direction!="left") { snake.direction="right"; } if(event.keyCode==40 &&snake.direction!="up") { snake.direction="down"; } } ); </script> </body> </html> The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: Detailed explanation of MySQL 30 military rules
>>: Detailed tutorial on installing Ubuntu 19.10 on Raspberry Pi 4
Use the --all-database parameter when performing ...
First of all, we need to make it clear why we use...
Table of contents Preface 1. What is phantom read...
Data display has always been a demand that all wa...
Build the project Execute the command line in the...
There are some differences between filter and bac...
Sometimes we need to remotely run programs on the...
CSS3 Patterns Gallery This CSS3 pattern library s...
Table of contents Object parameters using destruc...
p>Manually start in "Services" and i...
XML/HTML CodeCopy content to clipboard < butto...
question: When developing the Alice management sy...
The semantics, writing style, and best practices ...
Table of contents Preface Direct filling method f...
Perfect solution to VMware black screen after Mac...