您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > JAVA--俄罗斯方块实验报告
目录一.需求分析.....................................................错误!未定义书签。二.系统运行环境............................................................................2三.系统功能需求描述:................................................................2四.总体设计....................................................................................2五.系统结构图................................................................................3六.程序模块设计............................................................................3七、实验总结体会..........................................................................15一.需求分析在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众的认可,因此开发此游戏软件可满足人们的一些娱乐的需求。此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。二.系统运行环境操作系统选择WindowsXP版本,运行环境选择MyEclipse三.系统功能需求描述俄罗斯方块游戏是一款适合大众的游戏软件,它适合不同年龄的人玩。本软件要实现的功能如下:1.游戏区:玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况。2.游戏控制:玩家可以通过游戏控制功能来选择开始新的一局游戏,暂停或退出游戏。3.级别设置:玩家可以根据自己的需要自行设定游戏的开始级别,级别越高,游戏速度越快,难度越大。四.总体设计游戏中玩家可以做的操作有:1.以90度为单位旋转方每一格块。2.以格子为单位左右移动方块,让方块加速落下。3.方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。4.当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。同时删除的列数越多,得分指数上升。5.当固定的方块堆到区域最上方,则游戏结束。五.系统结构图六.程序模块设计6.1用户界面设计游戏区模块创建游戏区处理玩家游戏操作显示游戏结果游戏区游戏控制显示玩家操作显示操作结果开始暂停/继续提高等级退出降低等级俄罗斯方块游戏6.2程序代码设计packagerussia;importjava.awt.*;importjava.awt.event.*;//俄罗斯方块类classERS_BlockextendsFrame{/****/privatestaticfinallongserialVersionUID=1L;publicstaticbooleanisPlay=false;publicstaticintlevel=1,score=0;publicstaticTextFieldscoreField,levelField;publicstaticMyTimertimer;GameCanvasgameScr;publicstaticvoidmain(String[]argus){ERS_Blockers=newERS_Block(俄罗斯方块游戏V1.0Author:Vincent);WindowListenerwin_listener=newWinListener();ers.addWindowListener(win_listener);}//俄罗斯方块类的构造方法@SuppressWarnings(deprecation)ERS_Block(Stringtitle){super(title);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(rightScr);//右边信息窗体的布局MyPanelinfoScr=newMyPanel();infoScr.setLayout(newGridLayout(4,1,0,5));infoScr.setSize(120,300);rightScr.add(infoScr);//定义标签和初始值Labelscorep=newLabel(分数:,Label.LEFT);Labellevelp=newLabel(级数:,Label.LEFT);scoreField=newTextField(8);levelField=newTextField(8);scoreField.setEditable(false);levelField.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.setText(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(提高级数);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));//定义按钮LevelPauseButtonpause_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);controlScr.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);}}//游戏画布类classGameCanvasextendsCanvasimplementsKeyListener{/****/privatestaticfinallongserialVersionUID=1L;finalintunitSize=30;//小方块边长introwNum;//正方格的行数intcolumnNum;//正方格的列数intmaxAllowRowNum;//允许有多少行未削intblockInitRow;//新出现块的起始行坐标intblockInitCol;//新出现块的起始列坐标int[][]scrArr;//屏幕数组Blockb;//对方快的引用//画布类的构造方法GameCanvas(){rowNum=15;columnNum=10;maxAllowRowNum=rowNum-2;b=newBlock(this);blockInitRow=rowNum-1;blockInitCol=columnNum/2-2;scrArr=newint[32][32];}//初始化屏幕,并将屏幕数组清零的方法voidinitScr(){for(inti=0;irowNum;i++)for(intj=0;jcolumnNum;j++){scrArr[i][j]=0;}b.reset();repaint();}//重新刷新画布方法publicvoidpaint(Graphicsg){for(inti=0;irowNum;i++)for(intj=0;jcolumnNum;j++)drawUnit(i,j,scrArr[i][j]);}//画方块的方法publicvoiddrawUnit(introw,intcol,inttype){scrArr[row][col]=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(){
本文标题:JAVA--俄罗斯方块实验报告
链接地址:https://www.777doc.com/doc-5844972 .html