📄 gamescreen.java~6~
字号:
int j3 = ((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2;
int l3 = -1;
int j4 = -1;
for(int j5 = 0; j5 < nearBallPositions.length; j5++)
if(!aflag1[j5] && (j4 == -1 || l3 > users[j2].distance(l2 + nearBallPositions[j5][0], j3 + nearBallPositions[j5][1])))
{
j4 = j5;
l3 = users[j2].distance(l2 + nearBallPositions[j5][0], j3 + nearBallPositions[j5][1]);
}
if(j4 != -1)
{
aflag1[j4] = true;
if(users[j2].distance(l2 + nearBallPositions[j4][0], j3 + nearBallPositions[j4][1]) > users[j2].distanceAfterMove(l2 + nearBallPositions[j4][0], j3 + nearBallPositions[j4][1], l2 + nearBallPositions[j4][0], j3 + nearBallPositions[j4][1]))
users[j2].moveTo(l2 + nearBallPositions[j4][0], j3 + nearBallPositions[j4][1], true);
aflag[j2] = true;
}
}
int i3 = -1;
i = -1;
for(int k3 = 0; k3 < 7; k3++)
if(((Sprite) (comps[k3])).hasBall)
i = k3;
for(int i4 = 0; i4 < 7; i4++)
aflag[i4] = false;
if(i != -1)
{
if(((Sprite) (comps[i])).x - ((Sprite) (comps[i])).speed / 2 - 1 <= destXCurrent && destXCurrent <= ((Sprite) (comps[i])).x + ((Sprite) (comps[i])).speed / 2 + 1)
destXCurrent = 145 + Math.abs(r.nextInt()) % 60;
int k4 = destXCurrent;
char c = 'K';
if(compSide == 0)
c = '\u01DB';
int i6 = comps[i].steps(((Sprite) (ball)).x, ((Sprite) (ball)).y, k4, c);
if(i6 <= 1)
{
int i7 = ((Sprite) (comps[i])).direction;
if(compSide == 0 && (i7 > 5 || i7 < 3))
i7 = 4;
if(compSide == 1 && i7 != 7 && i7 != 0 && i7 != 1)
i7 = 0;
ball.kickBall(i7);
comps[i].hasBall = false;
} else
{
int j7 = -1;
int i8 = -1;
if(stepsDone >= 5)
{
for(int i9 = 0; i9 < 8; i9++)
{
int i10 = ((Sprite) (ball)).x;
int i11 = ((Sprite) (ball)).y;
int k11 = 0;
boolean flag3;
for(flag3 = false; !flag3 && k11 < Ball.speeds.length + 5;)
{
if(k11 < Ball.speeds.length)
{
i10 += Ball.speeds[i9][k11][0];
i11 += Ball.speeds[i9][k11][1];
}
k11++;
for(int j12 = 0; j12 < 7; j12++)
{
if(comps[j12].steps(((Sprite) (comps[j12])).x, ((Sprite) (comps[j12])).y, i10, i11) > k11)
continue;
flag3 = true;
break;
}
}
if(flag3 && (j7 == -1 || k11 + comps[0].steps(i10, i11, k4, c) < i8))
{
j7 = i9;
i8 = k11 + comps[0].steps(i10, i11, k4, c);
}
}
}
if(i8 < i6 && i8 != -1)
{
ball.kickBall(j7);
comps[i].hasBall = false;
} else
{
comps[i].moveTo(k4, c, true);
}
aflag[i] = true;
}
} else
{
int l4 = -1;
for(int k5 = 0; k5 < 7; k5++)
if(l4 == -1 || l4 > comps[k5].distance((((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2) - ((Sprite) (comps[k5])).sW / 2, (((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2) - ((Sprite) (comps[k5])).sH / 2))
l4 = comps[k5].distance((((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2) - ((Sprite) (comps[k5])).sW / 2, (((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2) - ((Sprite) (comps[k5])).sH / 2);
for(int j6 = 0; j6 < 7; j6++)
if(l4 * 2 >= comps[j6].distance((((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2) - ((Sprite) (comps[j6])).sW / 2, (((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2) - ((Sprite) (comps[j6])).sH / 2))
{
aflag[j6] = true;
if(comps[j6].distanceAfterMove((((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2) - ((Sprite) (comps[j6])).sW / 2, (((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2) - ((Sprite) (comps[j6])).sH / 2, (((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2) - ((Sprite) (comps[j6])).sW / 2, (((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2) - ((Sprite) (comps[j6])).sH / 2) < comps[j6].distance((((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2) - ((Sprite) (comps[j6])).sW / 2, (((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2) - ((Sprite) (comps[j6])).sH / 2))
{
comps[j6].moveTo((((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2) - ((Sprite) (comps[j6])).sW / 2, (((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2) - ((Sprite) (comps[j6])).sH / 2, false);
i3 = -1;
} else
{
i3 = j6;
}
}
}
for(int i5 = 0; i5 < nearBallPositions.length; i5++)
aflag1[i5] = false;
for(int l5 = 0; l5 < 7; l5++)
if(!aflag[l5])
{
int k6 = ((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2;
int k7 = ((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2;
int j8 = -1;
int j9 = -1;
for(int j10 = 0; j10 < nearBallPositions.length; j10++)
if(!aflag1[j10] && (j9 == -1 || j8 > comps[l5].distance(k6 + (nearBallPositions[j10][0] * 12) / 10, k7 + (nearBallPositions[j10][1] * 12) / 10)))
{
j9 = j10;
j8 = comps[l5].distance(k6 + (nearBallPositions[j10][0] * 12) / 10, k7 + (nearBallPositions[j10][1] * 12) / 10);
}
if(j9 != -1)
{
aflag1[j9] = true;
if(comps[l5].distance(k6 + (nearBallPositions[j9][0] * 12) / 10, k7 + (nearBallPositions[j9][1] * 12) / 10) > comps[l5].distanceAfterMove(k6 + (nearBallPositions[j9][0] * 12) / 10, k7 + nearBallPositions[j9][1], k6 + (nearBallPositions[j9][0] * 12) / 10, k7 + (nearBallPositions[j9][1] * 12) / 10))
comps[l5].moveTo(k6 + (nearBallPositions[j9][0] * 12) / 10, k7 + (nearBallPositions[j9][1] * 12) / 10, true);
aflag[l5] = true;
}
}
stepsDone++;
int l6 = ball.ballMove();
int l7 = 0;
if(Math.abs(((Sprite) (ball)).y - ((Sprite) (goalKeepers[1])).y) < Math.abs(((Sprite) (ball)).y - ((Sprite) (goalKeepers[0])).y))
l7 = 1;
if(l6 != 0 && ((Sprite) (ball)).x >= 140 && ((Sprite) (ball)).x <= 210)
if(((Sprite) (ball)).x >= ((Sprite) (goalKeepers[l7])).x && ((Sprite) (ball)).x < ((Sprite) (goalKeepers[l7])).x + ((Sprite) (goalKeepers[l7])).sW)
{
if(((Sprite) (goalKeepers[l7])).y < 275)
{
ball.x = ((Sprite) (goalKeepers[l7])).x + ((Sprite) (goalKeepers[l7])).sW / 2;
ball.y = ((Sprite) (goalKeepers[l7])).y;
ball.kickBall(3 + rnd(3), -7);
} else
{
ball.x = ((Sprite) (goalKeepers[l7])).x + ((Sprite) (goalKeepers[l7])).sW / 2;
ball.y = ((Sprite) (goalKeepers[l7])).y;
int k8 = rnd(3);
if(k8 == 2)
k8 = 7;
ball.kickBall(k8, -7);
}
} else
{
mode = 5;
SPlayer.play(2);
if(((Sprite) (goalKeepers[l7])).y < 275 && compSide == 0 || ((Sprite) (goalKeepers[l7])).y > 275 && compSide == 1)
{
scoreUser++;
kickOffTeam = 1;
} else
{
scoreComp++;
kickOffTeam = 0;
}
if(ball.ballSpeed < Ball.speeds[((Sprite) (ball)).direction].length && 140 <= ((Sprite) (ball)).x + Ball.speeds[((Sprite) (ball)).direction][ball.ballSpeed][0] && ((Sprite) (ball)).x + ((Sprite) (ball)).sW + Ball.speeds[((Sprite) (ball)).direction][ball.ballSpeed][0] <= 210 && (((Sprite) (ball)).y + Ball.speeds[((Sprite) (ball)).direction][ball.ballSpeed][1] <= 30 || ((Sprite) (ball)).y + Ball.speeds[((Sprite) (ball)).direction][ball.ballSpeed][1] >= 520))
{
ball.x += Ball.speeds[((Sprite) (ball)).direction][ball.ballSpeed][0];
ball.y += Ball.speeds[((Sprite) (ball)).direction][ball.ballSpeed][1];
}
goalTime = 0;
}
if(ball.ballSpeed >= Ball.speeds.length && (((Sprite) (ball)).y <= 40 || ((Sprite) (ball)).y >= 510) && ((Sprite) (ball)).x >= ((Sprite) (goalKeepers[l7])).x && ((Sprite) (ball)).x <= ((Sprite) (goalKeepers[l7])).x + ((Sprite) (goalKeepers[l7])).sW)
{
boolean flag2 = false;
for(int k9 = 0; k9 < 7; k9++)
flag2 = flag2 || ((Sprite) (users[k9])).hasBall || ((Sprite) (comps[k9])).hasBall;
if(!flag2)
if(((Sprite) (goalKeepers[l7])).y < 275)
{
ball.x = ((Sprite) (goalKeepers[l7])).x + ((Sprite) (goalKeepers[l7])).sW / 2;
ball.y = ((Sprite) (goalKeepers[l7])).y;
ball.kickBall(3 + rnd(3), -7);
} else
{
ball.x = ((Sprite) (goalKeepers[l7])).x + ((Sprite) (goalKeepers[l7])).sW / 2;
ball.y = ((Sprite) (goalKeepers[l7])).y;
int k10 = rnd(3);
if(k10 == 2)
k10 = 7;
ball.kickBall(k10, -7);
}
}
for(int l8 = 0; l8 < 2; l8++)
{
if(((Sprite) (goalKeepers[l8])).x + ((Sprite) (goalKeepers[l8])).sW / 2 < ((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2 && ((Sprite) (goalKeepers[l8])).x + ((Sprite) (goalKeepers[l8])).sW < 210)
goalKeepers[l8].x += (((Sprite) (goalKeepers[l8])).speed * (ball.ballSpeed >= Ball.speeds[0].length || ((Sprite) (ball)).direction % 2 != 1 ? 2 : 7 + rnd(4))) / 2;
if(((Sprite) (goalKeepers[l8])).x + ((Sprite) (goalKeepers[l8])).sW / 2 > ((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2 && ((Sprite) (goalKeepers[l8])).x > 140)
goalKeepers[l8].x -= (((Sprite) (goalKeepers[l8])).speed * (ball.ballSpeed >= Ball.speeds[0].length || ((Sprite) (ball)).direction % 2 != 1 ? 2 : 7 + rnd(4))) / 2;
}
int l9 = -1;
for(int l10 = 0; l10 < 7; l10++)
{
if(((Sprite) (users[l10])).hasBall)
l9 = l10;
if(((Sprite) (comps[l10])).hasBall)
l9 = 7 + l10;
}
int j11 = -1;
for(int l11 = 0; l11 < 7; l11++)
{
if((l9 >= 7 || l9 == -1) && ball.distance(users[l11]) < 50)
j11 = l11;
if((l9 < 7 || l9 == -1) && ball.distance(comps[l11]) < 50)
j11 = 7 + l11;
}
if(j11 != -1)
{
for(int i12 = 0; i12 < 7; i12++)
{
users[i12].hasBall = false;
comps[i12].hasBall = false;
if(i12 == j11)
users[i12].setBallOwn();
if(i12 + 7 == j11)
comps[i12].setBallOwn();
}
} else
if(i3 != -1)
comps[i3].setBallOwn();
if(l9 != -1 && j11 != -1)
if(j11 < 7 && (keyKick || rnd(10) == 0))
{
faultTeam = 0;
fault();
} else
if(j11 >= 7 && rnd(5) == 0)
{
faultTeam = 1;
fault();
}
keyKick = false;
if(mode == 1 && (((Sprite) (ball)).x <= 10 || ((Sprite) (ball)).x + ((Sprite) (ball)).sW / 2 >= 340 || ((Sprite) (ball)).y <= 30 || ((Sprite) (ball)).y + ((Sprite) (ball)).sH / 2 >= 520) && (((Sprite) (ball)).x < 140 || ((Sprite) (ball)).x > 210))
ballOutside();
if(timeToEnd - 2 <= 0 && firstTime)
{
timeToEnd = roundTime * 10;
firstTime = false;
mode = 13;
messageTime = 3000;
messageType = 16;
} else
if(timeToEnd > 0)
timeToEnd -= 2;
else
if(scoreComp == scoreUser && scoreComp == 0 && !additionTime && gameType == 1)
{
extraTime = (2 * roundTime * 10) / 2;
timeToEnd += (2 * roundTime * 10) / 2;
additionTime = true;
} else
{
messageTime = 6000;
if(gameType == 0 || gameType == 1 && round < 3)
{
if(scoreComp > scoreUser)
messageType = 5;
else
if(scoreComp == scoreUser)
messageType = 8;
else
if(scoreComp < scoreUser)
messageType = 6;
} else
if(scoreComp > scoreUser)
messageType = 5;
else
if(scoreComp == scoreUser)
messageType = 8;
else
if(scoreComp < scoreUser)
messageType = 7;
mode = 6;
}
}
setCenterPoint(((Sprite) (ball)).x, ((Sprite) (ball)).y);
repaint();
if(mode == 4 || mode == 8)
{
if(messageTime > 0)
messageTime -= 40;
lastReleased += 4;
GameScreen _tmp1 = this;
Thread.sleep(20L);
} else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -