parent
88f03118ce
commit
5a10cd6f5e
@ -0,0 +1,211 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas style="margin-top:30px;display: block ;padding-left: 0; padding-right: 0; margin-left: auto; margin-right: auto;" id="myCanvas" width="520" height="520">
|
||||||
|
|
||||||
|
</canvas>
|
||||||
|
<br>
|
||||||
|
<marquee>Ankita🎖️Mandal</marquee>
|
||||||
|
<marquee><i>Snake game live demo🔥 Play and Fun</i></marquee>
|
||||||
|
<p>Share your game screenshot on Linkedin after Play with hashtags <b>#LearnInspireGrow #SnakeGame. Also add your name in Marquee.</b></p>
|
||||||
|
<script>
|
||||||
|
// Made with loves !
|
||||||
|
var body = [];
|
||||||
|
var state = 0;// 0->right, 1->down, 2- left, 3 is up;
|
||||||
|
|
||||||
|
//step 1
|
||||||
|
var canvas = document.getElementById("myCanvas");
|
||||||
|
var ctx = canvas.getContext("2d");
|
||||||
|
ctx.fillStyle = "#A7D948";
|
||||||
|
ctx.fillRect(0, 0, 520, 520);
|
||||||
|
|
||||||
|
//step 2
|
||||||
|
function handleKey(e) {
|
||||||
|
e = e || window.event;
|
||||||
|
var play = false;
|
||||||
|
|
||||||
|
if (e.keyCode == '38'&&state!=1&&state!=3) {
|
||||||
|
// up arrow
|
||||||
|
state = 3;
|
||||||
|
play = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (e.keyCode == '40'&&state!=1&&state!=3) {
|
||||||
|
// down arrow
|
||||||
|
state = 1;
|
||||||
|
play = true;
|
||||||
|
}
|
||||||
|
else if (e.keyCode == '37'&&state!=0&&state!=2) {
|
||||||
|
// left arrow
|
||||||
|
state = 2;
|
||||||
|
play = true;
|
||||||
|
}
|
||||||
|
else if (e.keyCode == '39'&&state!=0&&state!=2) {
|
||||||
|
// right arrow
|
||||||
|
state = 0;
|
||||||
|
play = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(play)
|
||||||
|
playAudio();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
document.onkeydown = handleKey;
|
||||||
|
|
||||||
|
function playAudio(){
|
||||||
|
var audio = new Audio('https://www.soundjay.com/switch/switch-1.wav');
|
||||||
|
audio.play();
|
||||||
|
}
|
||||||
|
|
||||||
|
function playConsume(){
|
||||||
|
var audio = new Audio('https://www.soundjay.com/button/button-3.wav');
|
||||||
|
audio.play();
|
||||||
|
}
|
||||||
|
|
||||||
|
var N = 20;
|
||||||
|
var size = 520;
|
||||||
|
var cellSize = size/N;
|
||||||
|
var matrix = new Array(N);
|
||||||
|
for (var i = 0; i < matrix.length; i++) {
|
||||||
|
matrix[i] = new Array(N);
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawCell(i,j){
|
||||||
|
if( (i+j)%2==0 ) {
|
||||||
|
ctx.fillStyle = ("#8ECC39");
|
||||||
|
}else{
|
||||||
|
ctx.fillStyle = "#A7D948";
|
||||||
|
}
|
||||||
|
ctx.fillRect(cellSize*i, cellSize*j, cellSize, cellSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < matrix.length; i++){
|
||||||
|
for (var j = 0; j < matrix[i].length; j++){
|
||||||
|
matrix[i][j]=0;
|
||||||
|
drawCell(i,j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body.push([1+ N/2,N/2]);
|
||||||
|
body.push([N/2,N/2]);
|
||||||
|
body.push([-1+N/2,N/2]);
|
||||||
|
|
||||||
|
var eyeImage = new Image();
|
||||||
|
eyeImage.src = "https://i.imgur.com/6jLbz7l.png";
|
||||||
|
|
||||||
|
var foodImage = new Image();
|
||||||
|
foodImage.src = "https://i.imgur.com/88saChB.png";
|
||||||
|
|
||||||
|
var counter = 0;
|
||||||
|
var foodX = 0;
|
||||||
|
var foodY = 0;
|
||||||
|
|
||||||
|
function generateFood(){
|
||||||
|
|
||||||
|
var success = false;
|
||||||
|
while(!success){
|
||||||
|
foodX = parseInt(Math.random()*N);
|
||||||
|
foodY = parseInt(Math.random()*N);
|
||||||
|
|
||||||
|
success = true;
|
||||||
|
for(var i=0;i<body.length;i++){
|
||||||
|
if(body[i][0]==foodX && body[i][1]==foodY){
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
generateFood();
|
||||||
|
|
||||||
|
function update(){
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
|
||||||
|
var increase = false;
|
||||||
|
if(body[0][0]==foodX&&body[0][1]==foodY){
|
||||||
|
generateFood();
|
||||||
|
playConsume();
|
||||||
|
increase = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < matrix.length; i++){
|
||||||
|
for (var j = 0; j < matrix[i].length; j++){
|
||||||
|
drawCell(i,j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.drawImage(foodImage,
|
||||||
|
foodX*cellSize, foodY*cellSize,
|
||||||
|
cellSize, cellSize);
|
||||||
|
|
||||||
|
for(var i=0;i<body.length;i++){
|
||||||
|
ctx.fillStyle = ("#527DF9");
|
||||||
|
ctx.fillRect(cellSize*body[i][0], cellSize*body[i][1], cellSize, cellSize);
|
||||||
|
|
||||||
|
if(i==0){
|
||||||
|
var marginX = cellSize/3;
|
||||||
|
var marginY = cellSize/3;
|
||||||
|
|
||||||
|
if(state==0||state==2){
|
||||||
|
marginX=0;
|
||||||
|
}else if (state==1||state==3){
|
||||||
|
marginY=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.drawImage(eyeImage,
|
||||||
|
0,28*(counter%9),
|
||||||
|
cellSize,cellSize,
|
||||||
|
cellSize*body[i][0]+marginX,
|
||||||
|
cellSize*body[i][1]+marginY,
|
||||||
|
cellSize, cellSize);
|
||||||
|
ctx.drawImage(eyeImage,
|
||||||
|
0,28*(counter%9),
|
||||||
|
cellSize,cellSize,
|
||||||
|
cellSize*body[i][0]-marginX,
|
||||||
|
cellSize*body[i][1]-marginY,
|
||||||
|
cellSize, cellSize);
|
||||||
|
/*
|
||||||
|
ctx.drawImage(tongueImage,
|
||||||
|
0,(504/21)*(counter%21),
|
||||||
|
48,
|
||||||
|
504/21,
|
||||||
|
cellSize*body[i][0]+cellSize,
|
||||||
|
cellSize*body[i][1]-marginY,
|
||||||
|
cellSize, cellSize);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0->right, 1->down, 2- left, 3 is up;
|
||||||
|
var x = 0;
|
||||||
|
var y = 0;
|
||||||
|
if(state==0){
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
else if(state==1){
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
else if(state==2){
|
||||||
|
x--;
|
||||||
|
}
|
||||||
|
else if(state==3){
|
||||||
|
y--;
|
||||||
|
}
|
||||||
|
|
||||||
|
var first = body[0];
|
||||||
|
var arr = [ first[0]+x , first[1]+y ];
|
||||||
|
body.splice(0,0, arr);
|
||||||
|
|
||||||
|
if(!increase)
|
||||||
|
body.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
setInterval(update,300);
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in new issue