资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C#编程 “贪吃蛇”小游戏一、项目内容及要求编程实现一个“贪吃蛇”小游戏,具体要求如下:1)程序启动后,蛇身默认向右移动,直到用户按下方向键改变运动方向。2)玩家通过键盘上的上、下、左、右四个方向键控制蛇在地图上寻找豆,蛇吃下豆后,蛇身加长一节。 3)界面上任意时刻同时会有三个豆,豆的位置随机生成,定时刷新。4)在游戏过程中,若蛇头碰到场地边界或自己的身体,则游戏失败。二、算法分析一、控件设计1)主菜单控件 MenuStrip2)面板控件 Panel:背景色为黄色3)标签控件 Label1、Label2 二、类设计1)Game类,入口主窗体、游戏界面类。Game类的主要功能包括控制游戏的开始与暂停、选择游戏关卡、声明并创建蛇的行为及豆的行为线程,启动线程。2)Block类:代表蛇和豆一个节点的块类,游戏中需要绘制的块分为以下三种情况:(1)蛇头:红色椭圆(2)蛇身:红色矩形 (3)豆:绿色椭圆添加类的属性:块的颜色、是否蛇头、是否豆,横坐标X、纵坐标Y添加类的行为:绘制块draw()方法,构造函数(判断是否豆),重载构造函数3)Snake类:定义游戏中的蛇。其属性包括蛇移动的方向以及蛇身的集合(泛型集合List);其行为成员包括蛇吃豆、吃过豆之后蛇身增长、蛇身移动以及判断蛇是否死亡等。4)Beans类:定义游戏中的豆。其属性包括3个豆组成的列表(List);其行为成员包括定时刷新豆的集合以及移除某个豆。三、界面及运行过程四、关键代码(代码要求注释完整,例如:变量的作用,语句的作用,方法的功能等都要加注释说明)namespace 项目5 public partial class Form1 : Form Food food = new Food(); Snake snake = new Snake(); private int score; public Form1() InitializeComponent(); timer1.Enabled = false;/timer是否可用 timer1.Interval = snake.Speed; /蛇初始速度 score = 0; Point body = new Point1000; /蛇最大长度 private void 操作ToolStripMenuItem_Click(object sender, EventArgs e) protected override bool ProcessDialogKey(Keys keyData) switch (keyData) case Keys.Up: if (snake.Direction != Direction.down) snake.Direction = Direction.up; break; case Keys.Down: if (snake.Direction != Direction.up) snake.Direction = Direction.down; break; case Keys.Left: if (snake.Direction != Direction.right) snake.Direction = Direction.left; break; case Keys.Right: if (snake.Direction != Direction.left) snake.Direction = Direction.right; break; return base.ProcessDialogKey(keyData); private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) private void 开始游戏ToolStripMenuItem_Click(object sender, EventArgs e) label2.Text = 0; score = 0; timer1.Enabled = true; if (snake.Live = false) snake = new Snake(); snake.resetSnake(); label2.Text = 0; score = 0; timer1.Enabled = true; private void 关卡设定ToolStripMenuItem_Click(object sender, EventArgs e) private void 暂停游戏ToolStripMenuItem_Click(object sender, EventArgs e) if (暂停游戏ToolStripMenuItem.Text = 暂停游戏) timer1.Enabled = false; 暂停游戏ToolStripMenuItem.Text = 继续; else timer1.Enabled = true; 暂停游戏ToolStripMenuItem.Text = 暂停游戏; private void 退出游戏ToolStripMenuItem_Click(object sender, EventArgs e) this.Close(); private void 第一关ToolStripMenuItem_Click(object sender, EventArgs e) timer1.Interval = 200; private void 第二关ToolStripMenuItem_Click(object sender, EventArgs e) timer1.Interval = 150; private void 第三关ToolStripMenuItem_Click(object sender, EventArgs e) timer1.Interval = 100; private void 第四关ToolStripMenuItem_Click(object sender, EventArgs e) timer1.Interval = 50; private void 第五关ToolStripMenuItem_Click(object sender, EventArgs e) timer1.Interval = 30; private void timer1_Tick(object sender, EventArgs e) snake.Move(); panel1.Invalidate();/蛇运动后,把picturebox1当前界面设为无效,并引发paint事件,重新绘制界面 private void panel1_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; snake.Draw(g);/画蛇 if (snake.live = false) timer1.Enabled = false;/timer1不可用 if (snake.Body0.X = food.Position.X & snake.Body0.Y = food.Position.Y) snake.Eat(food); food.Exist = false; score += 10; label2.Text = score.ToString();
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号