📄 gamecanvas.java
字号:
if( degree == 0 )
k = 1;
else if( degree == 4 )
k = 3;
else
k = degree;
// 支点作成
for(i = 0;i < 207;i++)
{
// 逆时针转支点配置
if( (random1.nextInt()>>>1)%2 == 0 )
{
for(j = 0;j < 8;j++)
{
// 生成支点及空白
l = (random1.nextInt()>>>1)%(3*k+38);
if(l < 30 )
route[i*3+(i/4)*21+12+a[j]] = l;
else
route[i*3+(i/4)*21+12+a[j]] = 255;
}
}
// 右旋转支点配置
else
{
for(j = 7;j >= 0;j--)
{
// 生成支点及空白
l = (random1.nextInt()>>>1)%(3*k+35);
if(l < 30 )
route[i*3+(i/4)*21+12+a[j]] = l;
else
route[i*3+(i/4)*21+12+a[j]] = 255;
}
}
}
// 在最初时右手抓住的位置
route[39] = (random1.nextInt()>>>1)%30;
// METHOD_TRACE("MAKE COURCE OUT");
}
//------------------------------------------------------------------------------
//
// 抓住支点的 catchHold()
//
//------------------------------------------------------------------------------
private final int catchHold()
{
// METHOD_TRACE("CATCH HOLD");
int k,temp = 0;
// 核对操作中的手
if( gameData[16] == 0 )
k = -1;
else
k = 1;
// 被捉住的事完成的支点核对
//posY+1 < 10+pMove对角色位置的判断
//route[posX+k+11*(posY+1)] < 30判断是否有支点可以抓住
//gameData[9] == 2判断运动方向(上下左右)
//count2 == 0判断是否已经在运动中
if( posY+1 < 10+pMove && route[posX+k+11*(posY+1)] < 30 //&& (gridx-1 > -1 || gridx+1 < 11)
&& gameData[9] == 2 && count2 == 0 )
{
// 上
gameData[15]-=5;
count2 = 1;
temp = 0;
// height+=250;
}
else if( (posX-2 > -1 || posX+2 < 11) && route[posX+2*k+11*posY] < 30
&& gameData[9] == 4 && count2 == 0 )
{
// 中
gameData[14]+=5*k;
count2 = 1;
temp = 0;
}
else if( (posX-2 > -1 || posX+2 < 11) && posY-1 > -1+pMove && route[posX+2*k+11*(posY-1)] < 30
&& gameData[9] == 6 && posY > 3 && count2 == 0 )
{
// 下
gameData[14]+=5*k;
gameData[15]+=5;
count2 = 1;
temp = 0;
// height-=250;
}
else if( gameData[9] == 0
&& ((k==-1 && posX < 9) || (k==1 && posX > 1))
&& count2 == 0 )
{
// 自由手
if( count == 2 || count == 4 )
gameData[14]-=10*k;
if( count == 2 && k == -1)
rightHand = 7;
else if( count == 2 && k == 1)
leftHand = 7;
if( count == 4 )
gameData[18] = 1;
count++;
temp = 5;
}
else if( count2 == 0 )
{
count = 5;
}
if( count2 == 3 )
{
if( gameData[9] == 2 )
{
// 上
gameData[15]-=5;
gameData[18] = 1;
gameData[17] = route[posX+k+11*(posY+1)]%10;
temp = 0;
pHeight+=500;
}
else if( gameData[9] == 4 )
{
// 中
gameData[14]+=5*k;
gameData[18] = 1;
gameData[17] = route[posX+2*k+11*posY]%10;
temp = 0;
}
else if( gameData[9] == 6 )
{
// 下
gameData[14]+=5*k;
gameData[15]+=5;
gameData[18] = 1;
gameData[17] = route[posX+2*k+11*(posY-1)]%10;
temp = 0;
pHeight-=500;
}
}
// 手足的换入新品和极限量规的恢复
if( gameData[18] == 1 )//count2=2或者count=4时
{
// 时间点数开始
if( timeSet == 0)
timeSet = 1;
gameData[18] = 0;
if( k == -1 )
{
gameData[16] = 1;
leftHand = 0;
rightHand = 0;
leftFoot = 2;
rightFoot = 0;
gameData[9] = rightHand;
}
else
{
gameData[16] = 0;
rightHand = 0;
leftHand = 0;
leftFoot = 0;
rightFoot = 2;
gameData[9] = leftHand;
}
count2 = 0;//如果count2=2就恢复为0
gMax1 = gMax2;
if( temp == 0 )
gameData[30] = 2;
else
gameData[30] = 3;
count = 0;
if( (random1.nextInt()>>>1)%50 == 0 )
rValue = 3+temp;
else
rValue = 0+temp;
//("CATCH HOLD");
return 2;
}
//("NOT CATCH HOLD");
if( count > 4 )
{
count = 0;
// 到基本状态返还手的状态
gameData[9] = 0;
if( k == -1 )
leftHand = 0;
else
rightHand = 0;
}
return 2;
// METHOD_TRACE("CATCH HOLD END");
}
//------------------------------------------------------------------------------
//
// 跳跃处理 jumpAction()
//
//------------------------------------------------------------------------------
private static final int jumpAction()
{
// METHOD_TRACE("JUMP ACTION IN");
int k;
if( gameData[16] == 0 )
k = -1;
else
k = 1;
// 在游戏中跳跃做
// 以跳跃被捉住的事完成的支点
if( posX+k>-1 && posX+k<11 && posY+3 < 10+pMove && route[posX+k+11*(posY+3)] < 30
&& gameData[9] == 2 )
{
// 上
gameData[19] = 1;
gameData[17] = route[posX+k+11*(posY+3)]%10;
// height+=1500;
count = 20;
gameData[18] = 0;
}
else if( posX+3*k>-1 && posX+3*k<11 && posY+2 < 10+pMove&& route[posX+3*k+11*(posY+2)] < 30
&& gameData[9] == 4 )
{
// 中
gameData[19] = 1;
gameData[17] = route[posX+3*k+11*(posY+2)]%10;
// height+=1000;
count = 20;
gameData[18] = 0;
}
else if( posX+3*k>-1 && posX+3*k<11 && posY-2 > -1+pMove && route[posX+3*k+11*(posY-2)] < 30
&& gameData[9] == 6 && posY > 4)
{
// 下
gameData[19] = 1;
gameData[17] = route[posX+3*k+11*(posY-2)]%10;
// height-=1000;
count = 20;
gameData[18] = 0;
}
// 左右的手臂交替
if( gameData[19] == 1)
{
// 时间点数开始
if( timeSet == 0)
timeSet = 1;
// game[GAME_LIMIT_GAGE] -= game[GAME_LIMIT_GAGE]/2;
// game[GAME_LIMIT_MAX] -= game[GAME_LIMIT_MAX]/10;
gMax1 -= gMax1/(degree/3+2)+(7-degree);
gMax2 -= gMax2/(8+degree/2)+(5-degree);
if( k == -1 )
{
leftFoot = 0;
rightFoot = 2;
}
else
{
leftFoot = 2;
rightFoot = 0;
}
//("JUMP ACTION");
return 2;
}
//("NOT JUMP ACTION");
count = 0;
gameData[9] = 0;
if( k == -1 )
leftHand = 0;
else
rightHand = 0;
return 2;
}
//------------------------------------------------------------------------------
//
// 跳跃动画片 jumpAnimation()
//
//------------------------------------------------------------------------------
private static final void jumpAnimation()
{
// METHOD_TRACE("JUMP ANIME IN");
int k;
if( gameData[16] == 0 )
k = -1;
else
k = 1;
// 手的处理
// 向上
if( gameData[9] == 2 )
{
gameData[15]-=6;
pHeight+=300;
count++;
}
// 中
else if( gameData[9] == 4 )
{
gameData[14]+=4*k;
gameData[15]-=4;
pHeight+=200;
count++;
}
// 下
else if( gameData[9] == 6 )
{
gameData[14]+=4*k;
gameData[15]+=4;
pHeight-=200;
count++;
}
// 要在目标支点位置抓住的状态
if( count == 25 )
{
if( k == -1 )
{
gameData[16] = 1;
rightHand = 0;
leftHand = 0;
gameData[9] = rightHand;
}
else
{
gameData[16] = 0;
leftHand = 0;
rightHand = 0;
gameData[9] = leftHand;
}
gameData[19] = 0;
gameData[18] = 0;
gameData[30] = 2;
count = 0;
// random追加极限量规减少量
if( (random1.nextInt()>>>1)%30 == 0 )
rValue = 3;
else
rValue = 0;
}
// METHOD_TRACE("JUMP ANIME OUT");
}
//--------------------------------------------------------------------------
//
// 回复到回主界面
//
//
//--------------------------------------------------------------------------
private final void backTitle()
{
// 返回回主界面画面
gameState = 2;
gameData[30] = 3;
InitGame();
//sound.Play( 0, 2);
for(int i=49;i>0;i--)
cImage[i] =null;
try
{
cImage[60] = Image.createImage( "/" + 60 + ".png" );
cImage[61] = Image.createImage( "/" + 61 + ".png" );
cImage[62] = Image.createImage( "/" + 62 + ".png" );
cImage[63] = Image.createImage( "/" + 63 + ".png" );
cImage[64] = Image.createImage( "/" + 64 + ".png" );
}
catch(Exception e)
{
}
SetSoftLabel("开始","");
//setCommandListener(null);
Counter2 = Counter1;
}
//--------------------------------------------------------------------------
//
// 绘画
//
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//
// 太文字版 drawString()
//
// ○ Arg1:角色串
// ○ Arg2:位置
// ○ Arg3:位置Y
//
//--------------------------------------------------------------------------
private static final void DrawText( String Str, int Str_X, int Str_Y )
{
// g.drawString( Str, Str_X, Str_Y, g.LEFT | g.TOP );
offg.drawString( Str, Str_X, Str_Y, offg.LEFT | offg.TOP );
}
//--------------------------------------------------------------------------
//
// drawImage() 折叠(全体转送)
//
// 描绘对象的全体的时使用
//
// ○ Arg1:绘画的印象
// ○ Arg2 :描绘印象的位置 X
// ○ Arg3 :描绘印象的位置 Y
// ○ Arg4 :绘画对象
//
//--------------------------------------------------------------------------
public static final void DrawImage( int No, int x, int y)//, Graphics gx )
{
// g.setClip( 0, 0, DRAW_W, DRAW_H );
// g.drawImage( img[No], x, y, g.LEFT | g.TOP );
offg.drawImage( cImage[No], x, y, offg.LEFT | offg.TOP );
}
public static final void DrawImage( Image cImage, int x, int y )
{
// g.drawImage( img, x, y, g.LEFT | g.TOP );
offg.drawImage( cImage, x, y, offg.LEFT | offg.TOP );
}
//--------------------------------------------------------------------------
//
// drawImage() 折叠 (一部份转送)
//
// 想描绘只限于印象的一部分的时使用
//
// ○ Arg1 :描绘的印象的号码
// ○ Arg2 :绘画地点位置 X
// ○ Arg3 :绘画地点位置 Y
// ○ Arg4 :绘画原先的位置 X
// ○ Arg5 :绘画原先的位置 Y
// ○ Arg6 :描绘的宽度
// ○ Arg7 :描绘的高度
// ○ Arg8 :绘画对象
//
// ┏━━━━━━━━┓
// ┃ ┃
// ┃ ( x1, y1) ┃
// ┃ ★─┐ ┃ ┏━━━━━━┓
// ┃ │喂│ ┃ ┃ ( x2, Y2) ┃
// ┃ └─┘ ┃←┃ ★─┐ ┃
// ┃ ┃ ┃ │喂│ h ┃
// ┃ ┃ ┃ └─┘ ┃
// ┃ ┃ ┃ w ┃
// ┗━━━━━━━━┛ ┗━━━━━━┛
// <绘画地点> <绘画原先>
//
//
// ○使者实例:DrawImage( Img1, 10, 10, 30, 0, 16, 16 );
//
// 在↑显示的 (10,10) 的位置,
// 从画像 Img1 的 (30,0) 的位置只描绘 16 × 16 的尺寸的情况。
//
//--------------------------------------------------------------------------
public static final void DrawImage( int No, int x1, int y1, int x2, int y2, int w, int h)//, Graphics gx )
{
//----------------------------------------------------------------------
// 切割从绘画领域开始的部分
//----------------------------------------------------------------------
if( x1 < 0 )
{
x2 -= x1; w += x1; x1 = 0;
}
if( y1 < 0 )
{
y2 -= y1; h += y1; y1 = 0;
}
if( x1 + w > 120 )
{
w -= ( (x1 + w) - 120 );
}
if( y1 + h > 120 )
{
h -= ( (y1 + h) - 120 );
}
//----------------------------------------------------------------------
// 需要如果只绘画绘画
//----------------------------------------------------------------------
if( w > 0 && h > 0 )
{
// 把速度当作画面全体事先回复
// g.setClip( x1, y1, w, h );
offg.setClip( x1, y1, w, h )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -