c#编写的贪吃蛇游戏

这篇博客分享了作者尝试用C#编程实现贪吃蛇游戏的过程,旨在锻炼面向对象编程技巧。虽然只完成了基本的框架,但作者提供了关键的贪吃蛇类的代码,包括蛇身的移动、方向、碰撞检测等核心功能。文章末尾提供了联系方式以获取完整源码。
摘要由CSDN通过智能技术生成

     前几天和同事聊天,同事说他的一个朋友去某公司面式,公司出题目要一下午编写一个贪吃蛇游戏,结果没有写出来,没有应聘上,我仔细想了想觉得算法也不是很复杂,就在空闲的时候试着写了一下,当然没有到网上去看别人写的程序,完全是想自我测试的意思,并没有想写一个特别完善的东西,只是拿来练习联系吧,主要是想锻炼锻炼面向对象的编程的方法,一下午应该是可以写出来的,不过我人比较懒*^_^*只是写了个架子就不想写了,其中随机生成豆子模块没有写,发表这篇文章只是想起到抛砖引玉的作用,想和大家讨论讨论面向对象的编程,怎么根据实际需求抽象出程序模型。

      程序运行界面非常简单没什么好说的,控制用上下左右键控制方向

绿色的代表头:)

下面贴出最主要的贪吃蛇类

using System;
using System.Collections;

namespace MyGame.Snake
{
 /// <summary>
 /// Snake 的摘要说明。
 /// </summary>
 //定义移动的方向
 public enum DirectionType
 {
  up,
  down,
  left,
  right
 }
 /// <summary>
 /// 蛇身类
 /// </summary>
 public class SnakeBlock
 {
  pub

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值