C#课程设计 贪吃蛇

更新时间:2023-10-22 18:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

一、课程设计的目的与要求 ........................................... 2 二、题目说明 ....................................................... 2

2.1程序开发背景................................................................................................... 2

2.2发工具介绍....................................................................................................... 3 三、总体设计 ....................................................... 3 四、详细说明 ....................................................... 6

4.1 系统实施.......................................................................................................... 6 五、遇到的问题和解决方法 .......................................... 12 七、参考文献 ...................................................... 13

- 1 -

一、课程设计的目的与要求

我们在学习面向过程的编程基础上学习面向对象编程,也是为了能更好的去理解面向对象的含义以及与面向过程的区别.学习这门可视化编程语言,使我们在运用语言编写程序的过程中,能更直观的编写出我们理想中的程序,而且也使我们的编译工作变单易行.C#的出现弥补了C语言家族的不足,它具有更强大的功能、具有VB开发的高效性和方便性.

我们学习这门语言的目的,不是仅仅的理论研究,作为语言,它只是一种工具,因此学习它更重要的是运用它来做有用的程序,这也就是说学习它重在应用.在实践的基础上对它能更好的掌握,而进行简单的设计就是一种很有效的学习实践方式,这也就是我们学习的主要目的:旨在培养学生的上机动手能力和在本课程内初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计急今后从事专业工作打下坚实的基础.

要求:1. 熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS。

2.掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮

助的使用方法。

3. 掌握常用控件以及控件的常用属性的使用方法。

4. 程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。 5. 软件界面美观大方,操作简洁易用,功能完备可靠。

二、题目说明

贪吃蛇是一款经典游戏,游戏通过adws方向键控制贪吃蛇移动并吃掉屏幕上出现的实物,不能碰到墙壁和自己的身体。游戏开始可以选择贪吃蛇移动的速度,速度越快迟到果实的得分也就越高。

2.1程序开发背景 Microsoft Visual C# 2005是一款入门级程序,visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。

贪吃蛇游戏非常普遍,几乎所有手机上都有这种游戏,它可以在上班、学习比较累的时侯娱乐一下。这款游戏操作简单,界面整洁,是非常好的游戏。

- 2 -

2.2发工具介绍

此程序使用Microsoft Visual C# 2005Express Edition工具开发的,虽然Visual C# 2005 Express Edition是一款入门级的集成开发环境,但是它同样具有强大的功能,完全可以满足学生和新手的需要,主要功能如下:与ANSI兼容的C#2.0编译器、功能齐全的集成调试器、高级IntelliSense功能、针对Windows窗体开发的设计时支持、支持本地数据库访问和轻松访问XML Web服务等

Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序

三、总体设计

贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。作为一个完整的程序,尤其是一个完整的游戏,必须考虑人机交流与用户体验。 实现思路及具体代码: 1.初始化:public mainForm()

{ }

//

// Windows 窗体设计器支持所必需的 //

InitializeComponent(); //

// TODO: 在InitializeComponent 调用后添加任何构造函数代码 //

2.游戏设置:

//

this.menuItem1.Text = \游戏设置\

// menuItem2 //

this.menuItem2.Index = 0;

this.menuItem2.Text = \蛇体颜色设置\this.menuItem2.Click += new

- 3 -

System.EventHandler(this.menuItem2_Click);

//

// menuItem3 //

this.menuItem3.Index = 1;

this.menuItem3.Text = \食物颜色设置\this.menuItem3.Click += new

System.EventHandler(this.menuItem3_Click);

//

// menuItem4 //

this.menuItem4.Index = 2;

this.menuItem4.MenuItems.AddRange(new

System.Windows.Forms.MenuItem[] {

this.menuItem8,

this.menuItem9,

this.menuItem10,

this.menuItem11});

this.menuItem4.Text = \游戏难度设置\//

// menuItem8 //

this.menuItem8.Checked = true; this.menuItem8.Index = 0; this.menuItem8.Text = \菜鸟\this.menuItem8.Click += new

System.EventHandler(this.menuItem8_Click);

//

// menuItem9

- 4 -

//

this.menuItem9.Index = 1; this.menuItem9.Text = \大鸟\this.menuItem9.Click += new

System.EventHandler(this.menuItem9_Click);

//

// menuItem10 //

this.menuItem10.Index = 2; this.menuItem10.Text = \老鸟\this.menuItem10.Click += new

System.EventHandler(this.menuItem10_Click);

//

// menuItem11 //

this.menuItem11.Index = 3; this.menuItem11.Text = \自虐\this.menuItem11.Click += new

System.EventHandler(this.menuItem11_Click);

// // menuExit //

this.menuExit.Index = 3; this.menuExit.Text = \退出\

3.积分:if(this.snake.Eat(this.foodPoint))

{

//改变积分 this.textBox1.Text

=System.Convert.ToString(++this.foodCount*10); 4.是否结束游戏://开始游戏

private void StartGame() {

drawDelegate = new DrawDele(PutFood); this.Invoke(drawDelegate,null);

- 5 -

while(true) {

Thread.Sleep(speed); if(this.IsGameOver()) { }

MessageBox.Show(\try { } catch { }

this.game.Abort();

四、详细说明

4.1 系统实施

1. 游戏界面

图1开始界面

2.开始前的游戏设置

- 6 -

图2游戏设置

介绍:该操作可以设置蛇的颜色、食物的颜色,以及游戏的难度。 具体代码: this.menuItem1.Text = \游戏设置\

//

// menuItem2 //

this.menuItem2.Index = 0;

this.menuItem2.Text = \蛇体颜色设置\this.menuItem2.Click += new

System.EventHandler(this.menuItem2_Click);

//

// menuItem3 //

- 7 -

this.menuItem3.Index = 1;

this.menuItem3.Text = \食物颜色设置\this.menuItem3.Click += new

System.EventHandler(this.menuItem3_Click);

//

// menuItem4 //

this.menuItem4.Index = 2;

this.menuItem4.MenuItems.AddRange(new

System.Windows.Forms.MenuItem[] {

this.menuItem8,

this.menuItem9,

this.menuItem10,

this.menuItem11});

this.menuItem4.Text = \游戏难度设置\//

// menuItem8 //

this.menuItem8.Checked = true; this.menuItem8.Index = 0; this.menuItem8.Text = \菜鸟\this.menuItem8.Click += new

System.EventHandler(this.menuItem8_Click);

//

// menuItem9 //

this.menuItem9.Index = 1; this.menuItem9.Text = \大鸟\this.menuItem9.Click += new

- 8 -

System.EventHandler(this.menuItem9_Click);

//

// menuItem10 //

this.menuItem10.Index = 2; this.menuItem10.Text = \老鸟\this.menuItem10.Click += new

System.EventHandler(this.menuItem10_Click);

//

// menuItem11 //

this.menuItem11.Index = 3; this.menuItem11.Text = \自虐\this.menuItem11.Click += new

System.EventHandler(this.menuItem11_Click);

// // menuExit //

this.menuExit.Index = 3; this.menuExit.Text = \退出\

3.当程序运行,点击开始按钮后的界面

- 9 -

图3开始界面

控制键的具体代码: //接受键盘事件处理

private void mainForm_KeyPress(object sender, KeyPressEventArgs e) {

if(e.KeyChar == 'a')

this.snake.SnakeWay=(this.snake.SnakeWay ==Way.EAST)?

Way.EAST:Way.WEST;

else if(e.KeyChar == 'd')

this.snake.SnakeWay=(this.snake.SnakeWay ==Way.WEST)?

Way.WEST:Way.EAST;

else if(e.KeyChar == 'w')

this.snake.SnakeWay

=(this.snake.SnakeWay==Way.SOUTH)?Way.SOUTH:Way.NORTH;

else if(e.KeyChar == 's')

this.snake.SnakeWay=(this.snake.SnakeWay==Way.NORTH)?Way.SOUTH:Way.SOUTH; else if(e.KeyChar==32) {

4.当程序运行,蛇每吃到一个食物,积分就增加10分

- 10 -

图4游戏积分

游戏积分的代码:if(this.snake.Eat(this.foodPoint))

{

//改变积分 this.textBox1.Text

=System.Convert.ToString(++this.foodCount*10); 5.当蛇死亡后游戏结束的图

- 11 -

图5蛇死亡

游戏结束的代码:if(this.IsGameOver())

{ }

MessageBox.Show(\try { } catch { }

this.game.Abort();

五、遇到的问题和解决方法

1. 问题:代码经常出错,不会改。

解决方法:通过c#相关书籍,和网上搜查,以及请教老师、同学。

2. 问题:程序代码经常出现“上下文无该文件名”的问题,以至于程序不能运行。

解决方法:检查代码,实在找不出,请教同学和老师,在代码中将错误该正过来。六、

- 12 -

课程设计总结

这两周的课程设计开始蛮难过的,游戏的界面很容易就可以做好,但是代码就很麻烦了,所以只好找书,在网上搜代码,经过努力还是做好了。但是在这过程中出现了不少问题,通过老师同学的帮忙最终还是弄好了,这个还是蛮欣慰的。虽然我的代码不是自己写的,但是通过这次的课程设计,我还是学会了很多东西,慢慢能弄懂代码,知道它的功能,收获蛮大的。

C#因其设计的合理性与简洁化使其成为了一门很容易入门的编程语言,但要真正学好还是需要努力学习的。通过一个学期的学习我们也算入门了,而以后编程的道路还很漫长。更多的练习,更多的源代码阅读将是我们能力提高的必经之路。相信经过努力,我们终会熟练地掌握这门语言。

七、参考文献

[1] 段德亮,余健,张仁才.C#课程设计案例精编,2008,6. [2] 缪勇,李新峰,付志涛. Visual C#学习笔记,2008,5.

- 13 -

本文来源:https://www.bwwdw.com/article/xo6f.html

Top