大学课程设计报告打砖块游戏设计课程设计报告.docx
- 文档编号:15145286
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:19
- 大小:499.54KB
大学课程设计报告打砖块游戏设计课程设计报告.docx
《大学课程设计报告打砖块游戏设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《大学课程设计报告打砖块游戏设计课程设计报告.docx(19页珍藏版)》请在冰点文库上搜索。
大学课程设计报告打砖块游戏设计课程设计报告
学号
2016-2017学年第一学期
1608220203
《Windows程序设计》
课程设计报告
题目:
打砖块游戏设计
专业:
班级:
姓名:
指导教师:
成绩:
二0一六年十一月十五日
1.设计目的与要求
1.1设计目的
通过打砖块游戏设计,加深我对理论教学内容的理解和掌握VisualStudio中Windows窗体的建立及窗体中各个控件的使用,以及界面的设计。
同时熟悉C#语言的编程,提高分析和解决实际问题的能力,了解基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2设计要求
界面要求:
要求界面简洁美观,简单易用。
设计要求:
按程序设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握c#.net2003的基本技能和面向对象的概念和方法;了解windows编程。
同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
2.设计内容
2.1内容简介
打砖块游戏:
作为我们一款熟知的游戏我想大家都不陌生吧,就是通过挡板把小球挡回,不让小球落地,直到打光所有砖块为止,游戏过关进入更难得模式小球速度更快,砖块组成的图案发生改变,是一个很有趣味的小游戏。
2.2设计说明
2.2.1需求分析
本系统为一个用C#实现的为我们所熟悉的简单的打砖块游戏,该系统的具体功能如下:
(1)能简便的开始游戏,游戏中的功能与日常我们所熟悉的游戏的功能一致,直到砖块全部打光过关和在砖块打光之前机会用完游戏结束功能;
(2)当游戏结束时会自动弹出消息框提示本关所获得得分数;
(3)当过关时会出现提示图片,点击进入下一关,下一关的方块位置和所组成的形状会发生改变。
2.2.2设计环境
本程序选择VisualStudio2012作为开发环境。
硬件要求能运行Windows操作系统的微机系统。
C#.Net程序设计语言及相应的集成开发环境visual。
2.2.3设计内容和思路
(1)游戏设计游戏开始时,小球会停在挡板正中间,而且此时小球可以随着挡板左右自由移动,当按下空格键小球弹出,并在程序设定的区域中不停碰撞反弹。
(2)当小球碰撞到墙壁、挡板、和砖块的时候,均以相同的速度反弹,并且砖块被碰撞后会以相同的速度反弹,并且当砖块被碰撞后会消失。
(3)挡板可以左右移动以接住小球,若超过三次没有接住,则游戏结束,按退出键退出,当所有砖块全部打光时则出现进入下一关的提示框,点击进入下一关。
2.2.4程序中所用类说明
(1)根据设计思路,可以为系统设计三个类,实现小球的类RussiaBlock继承Object类,主窗体类MainForm类,设置窗体类SettingForm类。
(2)构造函数,通过给定的参数:
控件实例,左边界,底边界,小方块(一个基本块由4个小方块构成)单位象素,形状号,起始位置,颜色。
3.实现过程
3.1主界面
进入游戏时的主界面,可以选择开始、帮助和退出功能。
按钮原代码提示:
publicsubForm1_Load(senderASObject,eASEventArgs)
{Button1.Left=650;
Button1.Top=590;
Button1.Text="始游戏";
Button2.Left=750
Button2.Top=590;
Button2.Text="退出游戏";
Button3.Left=850
Button3.Top=590;
Button3.Text="帮助";
图1开始界面
3.2游戏界面
游戏开始前的画面,显示游戏信息,分数、关卡、及生命次数。
游戏信息:
提示你该如何进行游戏,了解更多的游戏规则,从而顺利的完成游戏。
关卡/分数:
通过代码的控制,在游戏中,可以显示你通过每个关卡时的分数。
生命次数:
提示你在开始游戏后,已经用掉几条命,还剩几次机会可以用。
按钮代码提示:
Button4.Left=650;
Button4.Top=625;
Button4.Text="分数";
Button5.LEFT=650;
Button5.yop=625;
Button5.TEXT="关卡";
图2游戏过程
3.3帮助界面
帮助信息里面介绍了游戏如何去开始,开始后游戏如何去玩,如何玩的更好,同时也介绍了整个游戏的设计说明,让玩着更了解此项游戏,从而让玩者轻松,愉快的开始游戏。
图3游戏说明
3.4开始/结束游戏
开始游戏:
进入游戏之后,游戏开始画面,空格开始游戏,可以通过键盘的←、→来控制挡板的移动。
游戏结束:
游戏结束画面,当你用完所有的生命时,会弹出此窗口,提示你所得分数,游戏结束,可退出。
部分代码提示:
{
if(e.KeyCode==Keys.Left)
{
key=e.KeyCode.ToString();
}
if(e.KeyCode==Keys.Right)
{
key=e.KeyCode.ToString();
}
if(e.KeyCode==Keys.Space)
{
keySpace=e.KeyCode.ToString();
}
}
//释放键盘键发生事件
{
key="";
}
//单击退出键发生事件
if(key=="Left")
{
PointFpoint=this.picFeichuan.Location;
PointQpoint=this.picQiu.Location;
if(this.picFeichuan.Location.X>=(this.picLeftborder.Location.X+18)){
Fpoint.X-=10;
if(keySpace=="")
{
Qpoint.X-=10;
}
}
this.picFeichuan.Location=Fpoint;
this.picQiu.Location=Qpoint;
}
elseif(key=="Right")
{
PointFpoint=this.picFeichuan.Location;
PointQpoint=this.picQiu.Location;
if(this.picFeichuan.Location.X<=(this.picRightborder.Location.X-97)){
Fpoint.X+=10;
if(keySpace=="")
{
Qpoint.X+=10;
}
}
this.picFeichuan.Location=Fpoint;
this.picQiu.Location=Qpoint;
}
}
图4开始游戏
图5结束游戏
3.5游戏过关提示
当你打光所有砖块时,屏幕会出现此字样,提示你点击进入下一关,显示剩余生命值。
然后可以根据自己的需求选择继续游戏,还是退出游戏。
代码提示:
if(num=0)
{
Message.Box.Show("恭喜!
请点击进入下一关!
")
Button1.Enabled=False;
endif
图6过关提示
3.6异常处理说明
退出命令。
用户可直接退出程序。
注意,如果在游戏过程中鼠标点击别的地方,或关闭别的文件,此时游戏会继续运行,只要点击窗口则会继续进行。
4.设计心得
这次的课程设计中,我选择的是设计打砖块游戏,缺乏一定的经验的我,虽然过程中遇到了一些问题,但在老师的帮助下和自己查看一些资料,最终都解决了。
在具体设计和实施中,我感受到了一个程序从无到有的过程,对具体的设计步骤,思路,方法,技巧都有了进一步的了解,并且感受深刻。
通过这次的设计,我学到了很多,比如:
巩固和加深了对C#的理解,提高综合运用本课程所学知识的能力以及培养了我选用参考书及文献资料的能力,深入研究,分析问题、解决问题的能力。
同时也得到了细心与耐心的培养,认识到自己的不足。
我想这在将来的工作或者社会“旅程”中都将起到很大的作用。
在此我要感谢我的任课老师以及我的指导老师,由衷的感谢你们!
5.参考文献
[1]郑阿奇,梁敬东等.C#实用教程[M].电子工业出版社,2009
[2]刘洪成.C#高级教程[M].清华大学出版社,25003
[3]孙永强等.VisualC#.NET入门与提高[M].北京:
清华大学出版社,2002
[4]段德亮,余健,张仁才.C#课程设计案例精编[M].清华大学出版社,2004
[5]罗斌,越飞等.VisualC#2005编程实例精粹[M].中国水利水电出版社,2005
[6]王进强.VisualBasic.Net基础教程[M].清华大学出版社,2004
6.附录
1)类RussiaBlock继承Object类,主窗体类MainForm类,设置窗体类SettingForm类。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Drawing;
namespaceArkanoid
{
classDisposeDAO
{
///
///处理球碰到砖块后弹的方向(上下)
///
///
///
///
///
///
///
///
///
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))<=2)
{
f=2;//从下碰撞到球
}
if(f==1)
{
Yfangxiang="YTop";
}
elseif(f==2)
{
Yfangxiang="YDown";
}
returnYfangxiang;
}
///
///处理球碰到砖块后弹的方向(左右)
///
///
///
///
///
///
///
///
///
///
///处理球碰撞到砖块后的动作
///
///
///
///
///
///
///
///
publicstaticReturnDataBeanDisposeBrick(Point[]point,intqx,intqy,intqr,stringxfangxiang,stringyfangxiang)
rnrdb;
}
}
}
2)程序部分源代码及注释
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Threading;
namespaceArkanoid{
publicpartialclassGameCol1:
Form{
publicGameCol1(){
InitializeComponent();}
Point[]pointPic=newPoint[50];
stringkeySpace="";
stringkey="";
stringxfangxiang="XRight";
Xstringyfangxiang="YTop";
Yintx=4;//Xinty=4;
Ypublicstaticintcount=3;
intbw=0;intbh=0;intqr=0;
Pointdispoint=newPoint(999,999);
publicstaticintscore=0;
int_count=-1;intcountB=50;
ReturnDataBeanrdb=newReturnDataBean();
//控制球的移动timer事件封装pictureBox对象是否按下空格键是否按下左右键方向默认为右方向默认为上坐标移动方向坐标移动方向剩余机会砖块宽度砖块高度球的直径移动砖块到XY位置得分
privatevoidtimer1_Tick(objectsender,EventArgse)
{
_count=-1;//击中的哪一个砖块
if(countB==0)
{
keySpace="Stop";
xfangxiang="";
yfangxiang="";
this.picNext.Location=newPoint(12,254);
}
//右上
if(keySpace=="Space"&&xfangxiang=="XRight"&&yfangxiang=="YTop"){
this.TopRight();
}
//左下
elseif(keySpace=="Space"&&xfangxiang=="XLeft"&&yfangxiang=="YTop"){
this.TopLeft();
}
//左下
elseif(keySpace=="Space"&&xfangxiang=="XLeft"&&yfangxiang=="YDown"){
this.DownLeft();
}
//右下
elseif(keySpace=="Space"&&xfangxiang=="XRight"&&yfangxiang=="YDown"){
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)
{
key=e.KeyCode.ToString();
}
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;
if(keySpace=="")
{
Qpoint.X-=10;
}
}
this.picFeichuan.Location=Fpoint;
this.picQiu.Location=Qpoint;
}
elseif(key=="Right")
{
PointFpoint=this.picFeichuan.Location;
PointQpoint=this.picQiu.Location;
if(this.picFeichuan.Location.X<=(this.picRightborder.Location.X-97)){
Fpoint.X+=10;
if(keySpace=="")
{
Qpoint.X+=10;
}
}
this.picFeichuan.Location=Fpoint;
this.picQiu.Location=Qpoint;
}
}
//游戏结束代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
namespaceArkanoid
{
publicpartialclassGameOver:
Form
{
publicGameOver()
{
InitializeComponent();
}
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){
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 课程设计 报告 砖块 游戏 设计