C#程序设计用C#实现一个简单的贪吃蛇游戏_第1页
C#程序设计用C#实现一个简单的贪吃蛇游戏_第2页
C#程序设计用C#实现一个简单的贪吃蛇游戏_第3页
C#程序设计用C#实现一个简单的贪吃蛇游戏_第4页
C#程序设计用C#实现一个简单的贪吃蛇游戏_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C蝌序设计用C嫁现一个简单的贪吃蛇游戏C#题目 : 贪吃蛇专 业 计算机科学与技术 _ 年级班别 09级 班 学 号094302XXXXX生姓名 XXX 指导教师 成 绩2012 年 01 月1目录1 系统设计要求 11.1 课题分析 11.2 设计环境 11.3 设计思路 1 2课题总体框架设计 22.1 程序流程图 42.2 类的结构图 6 3课题实现 73.1 程序主界面 73.2 设置界面 83.3 开始游戏界面 83.4 游戏结束界面 103.5 暂停游戏界面 123.6 关键程序代码 11 4总结 204.1 设计总结 204.2 设计体会 2021 系统设计要求1.1 课题分析本

2、课题为一个用C#?现一个简单的贪吃蛇游戏,该系统的具体功能如下:具体功能需求:1)能简便的开始游戏;) 游戏主界面主要实现游戏的开始、暂停、退出等功能; 23) 可以用上、下、左、右键控制蛇的运动方向,使之向着有食物的方向运动4) 吞吃食物使身体增长如果蛇在移动过程中,撞到墙壁或蛇头撞到自己身体时,游戏结束5)当玩家所控制的蛇死亡后,输出一个消息“ Game Ove、”表示蛇的死亡。界面需求:1) 要求界面简洁美观,简单易用。2) 坚持清晰明了,在性能方面能够实现效率高,不易出错等;3) 游戏主界面应该力求美观、赏心悦目。游戏控制模块应该做到易懂、易操作,而且准确率高。1 .2 设计环境本程序

3、选择Visual Studio 2008 作为实验环境。2 .3 设计思路本课题采用面向对象的方法分析系统。这个程序的关键点是表示蛇的图形以及蛇的移动。用一个小正方形表示蛇的一节身体,身体每长一节,身体增加一个正方形,蛇头用一个正方形表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的是现实从蛇头的新3位置开始画蛇。蛇在吃到食物后,蛇身会增加一节,相应的分数也会增加10,倘若中途碰到四周或蛇头触及蛇身,游戏结

4、束在主窗体中,通过调用Form类来实现表示层4 课题总体框架设计根据设计思路,可以为系统设计一个类,如图2.1 所示。字段方法2图 2.1 系统设计类图Liang 类私有方法:private void pictureBox1_Paint(object sender, PaintEventArgs e) /绘制蛇和食物private void button1_Click(object sender, EventArgs e) /开始键private void button2_Click(object sender, EventArgs e) /退出键 privatevoid button3_Cl

5、ick(object sender, EventArgs e) /难度“简单”键private void button4_Click(object sender, EventArgs e) /暂停键和继续键private void button5_Click(object sender, EventArgs e) /难度“一般”键private void button6_Click(object sender, EventArgs e) /难度“困难”键private void timer1_Tick(object sender, EventArgs e)公共方法:public partial

6、 class Liang : Formpublic int Speed / Speed 属性Direction Direction /Direction 的属性 publicpublic bool Live /Live 的属性public Point Body /Body 的属性public Snake() / 创建蛇的类public void Move() / 蛇的移动public void Eat(Food food) / 蛇吃食物public void Draw(Graphics g) / 绘制蛇public void resetSnake() / 重新设置蛇3public Food()

7、 / 构造 Food 的函数public Point Position /Positionpublic Point creatFood() /的属性 public Boolean Exist /Existpublic void Draw(Graphicsg)2.1 程序流程图4开始窗口初始化读取游戏设置( 设置难度) 开始游戏开启定时时钟随机产生食物控制蛇的移动N吃到食物,身体增长一节,分数加10,撞到四周,NY蛇头碰到蛇身,定时时钟关闭输出分数游戏结束5主窗口处理程序流程图2.2 类的结构图FoodSnakeQ打工Liang* 口3 FwhForni-DCdriuiihfrCpribl类的结

8、构图63课题实现3.1 程序主界面图3.1程序主界面73.2 设置界面难度简单卷困难分数开贬菖停-E3.3开始游戏界面83.4游戏结束界面103.5暂停游戏界面3.6关键程序代码1、Liang 类using System;using System.Drawing;using System.Windows.Forms; namespace WindowsFormsApplication1 public partial class Liang : Form public Liang()InitializeComponent();timer1.Enabled = false; /timer1 是否可

9、用timer1.Interval = snake.Speed; / 蛇初始速度Food food=new Food ();Snake snake=new Snake ();11Point body = new Point1000; / 蛇最大长度int score = 0;/ 绘制蛇和食物/ / 绘制蛇和食物/ / / private void pictureBox1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;snake.Draw(g); / 画蛇if (snake.live = false)timer1.Ena

10、bled = false;/timer1 不可用if (snake.Body0.X = food.Position.X & snake.Body0.Y = food.Position.Y)/蛇吃食物snake.Eat(food);food.Exist = false;score += 10;label3.Text = score.ToString(); / 输出分数if (food.Exist)food.Draw(g);elsefood.Position = food.creatFood();/ 重新创造,绘制食物food.Exist = true;food.Draw(g);/ 用命令键控制蛇

11、的移动/ / 用命令键控制蛇的移动12/ / / 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.Di

12、rection != 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 button1_Click(object sender, EventArgs e)label3.Text = ;score = 0;13tim

13、er1.Enabled = true;if (snake.Live = false)snake = new Snake();snake.resetSnake();label3.Text = ;score = 0;timer1.Enabled = true;/ 退出键/ / 退出键/ / / private void button2_Click(object sender, EventArgs e)this.Close();private void button3_Click(object sender, EventArgs e)timer1.Interval = 150;/ 暂停键和继续键/

14、/ 暂停键和继续键/ / / private void button4_Click(object sender, EventArgs e)if (button4.Text = 暂停 )timer1.Enabled = false;button4.Text = 继续 ;elsetimer1.Enabled = true;button4.Text = 暂停 ;14/ 选择速度键/ / 选择速度键/ / / private void button5_Click(object sender, EventArgs e)timer1.Interval = 100;private void button6_

15、Click(object sender, EventArgs e)timer1.Interval = 50;/ 引发蛇运动的事件/ / 引发蛇运动的事件/ / / private void timer1_Tick(object sender, EventArgs e)snake.Move(); / 蛇运动pictureBox1.Invalidate(); / 当蛇移动后,把pictureBox1 当前的界面设为 无效,并引发paint 事件 重新绘制界面private void pictureBox1_Click(object sender, EventArgs e)2)Food 类using

16、 System;using System.Text;using System.Drawing;using System.Windows.Forms;namespace WindowsFormsApplication1 class Food / 食物类15Point position;Boolean exist;public Food() / 构造 Food 的函数position = this.creatFood();exist = true;的属性public Point Position /Positiongetreturn position;setposition = value;pub

17、lic Boolean Exist /Existgetreturn exist;setexist = value;public Point creatFood() /的属性随机产生食物Point position = new Point();Random ran = new Random();position.X = ran.Next(1, 30)*10;position.Y = ran.Next(1, 30)*10;return position;public void Draw(Graphics g)SolidBrush yellowBrush = new SolidBrush(Color

18、.Red);g.FillRectangle(yellowBrush, position.X, position.Y, 10, 10);163)Snake 类using System;using System.Text;using System.Collections.Generic;using System.Drawing;using System.Windows.Forms; namespace WindowsFormsApplication1enum Direction / 枚举出蛇可能移动的方向UP, DOWN, LEFT, RIGHTclass Snakepublic const in

19、t side = 10; / 蛇身每个节点长度Point body = new Point600; / 蛇最大长度Direction direction; / 蛇的初始移动方向public bool live; /蛇的存活状态int number; / 蛇身节点个数int speed=120; / 蛇的初始速度public int Speed / Speed 属性getreturn speed;setspeed = value;public Direction Direction /Direction的属性getreturn direction;setdirection = value;17p

20、ublic bool Live /Live 的属性getreturn live;set live = value; public Point Body /Body 的属性getreturn body;public Snake() / 创建蛇的类Point node1 = new Point(100, 50);Point node2 = new Point(90, 50);body0 = node1;body1 = node2;number = 2;direction = Direction.RIGHT;live = true;public void Move() / 蛇的移动蛇移动的方式for

21、 (int i = this.number - 1; i 0; i-) /bodyi = bodyi - 1;switch (this.direction) / 蛇移动的方向case Direction.UP:body0.Y -= side; break;case Direction.DOWN:body0.Y += side; break;case Direction.LEFT:body0.X -= side; break;18case Direction.RIGHT:body0.X += side; break;if (body0.X 470 | body0.Y 440) / 判断蛇蛇撞到四

22、周死亡this.live = false;for (int i = 1; i = number - 1; i+)if (body0.X = bodyi.X & body0.Y = bodyi.Y)this.live = false;public void Eat(Food food) / 蛇吃食物bodynumber = food.Position;this.number+; / 长度增加public void Draw(Graphics g) / 绘制蛇SolidBrush DarkRedBrush = new SolidBrush(Color.DarkRed);g.DrawRectangle(Pens.Red, body0.X, body0.Y, side, side);g.FillRectangle(DarkRedBrush, body0.X, body0.Y, side, side);for (int i = 1; i = number - 1; i+)g.DrawRectangle(Pens.Red, bodyi.X, bodyi.Y, side, side);g.FillRecta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论