JAVA俄罗斯方块实验报告

上传人:枫** 文档编号:507608973 上传时间:2023-02-16 格式:DOC 页数:14 大小:238KB
返回 下载 相关 举报
JAVA俄罗斯方块实验报告_第1页
第1页 / 共14页
JAVA俄罗斯方块实验报告_第2页
第2页 / 共14页
JAVA俄罗斯方块实验报告_第3页
第3页 / 共14页
JAVA俄罗斯方块实验报告_第4页
第4页 / 共14页
JAVA俄罗斯方块实验报告_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《JAVA俄罗斯方块实验报告》由会员分享,可在线阅读,更多相关《JAVA俄罗斯方块实验报告(14页珍藏版)》请在金锄头文库上搜索。

1、目录错误!未定义书签。22一需求分析二系统运行环境三系统功能需求描述四总体设计2五系统结构图3六程序模块设计3七、实验总结体会15需求分析在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众的认可,因此开发此游戏软件可满足人们的一些娱乐的需求。此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。二系统运行环境操作系统选择WindowsXP版本,运行环境选择MyEclipse三系统功能需求描述俄罗斯方块游戏是一款适合大

2、众的游戏软件,它适合不同年龄的人玩。本软件要实现的功能如下:1. 游戏区:玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况。2. 游戏控制:玩家可以通过游戏控制功能来选择开始新的一局游戏,暂停或退出游戏。3. 级别设置:玩家可以根据自己的需要自行设定游戏的开始级别,级别越高,游戏速度越快,难度越大。四总体设计游戏中玩家可以做的操作有:1. 以90度为单位旋转方每一格块。2. 以格子为单位左右移动方块,让方块加速落下。3. 方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。4. 当区域中某一列横向格子全部由方块填满,则该列会自

3、动消除并成为玩家的得分。同时删除的列数越多,得分指数上升。5. 当固定的方块堆到区域最上方,则游戏结束。五系统结构图六程序模块设计6.1用户界面设计6.2程序代码设计packagerussia;importjava.awt.*;importjava.awt.event.*;/俄罗斯方块类classERS_BlockextendsFrame/*/privatestaticfinallongserialVersionUID=1L;publicstaticbooleanisPlay=false;publicstaticintlevel=1,score=0;publicstaticTextFields

4、coreField,levelField;publicstaticMyTimertimer;GameCanvasgameScr;publicstaticvoidmain(Stringargus)ERS_Blockers=newERS_Block(俄罗斯方块游戏V1.0Author:Vineent);WindowListenerwin_listener=newWinListener();ers.addWindowListener(win_listener);/俄罗斯方块类的构造方法SuppressWarnings(deprecation)ERS_Block(Stringtitle)super(t

5、itle);setSize(600,480);setLayout(newGridLayout(1,2);gameScr=newGameCanvas();gameScr.addKeyListener(gameScr);timer=newMyTimer(gameScr);timer.setDaemon(true);timer.start();timer.suspend();add(gameScr);PanelrightScr=newPanel();rightScr.setLayout(newGridLayout(2,1,0,30);rightScr.setSize(120,500);add(rig

6、htScr);/右边信息窗体的布局MyPanelinfoScr=newMyPanel();infoScr.setLayout(newGridLayout(4,1,0,5);infoScr.setSize(120,300);rightScr.add(infoScr);/定义标签和初始值Labelscorep=newLabel(分数:丄abel.LEFT);Labellevelp=newLabel(级数:丄abel.LEFT);scoreField=newTextField(8);levelField=newTextField(8);scoreField.setEditable(false);le

7、velField.setEditable(false);infoScr.add(scorep);infoScr.add(scoreField);infoScr.add(levelp);infoScr.add(levelField);scorep.setSize(newDimension(20,60);scoreField.setSize(newDimension(20,60);levelp.setSize(newDimension(20,60);levelField.setSize(newDimension(20,60);scoreField.setText(0);levelField.set

8、Text(1);/右边控制按钮窗体的布局MyPanelcontrolScr=newMyPanel();controlScr.setLayout(newGridLayout(5,1,0,5);rightScr.add(controlScr);/定义按钮playButtonplay_b=newButton(开始游戏);play_b.setSize(newDimension(50,200);play_b.addActionListener(newCommand(Command.button_play,gameScr);定义按钮LevelUPButtonlevel_up_b=newButton(提高级

9、数);level_up_b.setSize(newDimension(50,200);level_up_b.addActionListener(newCommand(Command.button_levelup,gameScr);/定义按钮LevelDownButtonlevel_down_b=newButton(降低级数);level_down_b.setSize(newDimension(50,200);level_down_b.addActionListener(newCommand(Command.button_leveldown,gameScr);/定义按钮LevelPauseBut

10、tonpause_b=newButton(游戏暂停);pause_b.setSize(newDimension(50,200);pause_b.addActionListener(newCommand(Command.button_pause,gameScr);定义按钮QuitButtonquit_b=newButton(退出游戏);quit_b.setSize(newDimension(50,200);quit_b.addActionListener(newCommand(Command.button_quit,gameScr);controlScr.add(play_b);controlS

11、cr.add(level_up_b);controlScr.add(level_down_b);controlScr.add(pause_b);controlScr.add(quit_b);setVisible(true);gameScr.requestFocus();重写MyPanel类,使Panel的四周留空间classMyPanelextendsPanel/*/privatestaticfinallongserialVersionUID=1L;publicInsetsgetInsets()returnnewInsets(30,50,30,50);/游戏画布类classGameCanvas

12、extendsCanvasimplementsKeyListener/*/privatestaticfinallongserialVersionUID=1L;finalintunitSize=30;/小方块边长introwNum;/正方格的行数intcolumnNum;/正方格的列数intmaxAllowRowNum;/允许有多少行未削intblockInitRow;/新出现块的起始行坐标intblockInitCol;/新出现块的起始列坐标intscrArr;/屏幕数组Blockb;/对方快的引用/画布类的构造方法GameCanvas()rowNum=15;columnNum=10;maxA

13、llowRowNum=rowNum-2;b=newBlock(this);blockInitRow=rowNum-1;blockInitCol=columnNum/2-2;scrArr=newint3232;/初始化屏幕,并将屏幕数组清零的方法voidinitScr()for(inti=0;irowNum;i+)for(intj=0;jcolumnNum;j+)scrArrij=0;b.reset();repaint();/重新刷新画布方法publicvoidpaint(Graphicsg)for(inti=0;irowNum;i+)for(intj=0;jcolumnNum;j+)drawU

14、nit(i,j,scrArrij);/画方块的方法publicvoiddrawUnit(introw,intcol,inttype)scrArrrowcol=type;Graphicsg=getGraphics();switch(type)/表示画方快的方法case0:g.setColor(Color.black);break;/以背景为颜色画case1:g.setColor(Color.blue);break;/画正在下落的方块case2:g.setColor(Color.magenta);break;/画已经落下的方法g.fill3DRect(col*unitSize,getSize().height-(row+1)*unitSize,unitSize,unitSize,true);g.dispose();publicBlockgetBlock()returnb;/返回block实例的引用返回屏幕数组中(row,col)位置的属性值publicintgetScrArrXY(introw,intcol)if(row=rowNum|col0|

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号