打砖块游戏课程设计报告分解.docx

上传人:b****8 文档编号:29869515 上传时间:2023-08-03 格式:DOCX 页数:20 大小:951.24KB
下载 相关 举报
打砖块游戏课程设计报告分解.docx_第1页
第1页 / 共20页
打砖块游戏课程设计报告分解.docx_第2页
第2页 / 共20页
打砖块游戏课程设计报告分解.docx_第3页
第3页 / 共20页
打砖块游戏课程设计报告分解.docx_第4页
第4页 / 共20页
打砖块游戏课程设计报告分解.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

打砖块游戏课程设计报告分解.docx

《打砖块游戏课程设计报告分解.docx》由会员分享,可在线阅读,更多相关《打砖块游戏课程设计报告分解.docx(20页珍藏版)》请在冰豆网上搜索。

打砖块游戏课程设计报告分解.docx

打砖块游戏课程设计报告分解

第1章程序设计专题目的与要求1

1.1程序设计目的1

1.2程序设计的实验环境1

1.3程序设计的预备知识1

1.4程序设计要求1

第2章程序设计内容2

2.1概要设计2

2.2程序整体设计说明2

2.3程序部分源代码及注释8

2.4测试结果12

第3章程序设计总结13

参考文献14

 

第1章程序设计目的与要求

1.1程序设计目的

《C#.Net程序设计》是计算机科学与技术专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是软件技术专业学生学习完《C#.Net程序设计》课程后,进行的一次全面的综合训练,C#.Net程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2程序设计的实验环境

硬件要求能运行Windowsxp操作系统的微机系统。

C#.Net程序设计语言及相应的集成开发环境visual。

1.3程序设计的预备知识

熟悉c#语言及visual集成开发环境。

1.4程序设计要求

按程序设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握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

{

///

///处理球碰到砖块后弹的方向(上下)

///

///砖的X坐标

///砖的Y坐标

///砖的水平长度

///砖的高度

///球的X坐标

///球的Y坐标

///球的直径

///返回string类型值

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;

}

///

///处理球碰到砖块后弹的方向(左右)

///

///砖的X坐标

///砖的Y坐标

///砖的水平长度

///砖的高度

///球的X坐标

///球的Y坐标

///球的直径

///返回string类型值

///

///处理球碰撞到砖块后的动作

///

///砖块的坐标

///球的X坐标

///球的Y坐标

///球的直径

///目前X方向

///目前Y方向

///RreturnDataDbean类型值

publicstaticReturnDataBeanDisposeBrick(Point[]point,intqx,intqy,intqr,stringxfangxiang,stringyfangxiang)

rnrdb;

}

}

}

2.2.2.程序窗体

2.2.2.1程序主界面

进入游戏时的主界面,可以选择开始、帮助和退出功能。

2.2.2.1程序主界面

 

2.2.2.2游戏界面

游戏开始前的画面,显示游戏信息,分数、关卡、及生命次数。

2.2.2.2游戏界面

2.2.2.3帮助界面

帮助信息,是关于游戏如何开始,介绍游戏玩法,以及开发作者的游戏说明。

2.2.2.3帮助界面

2.2.2.4开始游戏

进入游戏之后,游戏开始画面,空格开始游戏,可以通过键盘的←、→来控制挡板的移动。

2.2.2.4开始游戏

2.2.2.5游戏结束

游戏结束画面,当你用完所有的生命时,会弹出此窗口,提示你所得分数,游戏结束,可退出。

2.2.2.5游戏结束

2.2.2.6游戏过关提示

当你打光所有砖块时,屏幕会出现此字样,提示你点击进入下一关,显示剩余生命值。

2.2.2.6游戏过关

2.2.3异常处理说明

退出命令。

用户可直接退出程序。

注意,如果在游戏过程中鼠标点击别的地方,或关闭别的文件,此时游戏会继续运行,只要点击窗口则会继续进行。

2.2.4程序运行效果及存在的问题

2.2.4.1未处理问题

2.2.4.1未处理问题

2.3程序部分源代码及注释

2.3.1RussiaBlock类

以下涉及的词语基本块指的是由四个小方块构成的实体,四个小方块指的是小正方形。

方块与基本块同义。

1)构造函数,通过给定的参数:

控件实例,左边界,底边界,小方块(一个基本块由4个小方块构成)单位象素,形状号,起始位置,颜色。

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];//封装pictureBox对象

stringkeySpace="";//是否按下空格键

stringkey="";//是否按下左右键

stringxfangxiang="XRight";//X方向默认为右

stringyfangxiang="YTop";//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=="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;

}

}

3)游戏结束代码

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)

{

}

}

}

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

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1