📄 gamecanvas.java
字号:
KeySound =false;
soft1Key =false;
soft2Key =false;
// METHOD_TRACE("WORK OUT");
}
//--------------------------------------------------------------------------
//
// 绘画处理
//
// 绘画处理有跳着走被做,在这里不写操作·移动处理等的事
//
//--------------------------------------------------------------------------
public void paint( Graphics graphics )
{
int i,j,k;
String[] str = new String[7]; // 消息用
//font = Font.getFont( Font.FACE_MONOSPACE , Font.STYLE_PLAIN, Font.SIZE_SMALL );
// METHOD_TRACE("PAINT IN");
//----------------------------------------------------------------------
// 现在是绘画中再paint因为()被叫出了回扣做
//----------------------------------------------------------------------
if( sysData[13] != 1 )
return;
sysData[13] = 2;
//----------------------------------------------------------------------
// 图解拷贝&字体组件
//
// 正在复印做画刊
// 作为一一参数给予的其他的 DrawText() 等
//----------------------------------------------------------------------
if( sysData[12] == 0 )
{
sysData[12] = 1;
g = graphics;
offg.setFont( font );
g.setFont(font);
// 过关绘画
ClearOuterSpace();
}
//----------------------------------------------------------------------
// 变更绘画标准位置
//
// translate()现在被设定的坐标
// 向一旦 (0,0) 回复指定支线
//----------------------------------------------------------------------
g.translate( -g.getTranslateX() + midWidth, -g.getTranslateY() + midHeight );
// 绘画时全面涂抹
offg.setColor( 0x000000 );
if( gameData[30] == 3 || gameData[30] == 4 )
offg.fillRect( 0, 0, 120, 120 );
offg.setColor( 0x000000 );
//----------------------------------------------------------------------
// 游戏内的绘画处理
//
//----------------------------------------------------------------------
// Player 路线上的位置再取得
if( posX != posX1 || posY != posY1)
{
posX1 = posX;
posY1 = posY;
}
posX = (gameData[14]+1)/10;
posY = (120-gameData[15])/10-1+pMove;
// 再绘画判定
if( gameData[30] == 0 && (posX != posX1 || posY != posY1))
gameData[30] = 2;
else if( ifPhone == true )
gameData[30] = 3;
switch( gameState )
{
//------------------------------------------------------------------
// 游戏 PLAY
//------------------------------------------------------------------
case 5:
case 7:
{
// 滚动判断
if( gameData[15] < 40 )
isMove = 1;
if( isMove == 1 )
{
gameData[30] = 3;
pMove++;
if( pMove%7 == 0 ) // 每攀登上7个换下一个场景
{
isMove = 0;
gameData[15] +=10;
}
else
gameData[15] += 10;
// 全部使用了路线数据的时候
if( pMove == 147 )
pMove = 0;
}
// METHOD_TRACE("HOLD DRAW");
// 支点全体绘画
if( gameData[30] == 3 || gameData[30] == 4 )
{
// METHOD_TRACE("DRAW34");
for( i = 0;i < 10; i++)
{
for( j = 0;j < 11; j++)
{
if( route[j+11*(i+pMove)] < 30 )
DrawImage( 1+route[j+11*(i+pMove)], j*10, 120-(i+1)*10+1);
else
DrawImage( aImage, j*10, 120-(i+1)*10+1);
}
}
}
// 角色动了的时候的绘画
else if( gameData[30] == 2 )//gameData[30]控制角色是否动了
{
// METHOD_TRACE("DRAW2");
for( i = posY-5;i < posY+6; i++)
{
for( j = posX-5;j < posX+6; j++)
{
if( i > -1+pMove && i < 10+pMove && j > -1 && j < 11 && route[j+11*i] < 30 )
DrawImage( 1+route[j+11*i], j*10, 120-(i+1-pMove)*10+1);
else if( i < 10+pMove && i > -1+pMove && j > -1 && j < 11 )
DrawImage( aImage, j*10, 120-(i+1-pMove)*10+1);
}
}
}
// METHOD_TRACE("HIGH LIGHT DRAW");
// 练习 mode 时的最精采部分绘画
// 跳跃模式时要跳向的支点用蓝色框框表示出来
if( gameData[30] == 0 && isMove == 0
&& gameData[19] == 0 && gameState != 7 )
drawHighlight(posX,posY); // 滚动,跳跃中不描绘
// 终点绘画
// g.setColor( 0xff0000 );
offg.setColor( 0xff0000 );
if( pMove > degree*14 )
{
for( i = 0;i < 10;i++)
{
if( degree > 0 && route[11*(i+pMove)] == 999 )
{
//g.fillRect(0,DRAW_H-(i+1)*10+7,DRAW_W-11,3);
offg.fillRect(0,120-(i+1)*10+7,120-11,3);
DrawImage( 55, 0, 120-(i+1)*10-4);
}
}
}
// METHOD_TRACE("BODY DRAW");
// 手和脚的绘画
drawHand();
drawFoot();
// 头和躯体绘画
DrawImage( 31, gameData[14], gameData[15]);
// 极限量和比分高度的绘画处理
drawChar();
// 失误画像绘画
if( count > 33 )
DrawImage( 47, width/2-midWidth-35, height/2-midHeight-15);
// 进行动画片
if( count == 1 )
count = 2;
break;
}
//------------------------------------------------------------------
// 游戏过关
//------------------------------------------------------------------
case 9:
{
// 支点全体绘画
for( i = 0;i < 10; i++)
{
for( j = 0;j < 11; j++)
{
if( route[j+11*(i+pMove)] < 30 )
DrawImage( 1+route[j+11*(i+pMove)], j*10, 120-(i+1)*10+1);
else
DrawImage( aImage, j*10, 120-(i+1)*10+1);
}
}
// 终点绘画
// g.setColor( 0xff0000 );
offg.setColor( 0xff0000 );
for( i = 0;i < 10;i++)
{
if( route[11*(i+pMove)] == 999 )
{
// g.fillRect(0,DRAW_H-(i+1)*10+7,DRAW_W-11,3);
offg.fillRect(0,120-(i+1)*10+7,120-11,3);
DrawImage( 55, 0, 120-(i+1)*10-4);
}
}
// 手和脚的绘画
drawHand();
drawFoot();
// 头和躯体绘画
DrawImage( 31, gameData[14], gameData[15]);
// 极限量和比分高度的绘画处理
drawChar();
// 过关画像绘画
DrawImage( 42+degree, width/2-midWidth-40,
height/2-midHeight-20);
// 完美结局绘画
if( gameData[28] == 0 )
DrawImage( 50, midWidth, height/2-midHeight-40 );
// 如果是最好的时间的话描绘
if( BestScore == 1 )
DrawImage( 49, width/2-midWidth, height/2-midHeight+20 );
break;
}
//------------------------------------------------------------------
// 游戏超过
//------------------------------------------------------------------
case 8:
{
// 支点全体绘画
for( i = 0;i < 10; i++)
{
for( j = 0;j < 11; j++)
{
if( route[j+11*(i+pMove)] < 30 )
DrawImage( 1+route[j+11*(i+pMove)], j*10, 120-(i+1)*10+1);
else
DrawImage( aImage, j*10, 120-(i+1)*10+1);
}
}
// 终点绘画
// g.setColor( 0xff0000 );
offg.setColor( 0xff0000 );
for( i = 0;i < 10;i++)
{
if( route[11*(i+pMove)] == 999 )
{
// g.fillRect(0,DRAW_H-(i+1)*10+7,DRAW_W-11,3);
offg.fillRect(0,120-(i+1)*10+7,120-11,3);
DrawImage( 55, 0, 120-(i+1)*10-4);
}
}
// 手和脚的绘画
drawHand();
drawFoot();
// 头和躯体绘画
DrawImage( 31, gameData[14], gameData[15]);
// 界限表和总谱和高度的绘画处理
drawChar();
// 游戏超过画像绘画
DrawImage( 48, width/2-midWidth-35, height/2-midHeight-15 );
break;
}
//------------------------------------------------------------------
// LOADING 画面(起动画面)
//------------------------------------------------------------------
case 1:
{
// 以白为背景
offg.setColor( 0xeeeeee );
offg.fillRect( 0, 0, 120, 120 );
// 文字绘画
offg.setColor( 0x000000 );
//DrawText( "NOW LOADING...", 20, 40 );
DrawText( "正在读取数据......", 20, 40 );
// 框框绘画
offg.setColor( 0x000099 );
offg.drawRect( 9, 54, 102, 12 );
// 伸长的酒馆
offg.setColor( 0x4444ff );
offg.fillRect( 10, 55, gState, 11 );
//repaint();
//serviceRepaints();
break;
}
//------------------------------------------------------------------
// 回主界面
//------------------------------------------------------------------
case 2:
{
// 背景绘画
for( i = 2;i >= 0;i--)
{
DrawImage( 0, i*40, 1);
DrawImage( 0, i*40, 41);
DrawImage( 0, i*40, 81);
}
// 回主界面画像绘画
DrawImage( 63, 0, 5 );
// 版权画像绘画
// DrawImage( 60, width/2-midWidth-50, 110);
// 菜单画像绘画
if( gMenu == 0 )
{
// 游戏起动右箭形符号绘画
DrawImage( 60, width/2-midWidth-50, 85);
DrawImage( 56, width/2-midWidth+50, 95,10,0,10,10);
}
else if( gMenu == 1 )
{
DrawImage( 62, width/2-midWidth-50, 85);
DrawImage( 56, width/2-midWidth+50, 95,10,0,10,10);
DrawImage( 56, width/2-midWidth-60, 95,0,0,10,10);
}
else if( gMenu == 2 )
{
// 排列次序画像和左箭形符号
DrawImage( 61, width/2-midWidth-50, 85);
DrawImage( 56, width/2-midWidth+50, 95,10,0,10,10);
DrawImage( 56, width/2-midWidth-60, 95,0,0,10,10);
}
else if( gMenu == 3 )
{
// 排列次序画像和左箭形符号
DrawImage( 64, width/2-midWidth-50, 85);
DrawImage( 56, width/2-midWidth-60, 95,0,0,10,10);
}
break;
}
//------------------------------------------------------------------
// 路线选择
//------------------------------------------------------------------
case 3:
{
// 背景绘画
if( gameData[30] == 3 )
{
for( i = 2;i >= 0;i--)
{
DrawImage( 0, i*40, 21);
DrawImage( 0, i*40, 61);
DrawImage( 0, i*40, 81);
}
}
// 路线选择画像绘画
DrawImage( 38+degree, width/2-midWidth-35,
height/2-midHeight-15);
// 箭形符号表示
if( degree > 0 )
DrawImage(56, width/2-midWidth-45, height/2-midHeight-5,0,0,10,10);
if( degree < 4 && degree <= degree0 )
DrawImage(56, width/2-midWidth+35, height/2-midHeight-5,10,0,10,10);
// 如果是完美的话描绘
if( degree != 0 && aArray[degree-1] == 1 )
DrawImage( 50, width/2-midWidth-40, height/2-midHeight-35);
// 界限表和总谱和高度的绘画处理
drawChar();
break;
}
//------------------------------------------------------------------
// 顺序
//------------------------------------------------------------------
case 10:
{
int min,sec2,sec1,msec2,msec1;
String title;
str[0] = "初级";
str[1] = "中级";
str[2] = "上级";
str[3] = "最上级";
// 背景描画
for( i = 2;i >= 0;i--)
for( j = 2;j >= 0;j--)
DrawImage( 0, i*40, j*40);
// 回主界面绘画
title = "最佳成绩";
i = font.stringWidth(title)/2;
j = font.getHeight();
// g.setColor( 0xffffff );
// g.fillRect(sys[SYS_DISP_W]/2-sys[SYS_DRAW_X]-i-1,10,i*2+2,j+1);
// g.setColor( 0x000000 );
offg.setColor( 0xffffff );
offg.fillRect(width/2-midWidth-i-1,10,i*2+2,j+1);
offg.setColor( 0x000000 );
DrawText( title, width/2-midWidth-i, 10+j/8);
// 顺序数据绘画
j = font.stringWidth(str[3]);
for( i = 0;i < 4;i++)
{
min = Score[i]/60000;
sec2 = (Score[i]-min*60000)/10000;
sec1 = (Score[i]-min*60000-sec2*10000)/1000;
msec2 = (Score[i]-min*60000-sec2*10000-sec1*1000)/100;
msec1 = (Score[i]-min*60000-sec2*10000-sec1*1000-msec2*100)/10;
// g.setColor( 0xffffff );
// g.fillRect(sys[SYS_DISP_W]/2-sys[SYS_DRAW_X]-54,22+18*(i+1),sys[SYS_DISP_W]/2-sys[SYS_DRAW_X]-54+j,16);
// g.setColor( 0x000000 );
offg.setColor( 0xffffff );
offg.fillRect(width/2-midWidth-54,22+18*(i+1),width/2-midWidth-54+j,16);
offg.setColor( 0x000000 );
// if( phoneid.equals("TS22") == true )
// DrawText( str[i], width/2-midWidth-51, 23+18*(i+1));
// else
DrawText( str[i], width/2-midWidth-51, 24+18*(i+1));
DrawImage( 54, width/2-midWidth-7, 22+18*(i+1),min*10,0,10,16);
DrawImage( 54, width/2-midWidth+3, 22+18*(i+1),100,0,10,16);
DrawImage( 54, width/2-midWidth+8, 22+18*(i+1),sec2*10,0,10,16);
DrawImage( 54, width/2-midWidth+18, 22+18*(i+1),sec1*10,0,10,16);
DrawImage( 54, width/2-midWidth+28, 22+18*(i+1),100,0,10,16);
DrawImage( 54, width/2-midWidth+33, 22+18*(i+1),msec2*10,0,10,16);
DrawImage( 54, width/2-midWidth+43, 22+18*(i+1),msec1*10,0,10,16);
}
break;
}
//------------------------------------------------------------------
// 认证处理
//------------------------------------------------------------------
case 12:
{
// 回主界面窗口
// g.setColor( 0xffffff );
// g.fillRect( 0, 0, DRAW_W, DRAW_H );
// g.setColor( 0x000000 );
// g.drawRect( 1, 2, 117, 115 );
offg.setColor( 0xffffff );
offg.fillRect( 0, 0, 120, 120 );
offg.setColor( 0x000000 );
offg.drawRect( 1, 2, 117, 115 );
// 进行认证
if( gState == 0 )
{
// 回主界面
str[0] = "检查使用期限";
// 消息
str[1] = "现在开始进行会员认证";
str[2] = "的 ";
str[3] = " ";
str[4] = " ";
}
// 通讯错误
else if( gState == 4 )
{
// 回主界面
str[0] = "通讯错误";
// 消息
str[1] = "通讯情况确认";
str[2] = "通讯状况";
str[3] = "重新启动";
str[4] = " ";
}
// 比分发送
else if( gState == 5 )
{
//("比分发送2");
// 回主界面
str[0] = "比分发送中";
// 消息
str[1] = "请稍候";
str[2] = "给...";
str[3] = " ";
str[4] = " ";
}
// 比分登记完成
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -