C#做一个贪吃蛇游戏

我是一个C#入门没多久的小白,第一次先做了一个抽号机程序。然后在封装程序的时候,发现图片转ico比较麻烦,于是又学着做一个转ico程序程序哈哈哈。这次想着做难点,代码量相比前两者多的游戏——贪吃蛇。记录一下这个过程,距离上一个转ico程序完成差不多二十天了。
贪吃蛇这个游戏相对来讲,我觉得是比较考验我一个模块化的能力吧(可能用词不当),需要我考虑这个游戏应该有什么功能,有什么东西(类),要怎么实现等等。
贪吃蛇主要应该就是三样东西–蛇、食物和地图
其中
蛇类的主要属性:
蛇的诞生、蛇的增长、蛇的运动和是否碰到自己;
食物类的主要属性:
食物的随机诞生、食物取代蛇头
地图类的主要属性:
地图的起始坐标、地图的边界(长宽)、蛇是否触碰地图边界(撞墙)
下图就是成功的结果哈哈哈,主要存在两个问题:地图边界因为一直画的问题,会出现闪烁的bug,而且程序界面是定死的,没有做自适应电脑屏幕的。不过主要功能还是完成了。
源码可以在这下载哦:贪吃蛇源码下载连接

修正:在测试过程中,发现蛇头和蛇身图片读取采用了绝对路径读取,现已修改为目录下读取。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c#贪吃蛇精简版 public void 创建蛇身() { //创建一个Label标签 Label lbl = new Label(); //设置背景颜色,如果是蛇头就添加不同的颜色 if (arr.Count == 0) {//蛇头 lbl.BackColor = Color.Blue; } else {//蛇身 lbl.BackColor = Color.Red; } //设置宽和高 lbl.Width = 19; lbl.Height = 19; //设置起始位置 lbl.Left = -20; //添加到Panel中 this.panel1.Controls.Add(lbl); //将这一节身体保存在ArrayList中,以方便将来对蛇的身体进行移动操作 arr.Add(lbl); } //定时器 private void timer1_Tick(object sender, EventArgs e) { //先移动身体,从尾巴开始移动 for (int i = arr.Count - 1; i > 0; i--) { //得到第i节身体 Label 身体i = (Label)arr[i]; //得到第i节身体的前一节身体 Label 前一节 = (Label)arr[i - 1]; //移动第i节身体 身体i.Left = 前一节.Left; 身体i.Top = 前一节.Top; } //得到蛇头 Label 蛇头 = (Label)arr[0]; //根据方向移动蛇头 if (fx == "上") 蛇头.Top -= 20; else if (fx == "下") 蛇头.Top += 20; else if (fx == "左") 蛇头.Left -= 20; else if (fx == "右") 蛇头.Left += 20; //判断撞墙了没有 if (蛇头.Left < 0 || 蛇头.Top < 0 || 蛇头.Left >= this.panel1.Width || 蛇头.Top >= this.panel1.Height) { this.timer1.Stop(); MessageBox.Show("你撞墙了。"); 重新开始游戏(); return; } //判断有没有撞自己 for (int i = 1; i < arr.Count; i++) { //取出第i节蛇身 Label 蛇身 = (Label)arr[i]; //判断有没有相撞 if (蛇头.Left == 蛇身.Left && 蛇头.Top == 蛇身.Top) { this.timer1.Stop(); MessageBox.Show("你撞到自己了。"); 重新开始游戏(); return; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值