用C、C#编写的C贪吃蛇蛇游戏具有哪些不同之处

利用C#编写C贪吃蛇蛇长度算法... 利用C#編写C贪吃蛇蛇长度算法
百度知道合伙人官方认证企业

兄弟连教育成立于2006年11年来专注IT职业教育,是国内专业的IT技术培训学校2016年成功挂牌噺三板(股票代码:839467)市值过亿。开设专注程序员培训专注php、Java、UI、云计算、Python、HTML5、

因为C#是一门面向对象的语言我们不用把所有代码都写在┅个窗体上,应该有一个分层思想(界面还界面数据处理还数据处理),如果还要网上对战的话搞个三层吧(界面层,数据处理或逻輯层Socket层),这样不仅方便维护还为后面添加新Idea会容易一点。

在编写游戏代码之前先想一想,贪食蛇里有什么呢

蛇应该是怎样的一條蛇?

不断向一个方向移动那就是有方向了。方向可以用整数代表不过为了方便以后编写代码,

还是定义一个枚举好一点还要会移動。还要有一个位置还要有一个速度

蛇有一个长度,也要记录下它各个身体的位置因为蛇吃食物会不断加长,所以他的身体数量(即長度)是会变化的所以最好是定义一个泛型List<Point>来记录身体上的所有位置。

蛇怎样才能移动原理是这样,后面一个蛇身替代头部的位置嘫后头部向前走一步。

食物呢我们不搞传统的C贪吃蛇蛇,食物可以是多个的也应该有不同类型,吃到不同类型的食物蛇会作出相应嘚变化。也就是说食物也有类型,所以定义一个enum为食物类型

为了搞搞新意思加上一个蛇的速度,蛇吃到快的食物会加快速度,吃到慢的食物会减慢速度。所以定义了速度

总的来说定义类应该是这样:

蛇:方向(枚举),状态(枚举)移动(方法),位置(头部位置)长度,各身体的位置速度

不说太多,我将会在代码里写详尽的注释大家应该看得明白。

//从蛇尾开始前面身体的位置替代后媔的身体位置

为了方便维护,定义了一个类GameManager专门处理游戏的逻辑,运算之类的

首先这个类相当于一个游戏,所以蛇食物是必不可少嘚,

游戏一定要有一个画面的所以要定义一个Draw()方法把画面画出来

要随机产生食物,所以要定义一个produceFood()方法

蛇要吃到食物所以要定义一个SnakeEatFood方法

还要判断游戏是否结束,所以要定义一个IsGameOver方法

因为GameManager相当于逻辑层snake不对外开放,所以定义了两个属性只返回snake的两个属性,这样方便紦数据显示在界面上因为蛇是在GameManager里的,不会在窗体出现所以定义了一个方法SnakeRun(),调用snake.Run()就OK了

还要定义很多常量参数,详细的请看代码

//如果食物在蛇的身上则重新产生食物位置

//如果蛇的头部碰到食物

//可以在这里添加更多吃下食物后蛇的变化

因为所有逻辑方面的东西都放在GameManager裏,所以就算界面改N次都好,都可以轻松实现

窗体方面主要定义两个Timer,一个用于产生食物一个用于控制蛇的运动。

还有别忘了每次哽新数据后要调用控件的Invalidate()方法更新画面哦。不然什么都不会动

最后,菜单什么的随便你怎样加。

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 C贪吃蛇 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信