#学习笔记#(20)贪吃蛇H5



<!DOCTYPE html>
<html>
<head>
<title>贪吃蛇H5</title>
</head>
<body>
<canvas width="400px" height="400px" style="border:1px solid gray" id="mycanvas"></canvas>
</body>
<script>
var c=document.getElementById("mycanvas");//画布
var cxt=c.getContext("2d");//蛇
cxt.fillstyle="black";//画出蛇
var snake=[];//用数组保存蛇身的长度
var derection=3;//蛇头的前进方向
var x=y=8;//蛇头的坐标
var len=6;//蛇身长度
var foodx=foody=20;//食物的初始坐标
cxt.fillRect(foodx*8,foody*8,8,8);
window.setInterval(move,200);//蛇前进的速度
function move(){//让蛇移动
document.οnkeydοwn=function(e){
	switch(e.keyCode){
		case 37:derection=1;break;//左
		case 38:derection=2;break;//上
		case 39:derection=3;break;//右
		case 40:derection=4;break;//下
	}}
switch(derection){
	case 1:x-=8;break;
	case 2:y-=8;break;
	case 3:x+=8;break;
	case 4:y+=8;break;
}
snake.unshift({'x':x,'y':y});//蛇头改变前进方向
if(snake.length>len){
var s2=snake.pop();//蛇尾前进-
cxt.clearRect(s2['x'],s2['y'],8,8);
}
cxt.fillRect(x,y,8,8);//蛇头前进+
if(foodx*8==x && foody*8==y){//判断蛇是否吃到了食物,如果吃到了蛇身长度+1,并且产生新的食物
len=len+1;food();
}
var s1=snake[0];//蛇头
if(s1['x']>=400 || s1['x']<=0 || s1['y']>=400 || s1['y']<=0){//如果蛇头超出画布
alert("撞墙而死!游戏即将重新开始......");
window.location.reload();
}
/*for(var i=1;i<snake.length;i++)//将蛇头与蛇的每一段身体比对
if(s1['x']==snake[i].x && s1['y']==snake[i].y){//如果碰到自己的身体
alert("被自己咬死!游戏即将重新开始......");
window.location.reload();
}
*/
}
function food(){//随机产生食物的小黑点
foodx=Math.ceil(Math.random()*50);//先*50再*8,可以保证食物出现在画布之内,同时又保证了可与蛇的运行轨迹完全吻合
foody=Math.ceil(Math.random()*50);
cxt.fillRect(foodx*8,foody*8,8,8);
}
</script>
</html>


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值