打砖块游戏课程设计报告分解Word格式文档下载.docx
《打砖块游戏课程设计报告分解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《打砖块游戏课程设计报告分解Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
掌握c#.net2003的基本技能和面向对象的概念和方法;
了解windows编程。
同时培养学生进行分析问题、解决问题的能力;
培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
第2章程序设计内容
2.1程序设计题目
打砖块游戏:
作为我们一款熟知的游戏我想大家都不陌生吧,就是通过挡板把小球挡回,不让小球落地,直到打光所有砖块为止,游戏过关进入更难得模式小球速度更快,砖块组成的图案发生改变,是一个很有趣味的小游戏。
2.2程序整体设计说明
2.2.1程序设计内容
1.需求分析
本系统为一个用C#实现的为我们所熟悉的简单的打砖块游戏,该系统的具体功能如下:
1)能简便的开始游戏,游戏中的功能与日常我们所熟悉的游戏的功能一致,直到砖块全部打光过关和在砖块打光之前机会用完游戏结束功能;
2)当游戏结束时会自动弹出消息框提示本关所获得得分数;
3)当过关时会出现提示图片,点击进入下一关,下一关的方块位置和所组成的形状会发生改变
2设计环境
本程序选择VisualStudio2008作为实验环境。
3.程序设计内容和思路
1)游戏设计游戏开始时,小球会停在挡板正中间,而且此时小球可以随着挡板左右自由移动,当按下空格键小球弹出,并在程序设定的区域中不停碰撞反弹。
2)当小球碰撞到墙壁、挡板、和砖块的时候,均以相同的速度反弹,并且砖块被碰撞后会以相同的速度反弹,并且当砖块被碰撞后会消失。
3)挡板可以左右移动以接住小球,若超过三次没有接住,则游戏结束,按退出键退出,当所有砖块全部打光时则出现进入下一关的提示框,点击进入下一关。
2.2.1.1程序中所用类说明
根据设计思路,可以为系统设计三个类,实现小球的类RussiaBlock继承Object类,主窗体类MainForm类,设置窗体类SettingForm类。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Drawing;
namespaceArkanoid
{
classDisposeDAO
{
///<
summary>
///处理球碰到砖块后弹的方向(上下)
/summary>
paramname="
bx"
>
砖的X坐标<
/param>
by"
砖的Y坐标<
bw"
砖的水平长度<
bh"
砖的高度<
qx"
球的X坐标<
qy"
球的Y坐标<
qr"
球的直径<
returns>
返回string类型值<
/returns>
publicstaticstringDisposeTopDown(intbx,intby,intbw,intbh,intqx,intqy,intqr)
stringYfangxiang="
"
;
intf=0;
//方向
if(Math.Abs(by-(qy+qr))<
=2)
f=1;
//从上碰撞到球
}
elseif(Math.Abs(qy-(by+bh))<
f=2;
//从下碰撞到球
if(f==1)
Yfangxiang="
YTop"
elseif(f==2)
YDown"
returnYfangxiang;
///处理球碰到砖块后弹的方向(左右)
///处理球碰撞到砖块后的动作
point"
砖块的坐标<
xfangxiang"
目前X方向<
yfangxiang"
目前Y方向<
RreturnDataDbean类型值<
publicstaticReturnDataBeanDisposeBrick(Point[]point,intqx,intqy,intqr,stringxfangxiang,stringyfangxiang)
rnrdb;
}
2.2.2.程序窗体
2.2.2.1程序主界面
进入游戏时的主界面,可以选择开始、帮助和退出功能。
2.2.2.2游戏界面
游戏开始前的画面,显示游戏信息,分数、关卡、及生命次数。
2.2.2.2游戏界面
2.2.2.3帮助界面
帮助信息,是关于游戏如何开始,介绍游戏玩法,以及开发作者的游戏说明。
2.2.2.4开始游戏
进入游戏之后,游戏开始画面,空格开始游戏,可以通过键盘的←、→来控制挡板的移动。
2.2.2.5游戏结束
游戏结束画面,当你用完所有的生命时,会弹出此窗口,提示你所得分数,游戏结束,可退出。
2.2.2.6游戏过关提示
当你打光所有砖块时,屏幕会出现此字样,提示你点击进入下一关,显示剩余生命值。
2.2.2.6游戏过关
2.2.3异常处理说明
退出命令。
用户可直接退出程序。
注意,如果在游戏过程中鼠标点击别的地方,或关闭别的文件,此时游戏会继续运行,只要点击窗口则会继续进行。
2.2.4程序运行效果及存在的问题
2.2.4.1未处理问题
2.3程序部分源代码及注释
2.3.1RussiaBlock类
以下涉及的词语基本块指的是由四个小方块构成的实体,四个小方块指的是小正方形。
方块与基本块同义。
1)构造函数,通过给定的参数:
控件实例,左边界,底边界,小方块(一个基本块由4个小方块构成)单位象素,形状号,起始位置,颜色。
2)程序部分源代码及注释
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Windows.Forms;
usingSystem.Threading;
publicpartialclassGameCol1:
Form
publicGameCol1()
InitializeComponent();
Point[]pointPic=newPoint[50];
//封装pictureBox对象
stringkeySpace="
//是否按下空格键
stringkey="
//是否按下左右键
stringxfangxiang="
XRight"
//X方向默认为右
stringyfangxiang="
//Y方向默认为上
intx=4;
//X坐标移动方向
inty=4;
//Y坐标移动方向
publicstaticintcount=3;
//剩余机会
intbw=0;
//砖块宽度
intbh=0;
//砖块高度
intqr=0;
//球的直径
Pointdispoint=newPoint(999,999);
//移动砖块到XY位置
publicstaticintscore=0;
//得分
int_count=-1;
intcountB=50;
ReturnDataBeanrdb=newReturnDataBean();
//控制球的移动timer事件
privatevoidtimer1_Tick(objectsender,EventArgse)
_count=-1;
//击中的哪一个砖块
if(countB==0)
keySpace="
Stop"
xfangxiang="
yfangxiang="
this.picNext.Location=newPoint(12,254);
//右上
if(keySpace=="
Space"
&
&
xfangxiang=="
yfangxiang=="
)
this.TopRight();
//左下
elseif(keySpace=="
XLeft"
this.TopLeft();
this.DownLeft();
//右下
this.DownRight();
//判断是否击中球
if(_count>
=0&
_count<
50)
this.IsScore(_count);
//按下键盘键发生事件
privatevoidGameCol1_KeyDown(objectsender,KeyEventArgse)
if(e.KeyCode==Keys.Left)
key=e.KeyCode.ToString();
if(e.KeyCode==Keys.Right)
if(e.KeyCode==Keys.Space)
keySpace=e.KeyCode.ToString();
//释放键盘键发生事件
privatevoidGameCol1_KeyUp(objectsender,KeyEventArgse)
key="
//单击退出键发生事件
privatevoidlblClose_Click(objectsender,EventArgse)
GameMain.isLoginGame=false;
Program.bol=true;
this.Close();
privatevoidlblClose_MouseEnter(objectsender,EventArgse)
this.lblClose.ForeColor=Color.Red;
privatevoidlblClose_MouseLeave(objectsender,EventArgse)
this.lblClose.ForeColor=Color.Black;
privatevoidgoFeichuan_Tick(objectsender,EventArgse)
if(key=="
Left"
PointFpoint=this.picFeichuan.Location;
PointQpoint=this.picQiu.Location;
if(this.picFeichuan.Location.X>
=(this.picLeftborder.Location.X+18))
Fpoint.X-=10;
Qpoint.X-=10;
this.picFeichuan.Location=Fpoint;
this.picQiu.Location=Qpoint;
elseif(key=="
Right"
if(this.picFeichuan.Location.X<
=(this.picRightborder.Location.X-97))
Fpoint.X+=10;
Qpoint.X+=10;
3)游戏结束代码
usingSystem.IO;
publicpartialclassGameOver:
publicGameOver()
privatevoidlblExit_Click(objectsender,EventArgse)
Application.Exit();
privatevoidlblExit_MouseEnter(objectsender,EventArgse)
this.lblExit.ForeColor=Color.Red;
privatevoidlblExit_MouseLeave(objectsender,EventArgse)
this.lblExit.ForeColor=Color.Black;
privatevoidGameOver_Load(objectsender,EventArgse)
this.lblScore.Text=GameCol1.score.ToString();
privatevoidlabel1_Click(objectsender,EventArgse)
2.4测试结果
2.4.1主窗体运行界面
编程完毕后,运行调试,主窗体界面,及游戏信息。
2.4.1主窗体运行界面
第3章程序设计总结
在期末的课程设计中,我选择的是设计一个游戏(打砖块),这对于我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程毕竟以前没有做过这类的课设,缺乏一定的经验,现在利用自己学到的知识设计并制作一个游戏,这本身就是一个知识转化为生产力的过程,所以我很兴奋,投入了很高的热情和努力
在具体设计和实施中,我感受到了一个程序与无到有的过程,对具体的设计步骤,思路,方法,技巧都有了进一步的了解,并且感受深刻。
在设计中我基本按照规范的方法和步骤进行,首先调查这个游戏,并查阅相关资料,然后确定设计方案,最后设计并制作,实施过程中我深刻的认识到认真做游戏的重要性。
一开始由于不细心出现了错误,这方面我应该加强。
在这次设计中我们两人一组,分工和相互协调很重要,我们扬长避短,各及所长和合作意识并有效地缩短开发时间。
通过这次的设计,我学到了很多,同时也学到了细心与耐心的培养。
我想这在将来的工作或者社会“旅程”中都将起到很大的作用,同时也学会了如何与人相处,与他人配合,共同完成这份作业。
在此我要感谢我的任课老师以及我的指导老师,由衷的感谢你们!
参考文献
1.余仁才《C#课程设计教程》2001.5
2.罗飞《VisualC#编程实例精粹》2002.3
3.郑敬东《C#程序设计教程》2004.9
4.罗斌越飞等编著《VisualC#2005编程实例精粹》2005.3
5.郑阿奇梁敬东主编《C#程序设计教程》2005.9
6.张家祥方凌江张贤坤何鑫等编著《C#范例解析》2006.5
7.段德亮,余健,张仁才编《C#课程设计案例精编》2004。
5
8.刘洪成《C#高级教程》清华大学出版社2003
9.张祥张鑫《C#范例解析》2004.5
10.张凌江《C#范例解析》2004.5
11.孙永强等.VisualC#.NET入门与提高.北京:
清华大学出版社.2002
12.B-power工作室.C#网络程序设计.北京:
中国铁道出版社.2001
13.[美]AndersHejlsberg,ScottWiltamuth,PeterGolde著,张晓坤谭立平车树良译《C#编程语言详解》.北京:
电子工业出版社.2004