毕业论文-08220128-章盛远-基于J2ME的手机...(5)

2021-09-24 13:15

else if(number>1){

a=displayRecordFromRMS(1); int one=Integer.parseInt(s2); int two=Integer.parseInt(a); if(one>two){ }

else{ }

b="不是最高分 ,要加油哦!!!"; a=s2;

b="真棒!!! 你是最高分"; updateRecordToRMS(a,0,a.length()); a=s2;

}

st1=new StringItem(null,"本次游戏分数:"+s+'\n'+"最高分为: "+a+"分 st2=new StringItem(null,b,Item.PLAIN); Font Font

st1.setFont(f1); st2.setFont(f2);

} catch (RecordStoreNotOpenException e) {

System.out.println("记录存储打开异常"); }

"+'\n',Item.PLAIN);

f1=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE); f2=Font.getFont(Font.FACE_SYSTEM,Font.FONT_STATIC_TEXT,Font.SIZE_LARGE);

st1.setLayout(YOUT_CENTER); frm2.append(zgfImg); frm2.append(st1); frm2.append(st2);

Tetris.s_display.setCurrent(frm2); }

3.2.5 按键的判断

图8 游戏运行图

(有网格) (无网格) (帮助)

开始游戏后,方块在游戏容器中实现向左移动、向右移动、下落及旋转变形。这些动作是通过手机导航键上、下、左、右或者数字2、4、6、8实现的,分别对应变形、下落、左移、右移。游戏中帮助键可以进入帮助界面,数字‘1’可以清楚网格,按#可以暂停游戏,按数字*可以重新开始游戏。游戏界面如图8所示,以下是实行代码:

public void keyPressed( int key )

{if (key == 35)

{ isPaused = !isPaused;

}

key = getKeyCode( key ); switch( key ) {

case UP:

//顺时针旋转 //0没有按下

isKeyDown = 0; box_state ++; box_state %= 4; if( !isCanMove() ) {

box_state --;

if (!isPaused){

}

if( box_state<0 )

box_state = 3;

break; case DOWN:

{ }

//向左移动BOX //0没有按下

s_box_y ++; if( !isCanMove() )

s_box_y --;

//向下移动

if( isKeyDown == 2 )

isKeyDown = 1; if( isKeyDown == 1 )

break; case LEFT:

s_box_x --; if( !isCanMove() )

s_box_x ++;

//向右移动BOX

isKeyDown = 0;

break; case RIGHT:

isKeyDown = 0; s_box_x ++; if( !isCanMove() )

s_box_x --;

//0没有按下

break; case -7:

Form frm=new Form("帮助");

frm.append("用导航键上、下、左、右或者数字‘2’ ‘5’ ‘4’

+"\n\n"+"数字‘1’可以清楚网格"+"\n\n"+"按“*”键可+"\n\n"+"按#可以暂停游戏");

‘8’可控制方快移动" 以重新开始游戏"

cmd=new Command(" 返回",Command.STOP,1); frm.addCommand(cmd); frm.setCommandListener(this); Tetris.s_display.setCurrent(frm);

break;

} }

}

case 42:

initGame(); break; case 48:

//新的BOX

break; case 49: break;

//是否显示网格

isShowReseau = !isShowReseau;

setBox();

repaint(); //重新绘制屏幕

3.2.6 边界检测

游戏中可视的游戏操作的区域在程序中定义好了,

private static final int s_width = 240; private static final int s_height

= 288;

如果不处理的话方块会移动到可视范围外,对此我做了个边界检测处理方法,当方块移动到游戏操作区域边界时再移动就会失去效果,是方块不管怎么移动多是在可视界面中,而且当新方块与已在游戏界面中的方块接触时要停下来,不能越过去,

具体实行代码如下:

private boolean isCanMove() {

for( int i=0; i<4; i++ ) //行 { for( int j=0; j<4; j++ ) //列 { if( ( box[box_state] & matrix[i][j] ) == matrix[i][j] ) //是格子 { if( s_box_x+j < 0 ) //左边界检测 { System.out.println( "left s_box_x="+s_box_x+" matrix["+i+"]["+j+"]="+matrix[i][j]);

return false; } if( s_box_x+j > s_box_w_sum-1 ) //右边界检测 { System.out.println( "right s_box_x="+s_box_x+" matrix["+i+"]["+j+"]="+matrix[i][j]);

return false; }

if( s_box_y+i > s_box_h_sum-1 ) //下边界检测 { System.out.println( "down s_box_y="+s_box_y+" matrix["+i+"]["+j+"]="+matrix[i][j]);

return false; } //地图格子检测 if( map[s_box_y+i][s_box_x+j] > 0 ) return false; } } }

return true; } 3.2.7 得分与升级

在游戏中移动方块,当方块可以填满一行时改行就会消去,同时分数会增加,增加的分数值为行数的平方。当分数达到一定的有求后就可以升级,升级后游戏难度会增加,也就是游戏方块下落速度会加快,实际上就是方块下落的延迟时间减短了。

得分升级代码: private void setMap() {

for( int i=0; i<4; i++ ) { }

//检测是否可以消去一行 int line_success = 0;

for( int i=0; i<s_box_h_sum; i++ ) {

if( isFullLine( i ) ) {

setNullLine( i ); line_success++;

//行 //列

for( int j=0; j<4; j++ ) { }

if( ( box[box_state] & matrix[i][j] ) == matrix[i][j] ) //是格子 { }

map[s_box_y+i][s_box_x+j] = boxColor;

//行

//这行可以消去 //设置第i行为空

毕业论文-08220128-章盛远-基于J2ME的手机...(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:糖尿病中医药健康教育讲座

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: