C#课程设计贪吃蛇.docx
《C#课程设计贪吃蛇.docx》由会员分享,可在线阅读,更多相关《C#课程设计贪吃蛇.docx(12页珍藏版)》请在冰豆网上搜索。
![C#课程设计贪吃蛇.docx](https://file1.bdocx.com/fileroot1/2023-1/28/93879f44-3a22-4c7d-bff3-65eccfbe6851/93879f44-3a22-4c7d-bff3-65eccfbe68511.gif)
C#课程设计贪吃蛇
目录
一、课程设计的目的与要求2
二、题目说明2
2.1程序开发背景2
2.2发工具介绍3
三、总体设计3
四、详细说明6
4.1系统实施6
五、遇到的问题和解决方法12
七、参考文献13
一、课程设计的目的与要求
我们在学习面向过程的编程基础上学习面向对象编程,也是为了能更好的去理解面向对象的含义以及与面向过程的区别.学习这门可视化编程语言,使我们在运用语言编写程序的过程中,能更直观的编写出我们理想中的程序,而且也使我们的编译工作变单易行.C#的出现弥补了C语言家族的不足,它具有更强大的功能、具有VB开发的高效性和方便性.
我们学习这门语言的目的,不是仅仅的理论研究,作为语言,它只是一种工具,因此学习它更重要的是运用它来做有用的程序,这也就是说学习它重在应用.在实践的基础上对它能更好的掌握,而进行简单的设计就是一种很有效的学习实践方式,这也就是我们学习的主要目的:
旨在培养学生的上机动手能力和在本课程内初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计急今后从事专业工作打下坚实的基础.
要求:
1.熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS。
2.掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。
3.掌握常用控件以及控件的常用属性的使用方法。
4.程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。
5.软件界面美观大方,操作简洁易用,功能完备可靠。
二、题目说明
贪吃蛇是一款经典游戏,游戏通过adws方向键控制贪吃蛇移动并吃掉屏幕上出现的实物,不能碰到墙壁和自己的身体。
游戏开始可以选择贪吃蛇移动的速度,速度越快迟到果实的得分也就越高。
2.1程序开发背景
MicrosoftVisualC#2005是一款入门级程序,visualbasic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。
贪吃蛇游戏非常普遍,几乎所有手机上都有这种游戏,它可以在上班、学习比较累的时侯娱乐一下。
这款游戏操作简单,界面整洁,是非常好的游戏。
2.2发工具介绍
此程序使用MicrosoftVisualC#2005ExpressEdition工具开发的,虽然VisualC#2005ExpressEdition是一款入门级的集成开发环境,但是它同样具有强大的功能,完全可以满足学生和新手的需要,主要功能如下:
与ANSI兼容的C#2.0编译器、功能齐全的集成调试器、高级IntelliSense功能、针对Windows窗体开发的设计时支持、支持本地数据库访问和轻松访问XMLWeb服务等
VisualStudio是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序
三、总体设计
贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。
作为一个完整的程序,尤其是一个完整的游戏,必须考虑人机交流与用户体验。
实现思路及具体代码:
1.初始化:
publicmainForm()
{
//
//Windows窗体设计器支持所必需的
//
InitializeComponent();
//
//TODO:
在InitializeComponent调用后添加任何构造函数代码
//
}
2.游戏设置:
this.menuItem1.Text="游戏设置";
//
//menuItem2
//
this.menuItem2.Index=0;
this.menuItem2.Text="蛇体颜色设置";
this.menuItem2.Click+=newSystem.EventHandler(this.menuItem2_Click);
//
//menuItem3
//
this.menuItem3.Index=1;
this.menuItem3.Text="食物颜色设置";
this.menuItem3.Click+=newSystem.EventHandler(this.menuItem3_Click);
//
//menuItem4
//
this.menuItem4.Index=2;
this.menuItem4.MenuItems.AddRange(newSystem.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+=newSystem.EventHandler(this.menuItem8_Click);
//
//menuItem9
//
this.menuItem9.Index=1;
this.menuItem9.Text="大鸟";
this.menuItem9.Click+=newSystem.EventHandler(this.menuItem9_Click);
//
//menuItem10
//
this.menuItem10.Index=2;
this.menuItem10.Text="老鸟";
this.menuItem10.Click+=newSystem.EventHandler(this.menuItem10_Click);
//
//menuItem11
//
this.menuItem11.Index=3;
this.menuItem11.Text="自虐";
this.menuItem11.Click+=newSystem.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.是否结束游戏:
//开始游戏
privatevoidStartGame()
{
drawDelegate=newDrawDele(PutFood);
this.Invoke(drawDelegate,null);
while(true)
{
Thread.Sleep(speed);
if(this.IsGameOver())
{
MessageBox.Show("GAMEOVER");
try
{
this.game.Abort();
}
catch
{
}
}
四、详细说明
4.1系统实施
1.游戏界面
图1开始界面
2.开始前的游戏设置
图2游戏设置
介绍:
该操作可以设置蛇的颜色、食物的颜色,以及游戏的难度。
具体代码:
this.menuItem1.Text="游戏设置";
//
//menuItem2
//
this.menuItem2.Index=0;
this.menuItem2.Text="蛇体颜色设置";
this.menuItem2.Click+=newSystem.EventHandler(this.menuItem2_Click);
//
//menuItem3
//
this.menuItem3.Index=1;
this.menuItem3.Text="食物颜色设置";
this.menuItem3.Click+=newSystem.EventHandler(this.menuItem3_Click);
//
//menuItem4
//
this.menuItem4.Index=2;
this.menuItem4.MenuItems.AddRange(newSystem.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+=newSystem.EventHandler(this.menuItem8_Click);
//
//menuItem9
//
this.menuItem9.Index=1;
this.menuItem9.Text="大鸟";
this.menuItem9.Click+=newSystem.EventHandler(this.menuItem9_Click);
//
//menuItem10
//
this.menuItem10.Index=2;
this.menuItem10.Text="老鸟";
this.menuItem10.Click+=newSystem.EventHandler(this.menuItem10_Click);
//
//menuItem11
//
this.menuItem11.Index=3;
this.menuItem11.Text="自虐";
this.menuItem11.Click+=newSystem.EventHandler(this.menuItem11_Click);
//
//menuExit
//
this.menuExit.Index=3;
this.menuExit.Text="退出";
3.当程序运行,点击开始按钮后的界面
图3开始界面
控制键的具体代码:
//接受键盘事件处理
privatevoidmainForm_KeyPress(objectsender,KeyPressEventArgse)
{
if(e.KeyChar=='a')
this.snake.SnakeWay=(this.snake.SnakeWay==Way.EAST)?
Way.EAST:
Way.WEST;
elseif(e.KeyChar=='d')
this.snake.SnakeWay=(this.snake.SnakeWay==Way.WEST)?
Way.WEST:
Way.EAST;
elseif(e.KeyChar=='w')
this.snake.SnakeWay=(this.snake.SnakeWay==Way.SOUTH)?
Way.SOUTH:
Way.NORTH;
elseif(e.KeyChar=='s')
this.snake.SnakeWay=(this.snake.SnakeWay==Way.NORTH)?
Way.SOUTH:
Way.SOUTH;
elseif(e.KeyChar==32)
{
4.当程序运行,蛇每吃到一个食物,积分就增加10分
图4游戏积分
游戏积分的代码:
if(this.snake.Eat(this.foodPoint))
{
//改变积分
this.textBox1.Text=System.Convert.ToString(++this.foodCount*10);
5.当蛇死亡后游戏结束的图
图5蛇死亡
游戏结束的代码:
if(this.IsGameOver())
{
MessageBox.Show("GAMEOVER");
try
{
this.game.Abort();
}
catch
{
}
}
五、遇到的问题和解决方法
1.问题:
代码经常出错,不会改。
解决方法:
通过c#相关书籍,和网上搜查,以及请教老师、同学。
2.问题:
程序代码经常出现“上下文无该文件名”的问题,以至于程序不能运行。
解决方法:
检查代码,实在找不出,请教同学和老师,在代码中将错误该正过来。
六、课程设计总结
这两周的课程设计开始蛮难过的,游戏的界面很容易就可以做好,但是代码就很麻烦了,所以只好找书,在网上搜代码,经过努力还是做好了。
但是在这过程中出现了不少问题,通过老师同学的帮忙最终还是弄好了,这个还是蛮欣慰的。
虽然我的代码不是自己写的,但是通过这次的课程设计,我还是学会了很多东西,慢慢能弄懂代码,知道它的功能,收获蛮大的。
C#因其设计的合理性与简洁化使其成为了一门很容易入门的编程语言,但要真正学好还是需要努力学习的。
通过一个学期的学习我们也算入门了,而以后编程的道路还很漫长。
更多的练习,更多的源代码阅读将是我们能力提高的必经之路。
相信经过努力,我们终会熟练地掌握这门语言。
七、参考文献
[1]段德亮,余健,张仁才.C#课程设计案例精编,2008,6.
[2]缪勇,李新峰,付志涛.VisualC#学习笔记,2008,5.