辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx

上传人:b****6 文档编号:5922050 上传时间:2023-01-02 格式:DOCX 页数:17 大小:72.96KB
下载 相关 举报
辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx_第1页
第1页 / 共17页
辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx_第2页
第2页 / 共17页
辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx_第3页
第3页 / 共17页
辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx_第4页
第4页 / 共17页
辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx

《辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx》由会员分享,可在线阅读,更多相关《辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx(17页珍藏版)》请在冰豆网上搜索。

辽宁工程技术大学JAVA俄罗斯方块课程设计模板.docx

辽宁工程技术大学JAVA俄罗斯方块课程设计模板

 

软件学院

课程设计报告书

 

课程名称面向对象程序设计

设计题目俄罗斯方块

专业班级财升本11-1

学号1120970105

姓名

指导教师徐娇月

 

2011年12月

目录

1设计时间1

2设计目的1

3设计任务1

4设计内容1

4.1需求分析1

4.1.1系统功能模块示意图1

4.2俄罗斯方块各个功能模块图设计2

4.2.1模型层(Model)功能模块图设计2

4.2.2视图层(View)功能模块图设计2

4.2.3控制层(Controller)功能模块图设计2

4.3编程步骤3

4.3.1方块的显示3

4.4游戏界面演示14

4.5程序测试结果16

5总结与展望17

参考文献18

成绩评定16

1设计时间

17周(2011年12月19~2011年12月25日)

2设计目的

Java课程设计是对所学面向对象课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。

要求同学们对理论课中所学习到的知识综合运用,实现有一定规模的Java应用.

3设计任务

俄罗斯方块

要实现的功能如下:

(1)游戏区:

玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况。

(2)游戏控制:

玩家可以通过游戏控制功能来选择开始新的一局游戏,暂停或退出游戏。

(3)级别设置:

玩家可以根据自己的需要自行设定游戏的开始级别,级别越高,游戏的速度越快,难度越大。

4设计内容

4.1需求分析

学习了《Java面向对象编程》的课程,为了更进一步的提高我们对Java的深入学习,进行了一周的课程设计,我所选择课程设计是利用Java设计一个简单的俄罗斯方块游戏。

其目的是通过本课程设计使我们能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。

4.1.1系统功能模块示意图

图1――系统功能模块示意图

4.2俄罗斯方块各个功能模块图设计

4.2.1模型层(Model)功能模块图设计

图2――模型层功能模块图

4.2.2视图层(View)功能模块图设计

图3――视图层功能模块图

4.2.3控制层(Controller)功能模块图设计

图4――控制层功能模块图

4.3编程步骤

4.3.1方块的显示

1.用JAVA-MyEclipse中的JavaProject建立一个新项目。

2.创建界面类:

publicclassErsBlocksGameextendsJFrame{

publicfinalstaticintalinescore=100;

publicfinalstaticinteverylevelscore=alinescore*20;

publicfinalstaticintmaxlevel=10;

publicfinalstaticintinitlevel=5;

privateGameCanvascanvas;

privateErsBlockblock;

privatebooleanplaying=false;

privateControlPanelctrlPanel;

privateJMenuBarbar=newJMenuBar();

privateJMenu

mGame=newJMenu("游戏"),

mControl=newJMenu("控制"),

mhelp=newJMenu("帮助");

privateJMenuItem

miNewGame=newJMenuItem("新游戏"),

milevelup=newJMenuItem("提高级数"),

mileveldown=newJMenuItem("降低级数"),

miExit=newJMenuItem("退出"),

miPlay=newJMenuItem("开始"),

miPause=newJMenuItem("暂停"),

miResume=newJMenuItem("重新开始"),

miStop=newJMenuItem("停止"),

miCtrlBlock=newJMenuItem("方块控制键");

3设置窗体的大小:

setSize(315,392);

4设置窗体的标题:

setTitle(“俄罗斯方块游戏”);

把要用到的图形界面的系统类包import到文件开始处

importjavax.swing.*;

importjava.awt.*;

importjavax.swing.border.Border;

importjava.awt.event.*;

5初始化控件:

publicfinalstaticintboxes_rows=4;

publicfinalstaticintboxes_cols=4;

publicfinalstaticintflatgene=3;

publicfinalstaticintbetweenleveltime=50;

privatefinalstaticintblockkindnum=7;

privatefinalstaticintblockstatusnum=4;

publicfinalstaticint[][]STYLES={//共28种状态

{0x0f00,0x4444,0x0f00,0x4444},//长条型的四种状态

{0x04e0,0x0464,0x00e4,0x04c4},//'T'型的四种状态

{0x4620,0x6c00,0x4620,0x6c00},//反'Z'型的四种状态

{0x2640,0xc600,0x2640,0xc600},//'Z'型的四种状态

{0x6220,0x1700,0x2230,0x0740},//'7'型的四种状态

{0x6440,0x0e20,0x44c0,0x8e00},//反'7'型的四种状态

{0x0660,0x0660,0x0660,0x0660},//方块的四种状态

};

6调试运行

定义游戏数据管理类class为ErsBlocksGame。

把游戏数据(如:

方块数据、空间数据等)设置为类的成员变量,并在构造函数中写初始化代码。

publicclassErsBlocksGameextendsJFrame{

publicfinalstaticintalinescore=100;

publicfinalstaticinteverylevelscore=alinescore*20;

publicfinalstaticintmaxlevel=10;

publicfinalstaticintinitlevel=5;

//游戏核心数据

intblock_box[][]=newint[4][2];/*四个正方形的坐标(相对方块中心点)*/

intblock_cx,block_cy;/*方块中心点在游戏空间中的坐标(相对游戏空间左上角点)*/

intblock_type;/*方块类属(上图中四种分别为0,1,2,3)*/

intgamespace[][]=newint[sp_WIDTH][sp_HIGHT];/*空间数据*/

//游戏的其它属性

intm_score=0;/*游戏得分*/

intm_speed=5;/*控制游戏,单位:

1/1000秒/步*/

intisplaying=0;/*是否在游戏中*/

publicRussionBlockGame()//构造函数

{

cleargamespace();//初始化游戏空间

makenewblock();//第一方块

}

voidcleargamespace()//初始化游戏空间

{

for(inti=0;i

for(intj=0;j

gamespace[i][j]=0;

}

7根据前面的分析,完成下列的功能函数

voidmakenewblock()//随机生成新的方块数据

voidmovedown()/*下移动方块*/

voidmoveleft()/*左移动方块*/

voidmoveright()/*右移动方块*/

voidturnleft()/*左转动方块*/

voidturnright()/*右转动方块*/

booleanIsCanChangeTo(intcx,intcy,intbox[][])//判断方块能否走到这位置

booleanIsHitBottom()//判断当前方块是否已触底,并处理 

booleanCheckAndCutLine(intLn)/*查某行是否为全填充,如是,消掉并返回true*/

booleanIsGameOver()/*true---结束false--没有结束*/

8在窗体类中定义一个游戏数据管理类的成员变量,并实例化,它表示游戏的数据。

RussionBlockGamegame=newRussionBlockGame();//建立游戏数据对象

9绘制游戏空间

privateGameCanvascanvas;(画布)

privateErsBox[][]boxes=newErsBox[boxes_rows][boxes_cols];

privateintstyle,y,x,level;

privatebooleanpausing=false,moving=true;

publicErsBlock(intstyle,inty,intx,intlevel,GameCanvascanvas){

this.style=style;

this.y=y;

this.x=x;

this.level=level;

this.canvas=canvas;

intkey=0x8000;

for(inti=0;i

{

for(intj=0;j

{

booleanisColor=((style&key)!

=0);

boxes[i][j]=newErsBox(isColor);

key>>=1;

}

}

display();

}

10方块移动设置

publicvoidrun()

{

while(moving)

{

try

{

sleep(betweenleveltime

*(ErsBlocksGame.maxlevel-level+flatgene));

}catch(InterruptedExceptionie)

{

ie.printStackTrace();

}

if(!

pausing)

moving=(moveTo(y+1,x)&&moving);

}

}

publicvoidmoveLeft()

{

moveTo(y,x-1);

}

publicvoidmoveRight()

{

moveTo(y,x+1);

}

publicvoidmoveDown()

{

moveTo(y+1,x);

}

publicvoidturnNext()

{

for(inti=0;i

{

for(intj=0;j

{

if(STYLES[i][j]==style)

{

intnewStyle=STYLES[i][(j+1)%blockstatusnum];

turnTo(newStyle);

return;

}

}

}

}

publicvoidpauseMove()

{

pausing=true;

}

publicvoidresumeMove()

{

pausing=false;

}

publicvoidstopMove()

{

moving=false;

11游戏的重置

publicvoidreset()

{

score=0;

scoreForLevelUpdate=0;

for(inti=0;i

{

for(intj=0;j

boxes[i][j].setColor(false);

}

repaint();

}

}

12方块的旋转

privateclassControlKeyListenerextendsKeyAdapter

{

publicvoidkeyPressed(KeyEventke)

{

if(!

game.isPlaying())

return;

ErsBlockblock=game.getCurBlock();

switch(ke.getKeyCode())

{

caseKeyEvent.VK_DOWN:

block.moveDown();

break;

caseKeyEvent.VK_LEFT:

block.moveLeft();

break;

caseKeyEvent.VK_RIGHT:

block.moveRight();

break;

caseKeyEvent.VK_UP:

block.turnNext();

break;

default:

break;

}

}

}

}

13背景颜色的设置

privateColorbackColor=Color.darkGray,frontColor=Color.red;

privateErsBox[][]boxes=newErsBox[ErsBlock.boxes_rows][ErsBlock.boxes_cols];

privateintstyle,boxWidth,boxHeight;

privatebooleanisTiled=false;

14较高一级的设置

publicintgetScoreForLevelUpdate()

{

if(canvas!

=null)

returncanvas.getScoreForLevelUpdate();

return0;

}

publicbooleanlevelUpdate()

{

intcurLevel=getLevel();

if(curLevel

{

setLevel(curLevel+1);

canvas.resetScoreForLevelUpdate();

returntrue;

}

returnfalse;

}

15方块的移动

privatevoidreportGameMethod(){

JOptionPane.showMessageDialog(this,"J为向左移动,L为向右移动,K为加速向下,I为翻转变化");

}

privatevoidreportGameOver(){

JOptionPane.showMessageDialog(this,"游戏结束!

");

}

16游戏的结束

privatebooleanisGameOver()

{

for(inti=0;i

{

ErsBoxbox=canvas.getBox(0,i);

if(box.isColorBox())

returntrue;

}

returnfalse;

}

}

17游戏的重新开始

publicvoidresumeGame()

{

if(block!

=null)

block.resumeMove();

ctrlPanel.setPauseButtonLabel(true);

miPause.setEnabled(true);

miResume.setEnabled(false);

ctrlPanel.requestFocus();

}

18暂停游戏

publicvoidpauseGame()

{

if(block!

=null)

block.pauseMove();

ctrlPanel.setPauseButtonLabel(false);

miPause.setEnabled(false);

miResume.setEnabled(true);

}

19停止游戏

publicvoidstopGame()

{

playing=false;

if(block!

=null)

block.stopMove();

miPlay.setEnabled(true);

miPause.setEnabled(true);

miResume.setEnabled(false);

ctrlPanel.setPlayButtonEnable(true);

ctrlPanel.setPauseButtonLabel(true);

}

4.4游戏界面演示

图5――游戏界面演示图

4.5程序测试结果

(1)俄罗斯方块应用程序的Java源代码全部正确能够通过编译并正常运行。

(2)俄罗斯方块的应用程序要求的功能:

玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况,可以通过游戏控制功能来选择开始新的一局游戏,暂停或退出游戏,玩家可以根据自己的需要自行设定游戏的开始级别,级别越高,游戏的速度越快,难度越大等功能都以完全实现。

(3)通过Java编程完全实现了课程设计任务书的全部功能。

5总结与展望

游戏设计与实践是一项复杂而且庞大的工作,在选题之后,我才意识到过程的艰难,因为以前从来没有接触过游戏设计,刚开始时有点迷茫和彷徨。

后来通过看书和在网上查找资料,逐渐找到了一些感觉,依照资料自己动手编写了俄罗斯方块游戏。

此次设计过程中印象最深的收获有:

1、学到了很多新知识,并且对老知识进行了回顾。

经过长时间的学习,更进一步熟悉了Java语言。

2、通过不断上机实验,调试程序,总结经验,从对课题的不理解到能够开始动手去做,提出问题并自己想办法解决问题,自己多实践,所以增强了动手能力。

3、提高了中、英文资料的检索能力。

这次毕业设计过程中我查阅了很多资料,不但有图书馆的期刊、杂志、馆藏图书,还有网络中的电子文档、电子书籍、网页及下载的视频教学课程;不但有中文资料还有英文资料。

这些资料,使我的眼界更开阔,对课题的认识更加深刻,编写程序的时候思路更加清楚,少走了很多弯路。

但如果真的要从事游戏设计的工作,需要走的路还很长,即便是对于国际知名的大公司,也是在不断的探索和实践中前进。

但这并不表明前途就是渺茫的,通过这次实践,进行了一次从底而上和自上而下的归纳和演绎的过程,在变化多端的游戏面前,总算领悟了一点它的奥妙。

内容繁复、采用的表现手段多姿多彩的游戏世界,即便是再复杂,也可以通过一定程度的归纳演绎得出适应其规则和表现的契合点。

回顾这个设计过程,我学到了许多书本上没有学到的知识。

通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,使我受益非浅,同时也体验到了搞软件开发的困难度。

在这次设计的同时,我又从中学到了许多东西。

但由于我对这样的软件开发还只是一个开始,了解的不多,这其中或许还有很多的不足,有些模块做得不是很好,有些功能还不能够完全的实现,如不能把要装载的方块提前显示出来。

因此做得不是很好,界面的设计及整体的布局还比较简单,没有突出特色出来,这也可能是我这个系统的不足之处。

经过一学期的Java课程设计学习,使我得知自己的知识还很欠缺,但是我并不灰心,通过这次实践操作使我认识到学习JAVA的乐趣,为以后的学习和工作打下基础。

 

参考文献

[1]屈辉立,陈可明,石武信.JSP网站编程教程[M].第1版,北京:

北京希望电子出版社,2005

[2]白勇.用B/S模式构建在线考试系统[J],重庆电力高等专科学校学报,2003,10(4):

100~130.

[3]JiangGuo,YuehongLiao,BehzadParviz.ASurveyofJ2EEApplicationPerformanceManagementSystems[J],ProceedingsoftheIEEEInternationalConferenceonWebServices(ICWS'04),2004.6(5):

17~32.

[4]VB数据库管理范例:

 

成绩评定

 

成绩教师签字

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

当前位置:首页 > 初中教育 > 学科竞赛

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

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