贪吃蛇简化

<!DOCTYPE html>

<html>


<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

canvas {

box-shadow: 2px 2px 10px deeppink;

}

</style>

</head>


<body>

<canvas id="canvas" width="600" height="600"></canvas>

<script type="text/javascript">

var canvas = document.getElementById("canvas");

var ctx = canvas.getContext("2d");


var snake = {

x: -40,

y: 0,

w: 40,

h: 40,

headColor: "deeppink",

bodyColor:"palegreen",

top: false,

bottom: false,

left: false,

right: true,

bodys:[],

bool:true

}

snake.draw = function() {

ctx.beginPath();

ctx.fillStyle = this.headColor;

ctx.fillRect(this.x, this.y, this.w, this.h);

}

snake.move = function() {

if(this.left) {

this.x -= this.w;

} else if(this.right) {

this.x += this.w;

} else if(this.top) {

this.y -= this.h;

} else if(this.bottom) {

this.y += this.h;

}

snake.draw();

snake.drawBody();

snake.savePosition();

}

snake.savePosition = function(){

this.bodys.push({

x:this.x,

y:this.y,

w:this.w,

h:this.h

});

if (this.bodys.length > 4 && this.bool) {

// arr.shift()删除数组第一个元素

this.bodys.shift();

}else{

this.bool = true;

}

}

snake.drawBody = function(){

for (var i = 0; i < this.bodys.length; i++) {

ctx.beginPath();

ctx.fillStyle = this.bodyColor;

ctx.fillRect(this.bodys[i].x,this.bodys[i].y,this.bodys[i].w,this.bodys[i].h);

}

}

// snake.draw();

function rand(min,max){

return Math.floor(Math.random() * (max - min + 1) + min);

}

var food = {

x: 0,

y: 0,

w: 40,

h: 40,

color: "#3CFFFE"

}

food.draw = function(){

ctx.fillStyle = this.color;

ctx.fillRect(this.x,this.y,this.w,this.h);

}

food.setPosition = function(){

while (true){

var x = rand(0,(canvas.width - this.w) / this.w) * this.w;

var y = rand(0,(canvas.height - this.w) / this.w) * this.w;

// 遍历身体上的点,如果当前随机生成的点与蛇重合的话,跳出for循环,则当前的i不等于snake.bodys.length,进行下一次while循环

for (var i = 0; i < snake.bodys.length; i++) {

if (x == snake.bodys[i].x && y == snake.bodys[i].y) {

break;

}

}

// 之前的遍历如果没有找到重合的点,跳出white循环

if (i == snake.bodys.length) {

this.x = x;

this.y = y;

break;

}

}

}

food.setPosition();

food.draw();

function checkP(obj1,obj2){

if (Math.abs(obj1.x + obj1.w / 2 - (obj2.x + obj2.w / 2)) < obj1.w / 2 + obj2.w / 2 && Math.abs(obj1.y + obj1.h / 2 - (obj2.y + obj2.h / 2)) < obj1.h / 2 + obj2.h / 2) {

return true;

}else{

return false;

}

}

setInterval(function() {

ctx.clearRect(0, 0, canvas.width, canvas.height);

food.draw();

snake.move();

if (checkP(food,snake)) {

food.setPosition();

food.draw();

snake.bool = false;

}

}, 500);

document.onkeydown = function(e) {

var ev = e || window.event;

switch(ev.keyCode) {

case 37:

// left

if(!snake.right) {

snake.left = true;

snake.right = false;

snake.top = false;

snake.bottom = false;

}

break;

case 38:

// top

if(!snake.bottom) {

snake.left = false;

snake.right = false;

snake.top = true;

snake.bottom = false;

}

break;

case 39:

// right

if(!snake.left) {

snake.left = false;

snake.right = true;

snake.top = false;

snake.bottom = false;

}

break;

case 40:

// bottom

if(!snake.top) {

snake.left = false;

snake.right = false;

snake.top = false;

snake.bottom = true;

}

break;

}

}

</script>

</body>


</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 贪吃蛇(pygame)资源包是一个供开发者使用的Python库,用于创建和定制贪吃蛇游戏。该资源包提供了许多有用的函数和类,使开发贪吃蛇游戏变得更加简单和高效。 首先,pygame资源包提供了贪吃蛇游戏所需的基本功能,如创建游戏窗口、处理用户输入和渲染游戏元素等。开发者可以使用pygame资源包中的函数轻松地实现这些功能,而无需从头开始编写与游戏逻辑无关的底层代码。 其次,pygame资源包还提供了一些有助于贪吃蛇游戏设计和美的功能。例如,开发者可以使用pygame资源包中的精灵类创建具有不同外观和动画效果的游戏元素,如贪吃蛇头部、身体和食物等。开发者还可以使用pygame资源包中的图像和音频加载功能,为游戏添加更多的视觉和听觉效果。 此外,pygame资源包还支持碰撞检测、计分系统和游戏状态管理等高级功能。开发者可以使用pygame资源包提供的功能轻松处理贪吃蛇与食物、边界或自身碰撞的情况,并实现分数计算和游戏胜负的判断。 最后,pygame资源包还有一个庞大的开源社区,提供了大量的示例代码、教程和资源,供开发者学习和参考。开发者可以从社区中获取帮助和支持,加速贪吃蛇游戏的开发过程。 总而言之,贪吃蛇(pygame)资源包是一个强大而且易于使用的工具,可以帮助开发者快速、高效地创建和定制贪吃蛇游戏。无论是初学者还是有经验的开发者,都可以从pygame资源包中受益,并开发出独一无二的贪吃蛇游戏作品。 ### 回答2: 贪吃蛇Pygame资源包是一个专门为贪吃蛇游戏开发者设计的资源包。Pygame是一个基于Python的游戏开发库,它提供了丰富的功能和工具,使开发者能够轻松创建自己的游戏。 贪吃蛇Pygame资源包包含了一系列用于贪吃蛇游戏开发的资源,如图形、声音和其他游戏元素。这些资源可以帮助开发者更快地搭建游戏界面,增强用户的游戏体验。 对于游戏开发者来说,使用贪吃蛇Pygame资源包有以下几个优势: 1. 节省开发时间:资源包提供了贪吃蛇游戏所需的各种素材,开发者不再需要从头开始设计和绘制这些素材,大大缩短了开发周期。 2. 提高游戏质量:资源包中的素材经过精心设计和制作,游戏开发者可以直接使用这些专业的素材,提高游戏的质量和效果。 3. 简化代码编写:资源包提供了一些已经封装好的函数和类,开发者可以直接调用这些函数和类来实现贪吃蛇游戏的核心逻辑,简化了代码编写的过程。 4. 提供灵活性:贪吃蛇Pygame资源包可以根据开发者的需求进行定制和扩展,开发者可以根据自己的想法和创意进行修改和优。 总而言之,贪吃蛇Pygame资源包是一个非常有价值的工具,它可以帮助开发者更快地开发出高质量的贪吃蛇游戏,并且提供了一些方便的功能和工具,使开发过程更加简单和高效。无论是初学者还是有经验的开发者都可以受益于这个资源包。 ### 回答3: 贪吃蛇pygame资源包是一种用于开发贪吃蛇游戏的资源集合。Pygame是一个基于Python的开源游戏开发库,它提供了丰富的游戏开发功能和工具,方便开发人员快速搭建游戏框架。 贪吃蛇pygame资源包包含了所有需要的图像、声音和其他素材,使开发者可以轻松创建和设计各种元素,如蛇身、食物、背景等。这些资源包通常具有不同的图像尺寸和风格,以满足开发者的不同需求。开发者可以通过加载这些资源,将其应用到游戏中,提升贪吃蛇游戏的可视效果。 此外,贪吃蛇pygame资源包还可能包含一些预设的游戏逻辑和功能代码,如蛇的移动、食物生成、碰撞检测等,这些代码可以作为开发者的参考,帮助他们更好地理解和实现贪吃蛇的核心机制。 通过使用贪吃蛇pygame资源包,开发者可以大大减少游戏开发的工作量,加快开发速度。同时,资源包的使用也使游戏的视觉效果更加丰富和精美,增强了游戏的吸引力。开发者可以根据自己的需求自由选择和组合资源,打造自己理想中的贪吃蛇游戏。 总之,贪吃蛇pygame资源包是一种提供贪吃蛇游戏开发所需素材和代码的资源集合,它可以帮助开发者简化开发过程,提升游戏质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值