JAVA俄罗斯方块实验报告文档格式.docx
- 文档编号:15232374
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:15
- 大小:74.61KB
JAVA俄罗斯方块实验报告文档格式.docx
《JAVA俄罗斯方块实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA俄罗斯方块实验报告文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
玩家可以通过游戏控制功能来选择开始新的一局游戏,暂停或退出游戏。
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("
级数:
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);
//定义按钮play
Buttonplay_b=newButton("
开始游戏"
play_b.setSize(newDimension(50,200));
play_b.addActionListener(newCommand(Command.button_play,gameScr));
//定义按钮LevelUP
Buttonlevel_up_b=newButton("
提高级数"
level_up_b.setSize(newDimension(50,200));
level_up_b.addActionListener(newCommand(Command.button_levelup,gameScr));
//定义按钮LevelDown
Buttonlevel_down_b=newButton("
降低级数"
level_down_b.setSize(newDimension(50,200));
level_down_b.addActionListener(newCommand(Command.button_leveldown,gameScr));
//定义按钮LevelPause
Buttonpause_b=newButton("
游戏暂停"
pause_b.setSize(newDimension(50,200));
pause_b.addActionListener(newCommand(Command.button_pause,gameScr));
//定义按钮Quit
Buttonquit_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{
publicInsetsgetInsets(){
returnnewInsets(30,50,30,50);
//游戏画布类
classGameCanvasextendsCanvasimplementsKeyListener{
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;
i<
rowNum;
i++)
for(intj=0;
j<
columnNum;
j++)
{scrArr[i][j]=0;
}
b.reset();
repaint();
//重新刷新画布方法
publicvoidpaint(Graphicsg){
for(inti=0;
i<
rowNum;
i++)
for(intj=0;
j<
columnNum;
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);
//画正在下落的方块
case2:
g.setColor(Color.magenta);
//画已经落下的方法
g.fill3DRect(col*unitSize,getSize().height-(row+1)*unitSize,unitSize,unit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 俄罗斯方块 实验 报告