欢迎光临起重设备网站,致力打造出众的产品,提供优质的保障,层层的检测,安全可靠

起重设备网站

质量确保,值得信赖,咱们只为给您带来更多的服务,品质有确保

自制的简单贪食蛇

作者:初夏      发布时间:2021-04-21      浏览量:0
今天要实现一个经典的迷你游戏的例子,一定

今天要实现一个经典的迷你游戏的例子,一定接触过贪食的蛇,当然,今天的实现细节并不是那么全面,只能看作是一个简单的迷你游戏版本,使用统一UGUI,Bug可能有点,但一般都已经完成了。

1,一般原则

我需要控制的是贪心蛇的头部和身体,使用键盘WASD键移动贪心蛇的头部网格,后续的身体只需要移动到前一个身体的位置。当然,这一理论是可行的,在实际操作中还需要考虑其他问题。

2.为了达到总体效果,在此基础上对小游戏效果图

中的小问题进行了讨论。

3。关键代码演示

设置地图中特定坐标的图片,即更新屏幕屏幕

公共空设置SpriteImage(ListSnakeBody实时){//set其他网格SetDefaultSpriteImage();//set Food if(gameController.Food.Food Coord!=Vector2.0)imgArray[(int)(gameController.food.foodCoord.x),(int)(gameController.food.foodCoord.y)].sprite=Resources.Load(“002/纹理/食品”);尝试{foreach(Var Item In SnakeBody){imgArray[(Int)item.Coord.x,(Int)item.Coord.y].sprite=Resources.Load(“002/纹理/”+item.SpriteName);}CATCH(System.Exception){gameController.isLife=false;游戏结束“);}//判断贪吃蛇吃食物if(gameController.snake.head!)=Vector2.0&&gameController.snake.head==gameController.Food。{vector2direc=(gameController.snake.tail-gameController.snake.head)。规范化;direc=新Vector2(direc.y,direc.x);If(vector2.dot(vector2.up,direc)==0){if(gameController.snake.direction.left){gameController.snake.Snake.AddSnakeBody(新Vector2(gameController.snake.tail.x,gameController.snake.y+1);}if(gameController.snake.directions==Snake.Direction.Right){gameController.snake.AddSnakeBody(新Vector 2(gameController.snake.tra.x,gameController.snake.tail.y-1));}if(vector2.dot(vector2.up,direc)==1){gameController.snake.AddSnakeBody(新Vector2(gameController.snake.t.x+1,gameController.snake.t.y));}Else if(Vector2.Dot(Vector2.up,direc)==-1){gameController。Snake.AddSnakeBody(新的Vector2(gameController.snake.tra.x-1,gameController.snake.tra.y));}if(Vector2.Dot(Vector2.up,direc)<0){if(gameController.snake.tail.y){gameController.snake.head.y){gameController.snake.head.{gameController.snake.AddSnakeBody(新的Vector 2(gameController.snake.tail.x,gameController.snake.tail.y+1));}if(Vector2.Dot(Vector2.up,direc)>0){if(gameController.snake.tail.y){gameController.snake.head.y){gameController.snake.SnakeBody(新的Vector2(gameController.snake.tail.x,gameController.snake.末-1));}{游戏控制器,蛇。AddSnakeBody(新Vector 2(gameController.snake.tail.x,gameController.snake.y+1);}gameController.food.CreateFood(gameController);}

4。代码解析

此代码涉及三种图片的刷新,即将不同标记的属性图片分配给网格。

需要完成的第一件事是分配普通网格图片。这里没有给出具体的方法,但是实际上整个网格是通过整个网格来进行透明的图像分配。

然后刷新的图片是我们吃蛇的食物。这是红色的广场。食物产生的地点实际上不是完全随机的。生成的位置必须在地图网格中,不能在贪婪的蛇体内生产食物。每一次食物被贪婪的蛇吃掉,它就会再次触发食物的产生。

最后,我们需要考虑吃完食物后身体的延长问题。事实上,有些人会觉得身体的延伸会直接取代贪婪的蛇尾巴上的网格图,但这里有一个问题,就是如何将尾巴的位置放置在延伸的方向上。从效果图中可以看出,贪婪的蛇在移动其身体时,会出现尾巴延伸的情况,代码中

反映在判断的八个方向上,以确定尾体是如何生成的,具体的判断是基于点积的矢量和Y轴坐标所形成的贪婪蛇的头尾,然后根据当前贪婪蛇的运动方向生成贪婪的蛇体。(具体来说,代码是主要的)。

因为编码遵循面向对象的原则,所以当前代码中可能有多个未指定的对象,您可以看到源代码。

5,代码地址

我上传的特定代码,这里看到

在代码中可能有很多问题,游戏是不够的,但毕竟,它只是一个迷你游戏,我不打算做得更好,只是实现这个功能。

6,总结

之前写代码或缺陷脑,哪里写,完全不考虑对象封装,游戏框架之类的事情,代码不一定有多实际的功能,但至少可以看到清晰舒适,子耦合才是王者!