📄 manager.java
字号:
case 2: // '\002'
for (int k = 0; k < 6; k++)
{
bgArray[1][9 + k] = 4;
}
break;
case 4: // '\004'
for (int l = 0; l < 6; l++)
{
bgArray[GROUND_START_ROW + 9 + l][1] = 4;
}
break;
case 6: // '\006'
for (int i1 = 0; i1 < 6; i1++)
{
bgArray[ROWS - 2][9 + i1] = 4;
}
break;
}
}
private void initLocation(boolean flag)
{
girlTarget[3] = 3;
if (flag)
{
setInitPlayerXY(directOfInRoad);
players[0][2] = directOfOutRoad;
players[1][2] = directOfOutRoad;
previousXY[0] = players[0][0];
previousXY[1] = players[0][1];
setGirlTarget(players[0][0], players[0][1],
heroLoc[players[0][2]][players[0][3]][2],
heroLoc[players[0][2]][players[0][3]][3],
(byte) players[0][2]);
for (int i = nativeNum - 1; i >= 0; i--)
{
natives[i][2] = 0;
natives[i][3] = 0;
}
}
else
{
players[0][0] = previousXY[0];
players[0][1] = previousXY[1];
players[1][2] = players[0][2];
setGirlTarget(players[0][0], players[0][1],
heroLoc[players[0][2]][players[0][3]][2],
heroLoc[players[0][2]][players[0][3]][3],
(byte) players[0][2]);
moveGirl();
for (int j = nativeNum - 1; j >= 0; j--)
{
if (natives[j][3] == 1 || natives[j][3] == 6)
{
natives[j][3] = 0;
}
}
}
setHeroState( (byte) 0);
setGirlState( (byte) 0);
setNativeTarget(players[0][0], players[0][1], 0);
}
private void setInitPlayerXY(int i)
{
switch (i)
{
case 0: // '\0'
players[1][1] = (GROUND_START_ROW + 11) * 5;
players[1][0] = (COLUMNS - 1) * 5;
players[0][1] = players[1][1];
players[0][0] = players[1][0] - 17;
break;
case 2: // '\002'
players[1][1] = 5;
players[1][0] = 55;
players[0][1] = players[1][1] + 17;
players[0][0] = players[1][0];
break;
case 4: // '\004'
players[1][1] = (GROUND_START_ROW + 11) * 5;
players[1][0] = 5;
players[0][1] = players[1][1];
players[0][0] = players[1][0] + 17;
break;
case 6: // '\006'
players[1][1] = (ROWS - 1) * 5;
players[1][0] = 55;
players[0][1] = players[1][1] - 18;
players[0][0] = players[1][0];
break;
}
}
private byte getDirectOfOutRoad()
{
int i = players[0][1] / 5;
int j = players[0][0] / 5;
if (bgArray[i][j + 1] == 4 || bgArray[i][j - 1] == 4)
{
return ( (byte) (i >= ROWS / 2 ? 6 : 2));
}
if (bgArray[i + 1][j] == 4 || bgArray[i - 1][j] == 4)
{
return ( (byte) (j >= COLUMNS / 2 ? 0 : 4));
}
else
{
return 0;
}
}
private int getOppositeDirect(int i)
{
return i + 4 <= 7 ? i + 4 : i - 4;
}
private byte getDirectTowardPoint(int i, int j, int k, int l)
{
if (k == i)
{
byte byte0;
if (l < j)
{
byte0 = 6;
}
else
{
byte0 = 2;
}
return byte0;
}
int i1 = ( (l - j) * 100) / (k - i);
byte byte1;
if ( -41 < i1 && i1 <= 41)
{
if (i < k)
{
byte1 = 4;
}
else
{
byte1 = 0;
}
}
else
if (41 < i1 && i1 <= 241)
{
if (j < l)
{
byte1 = 3;
}
else
{
byte1 = 7;
}
}
else
if (i1 <= -241 || 241 < i1)
{
if (j < l)
{
byte1 = 2;
}
else
{
byte1 = 6;
}
}
else
if ( -241 < i1 && i1 <= -41)
{
if (j < l)
{
byte1 = 1;
}
else
{
byte1 = 5;
}
}
else
{
byte1 = 4;
}
return byte1;
}
private int getFastDistance(int i, int j, int k, int l)
{
int i1 = 0;
i = Math.abs(i - k);
j = Math.abs(j - l);
i1 = Math.min(i, j);
return ( (i + j) - (i1 >> 1) - (i1 >> 2)) + (i1 >> 4);
}
private void move(int ai[][], int i, byte byte0, int j)
{
int k = ai[i][0];
int l = ai[i][1];
switch (byte0)
{
case 0: // '\0'
k += j;
break;
case 1: // '\001'
k += j;
l -= j;
break;
case 2: // '\002'
l -= j;
break;
case 3: // '\003'
k -= j;
l -= j;
break;
case 4: // '\004'
k -= j;
break;
case 5: // '\005'
k -= j;
l += j;
break;
case 6: // '\006'
l += j;
break;
case 7: // '\007'
k += j;
l += j;
break;
}
if (bgArray[l / 5][k / 5] == 1 || bgArray[l / 5][k / 5] == 4)
{
ai[i][0] = k;
ai[i][1] = l;
}
}
public void moveHero(byte byte0)
{
if (situation != 0)
{
return;
}
previousXY[0] = players[0][0];
previousXY[1] = players[0][1];
if (byte0 == 0)
{
move(players, 0, (byte) players[0][2], 3);
}
else
{
move(players, 0, (byte) getOppositeDirect(players[0][2]), 3);
}
setHeroState( (byte) 1);
setGirlTarget(players[0][0], players[0][1],
heroLoc[players[0][2]][players[0][3]][2],
heroLoc[players[0][2]][players[0][3]][3],
(byte) players[0][2]);
setNativeTarget(players[0][0], players[0][1], 0);
checkItem();
}
private void checkItem()
{
if (item == null)
{
return;
}
for (int i = item.length - 1; i >= 0; i--)
{
if (item[i][2] == 0)
{
int j = getFastDistance(players[0][0], players[0][1],
item[i][1] * 5, item[i][0] * 5);
if (j < 10)
{
item[i][2] = 1;
cartridge++;
playSound("/item.ott", 6, 1);
}
}
}
}
public void translateHero(byte byte0)
{
if (situation != 0)
{
return;
}
if (byte0 == 2)
{
players[0][2] = players[0][2] != 0 ? players[0][2] - 1 : 7;
}
else
{
players[0][2] = players[0][2] != 7 ? players[0][2] + 1 : 0;
}
setGirlTarget(players[0][0], players[0][1],
heroLoc[players[0][2]][players[0][3]][2],
heroLoc[players[0][2]][players[0][3]][3],
(byte) players[0][2]);
}
public void setHeroDirect(byte byte0)
{
if (situation != 0)
{
return;
}
if (players[0][2] != byte0)
{
players[0][2] = byte0;
setGirlTarget(players[0][0], players[0][1],
heroLoc[players[0][2]][players[0][3]][2],
heroLoc[players[0][2]][players[0][3]][3],
(byte) players[0][2]);
}
else
{
moveHero( (byte) 0);
}
}
private void setHeroState(byte byte0)
{
players[0][3] = byte0;
}
private void setGirlState(byte byte0)
{
players[1][3] = byte0;
}
public void shootHero()
{
if (situation != 0)
{
return;
}
setHeroState( (byte) 3);
if (bullet > 0)
{
bullet--;
}
else
{
bullet = -1;
return;
}
checkCollisionWithBullet();
}
private void setNativeTarget(int i, int j, int k)
{
nativeTarget[0] = i;
nativeTarget[1] = j;
nativeTarget[2] = k;
}
public void moveNative()
{
for (int i = nativeNum - 1; i >= 0; i--)
{
if (natives[i][3] == 1)
{
natives[i][2] = getDirectTowardPoint(nativeTarget[0],
nativeTarget[1], natives[i][0], natives[i][1]);
move(natives, i, (byte) natives[i][2], nativeMoveSize);
}
}
}
private void setGirlTarget(int i, int j, int k, int l, byte byte0)
{
int i1 = 0;
int j1 = 0;
byte byte1 = girlLoc[byte0][players[1][3]][2];
byte byte2 = girlLoc[byte0][players[1][3]][3];
switch (byte0)
{
case 0: // '\0'
i1 = i - byte1 - 3;
j1 = j;
break;
case 1: // '\001'
i1 = (i - byte1) + 2;
j1 = (j + l) - 3;
break;
case 2: // '\002'
i1 = i;
j1 = j + l + 1;
break;
case 3: // '\003'
i1 = (i + k) - 6;
j1 = (j + l) - 3;
break;
case 4: // '\004'
i1 = i + k;
j1 = j;
break;
case 5: // '\005'
i1 = (i + k) - 4;
j1 = (j - byte2) + 3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -