关于C语言写贪吃蛇时,蛇的身体以及移动该怎么写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C语言写贪吃蛇时,蛇的身体以及移动该怎么写相关的知识,希望对你有一定的参考价值。
就是先给链表的三个结点赋值形成一条蛇■■■,然后用删尾增头的方法让蛇动起来,这两步该如何操作。求大神指教。
只要记住一点,只有蛇头才会每次赋予新的坐标,之后的身体都是copy前一个节点的坐标,链表结构里应该有x,y坐标信息,我以前就是这么做的,可行 参考技术A 我写过,我的策略就是蛇的链表删去尾节点,并根据蛇当前移动的方向增加头节点! 再显示出来,看起来就移动一格了。 参考技术B 我写了一个不过在多线程下貌似有BUG 参考技术C 表示尝试过,不会 参考技术D 1、获得移动方向矢量(Dx,Dy)(其中,Dx,Dy值分别为1,0,-1三个值中的一个)2、在贪吃蛇数据链表中增加新的头结点:
Head.x=Head.x+Dx; Head.y=Head.y+Dy
原Head节点变为第二节点,原第二节点变为第三节点,原第三节点变为第四节点...
如果不仅仅是三个节点,则依次类推
判断最后一个节点,命名为Last
3、判断如果是否吃到食物,
如吃到食物,则不操作
如未吃到食物,则将执行尾节点删除:Last.Delete
即可
4、按照最新的链表更新节点位置的显示
上述动作的循环,即可得到贪吃蛇移动、吃食物等连续动作本回答被提问者采纳
重做贪吃蛇 万向移动型 蛇的移动和吃食部分C# wpf版
wpf 贪吃蛇 移动 吃食 万向版
之前写了一个贪吃蛇,代码实在太乱了,上一个是用polyline做的,这次这个是用一个个的elipse来渲染蛇的身体,其中一个圆点,就是一个elipse了。蛇的移动是通过定时器来实现的,方向键 A D控制蛇的方向。这个方向用的向量来做的。前端界面用的canvas。
实现这两个主要的功能需要这么些类:食物类 Food ,主要成员:
public Point PtPos; //canwas上的坐标
public int Width, Height;
Rect Rec =default;//用于判断小蛇和事物相交
蛇身段:SnakeBody,主要成员:
public int w;
public Point pt;
小蛇:
向量类:V2d
我认为最不好做的部分,就是小蛇移动部分,其思路 是 蛇头+头向量得到新的头,然后再把其余几点的坐标向前挪动一位。如果移动过程中,有按方向键,就需要把这个向量 旋转一定的角度。再像刚才那样算新的蛇头。
做这个的体会是,前端主要是负责渲染,比如把点集合渲再界面的蓝色小圆形,其实我们做这种c/s端程序,是应该把数据和渲染分开的。模型 视图模型 视图 三者 靠中间的视图模型解耦,模型直接与业务层联系起来,业务层也只应该操作模型,不操作视图模型和视图里的元素,不会和视图(前端UI界面)耦合, 这样做的好处,我认为是,可以一套业务逻辑,再不同的ui界面展示。比如把wpf换成winform,我们的业务可以几乎不变,只需要改变视图模型,以及换成winfrom的ui操作。就如同 现在的前后端分离,业务不和前端网页耦合,我认为大概就是也就是业务后端不会操作前端页面的任何元素标签。前端也只需要拿到需要渲染的数据就行。C#的Mvc这个也并没有做到完全的前后端分离,但是却至少大大减少了前端和后端的耦合了。
前端代码:
工程下载:
以上是关于关于C语言写贪吃蛇时,蛇的身体以及移动该怎么写的主要内容,如果未能解决你的问题,请参考以下文章