📄 gamescreen.java~4~
字号:
// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
package com.soccer;
import com.nokia.mid.ui.FullCanvas;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.Random;
import javax.microedition.lcdui.*;
// Referenced classes of package com.soccer:
// UserPlayer, Ball, GameMidlet, MenuScreen,
// Sprite, SPlayer
public class GameScreen extends FullCanvas
implements Runnable
{
public GameScreen()
{
extraTime = 0;
keyUp = false;
keyDown = false;
keyLeft = false;
keyRight = false;
keyKick = false;
additionTime = false;
firstTime = false;
compSide = 0;
gameType = 0;
round = 0;
messageTime = 0;
messageType = 0;
nextMessageType = -1;
kickOffTeam = 0;
startKickOffTeam = 0;
scoreComp = 0;
scoreUser = 0;
goalTime = 0;
goalKeeperTime = 0;
goalKeeper = 0;
timeToEnd = 0;
roundTime = 5;
nearestPlayer = -1;
goalLineKickWait = 0;
faultTeam = 0;
faultKicker = 0;
faultKickWait = 0;
f = Font.getFont(0, 0, 8);
fbold = Font.getFont(0, 1, 0);
r = new Random();
roundTime = GameMidlet.roundTime;
gWidth = getWidth();
gHeight = getHeight();
b = Image.createImage(gWidth, gHeight);
bg = b.getGraphics();
try
{
InputStream inputstream = getClass().getResourceAsStream("/infostr.txt");
messages = new String[19];
for(int j = 0; j < 19; j++)
{
messages[j] = "";
int k;
while((k = inputstream.read()) != 10)
{
if(k != 13 && k != -1)
messages[j] += (char)k;
if(k == -1)
break;
}
}
ballImage = Image.createImage("/ball.png");
herb = Image.createImage("/herb.png");
gate1 = Image.createImage("/gate1.png");
gate2 = Image.createImage("/gate2.png");
players = Image.createImage("/players.png");
top = Image.createImage("/top.png");
bottom = Image.createImage("/bottom.png");
shadow = Image.createImage("/shadow.png");
confirm = Image.createImage("/confirm.png");
mground = Image.createImage("/mground.png");
}
catch(Exception exception) { }
commands = new boolean[MenuScreen.commands.length];
playerWidth = players.getWidth() / 4;
playerHeight = players.getHeight() / 48;
infoHeight = top.getHeight();
screenWidth = gWidth;
screenHeight = gHeight - infoHeight - bottom.getHeight();
herbsW = screenWidth / herb.getWidth() + 2;
herbsH = screenHeight / herb.getHeight() + 2;
startPositions = new int[2][4][3];
startPositions[0][0][0] = 159;
startPositions[0][0][1] = 0;
startPositions[0][0][2] = 2;
startPositions[0][1][0] = 190;
startPositions[0][1][1] = 0;
startPositions[0][1][2] = 6;
startPositions[0][2][0] = 127;
startPositions[0][2][1] = 34;
startPositions[0][2][2] = 4;
startPositions[0][3][0] = 222;
startPositions[0][3][1] = 34;
startPositions[0][3][2] = 0;
startPositions[1][0][0] = 222;
startPositions[1][0][1] = -34;
startPositions[1][0][2] = 4;
startPositions[1][1][0] = 127;
startPositions[1][1][1] = -34;
startPositions[1][1][2] = 0;
startPositions[1][2][0] = 95;
startPositions[1][2][1] = -10;
startPositions[1][2][2] = 2;
startPositions[1][3][0] = 254;
startPositions[1][3][1] = -10;
startPositions[1][3][2] = 6;
all = new UserPlayer[16];
users = new UserPlayer[7];
comps = new UserPlayer[7];
for(int i = 0; i < 7; i++)
{
users[i] = new UserPlayer();
comps[i] = new UserPlayer();
comps[i].type = 1;
all[i] = users[i];
all[7 + i] = comps[i];
}
goalKeepers = new UserPlayer[2];
goalKeepers[0] = new UserPlayer();
goalKeepers[1] = new UserPlayer();
goalKeepers[1].type = 1;
all[14] = goalKeepers[0];
all[15] = goalKeepers[1];
ball = new Ball();
ball.sW = ballImage.getWidth();
ball.sH = ballImage.getHeight() / 2;
timeToEnd = roundTime * 10;
t = new Thread(this);
t.start();
}
public int rnd(int i)
{
return Math.abs(r.nextInt()) % i;
}
public void randomizePlayers()
{
for(int i = 0; i < 7; i++)
{
users[i].setPos(10 + rnd(330), compSide != 0 ? 60 + rnd(215) : 275 + rnd(215));
comps[i].setPos(10 + rnd(330), compSide != 1 ? 60 + rnd(215) : 275 + rnd(215));
comps[i].type = 1;
}
}
public void selectCompCommand()
{
if(gameType == 0)
compCommand = MenuScreen.compCommand;
else
compCommand = userCommand;
for(; commands[compCommand]; compCommand = rnd(commands.length));
commands[compCommand] = true;
if(gameType == 0)
compCommandColor = MenuScreen.compCommand;
else
compCommandColor = compCommand;
}
public void startGame(int i)
{
gameType = i;
round = 0;
mode = 0;
randomizePlayers();
scoreComp = 0;
scoreUser = 0;
for(int j = 0; j < commands.length; j++)
commands[j] = false;
userCommand = MenuScreen.command;
userCommandColor = MenuScreen.commandColor;
commands[userCommand] = true;
selectCompCommand();
timeToEnd = roundTime * 10;
additionTime = false;
kickOffTeam = rnd(2);
startKickOffTeam = kickOffTeam;
firstTime = true;
startRound(0);
if(i == 1)
{
messageTime = 3000;
messageType = round;
}
}
public void startRound(int i)
{
compSide = i;
keyUp = keyDown = keyLeft = keyRight = keyKick = false;
destXCurrent = 175;
for(int j = 0; j < 7; j++)
{
if(j < 4)
{
users[j].setPos(startPositions[kickOffTeam][j][0], 275 + (kickOffTeam != i ? -startPositions[kickOffTeam][j][1] : startPositions[kickOffTeam][j][1]));
users[j].direction = startPositions[kickOffTeam][j][2];
users[j].active = false;
comps[j].setPos(startPositions[1 - kickOffTeam][j][0], 275 + (kickOffTeam != i ? -startPositions[1 - kickOffTeam][j][1] : startPositions[1 - kickOffTeam][j][1]));
comps[j].direction = startPositions[1 - kickOffTeam][j][2];
} else
{
users[j].setPos(10 + rnd(330), i != 0 ? 40 + rnd(235) : 275 + rnd(235));
users[j].direction = rnd(8);
users[j].active = false;
comps[j].setPos(10 + rnd(330), i != 1 ? 40 + rnd(235) : 275 + rnd(235));
comps[j].direction = rnd(8);
}
users[j].hasBall = false;
comps[j].hasBall = false;
}
ball.setPos(175, 275);
ball.ballSpeed = Ball.speeds.length;
goalKeepers[i].setPos(175, 523 - playerHeight);
goalKeepers[i].speed = 2;
goalKeepers[1 - i].setPos(175, 27);
goalKeepers[1 - i].speed = 2;
goalKeepers[i].direction = 0;
goalKeepers[1 - i].direction = 4;
if(kickOffTeam == 0)
nextMessageType = 15;
mode = 3;
}
public void drawMessage(Graphics g, int i)
{
g.drawImage(mground, (getWidth() - mground.getWidth()) / 2, (getHeight() - mground.getHeight()) / 2, 0);
g.setColor(0xffffff);
g.setFont(fbold);
g.drawString(messages[i], (gWidth - fbold.stringWidth(messages[i])) / 2, (gHeight - fbold.getHeight()) / 2, g.TOP);
}
public void update(Graphics g)
{
paint(g);
}
public void drawField(Graphics g)
{
int i = -(fieldX % herb.getWidth());
int j = -(fieldY % herb.getHeight());
for(int k = 0; k < herbsH; k++)
{
for(int l = 0; l < herbsW; l++)
g.drawImage(herb, i + l * herb.getWidth(), j + k * herb.getHeight() + infoHeight, 0);
}
g.setColor(0x6bef73);
g.drawLine(-fieldX + 10, -fieldY + infoHeight + 30, -fieldX + 10, -fieldY + infoHeight + 520);
g.drawLine((-fieldX + 10) - 1, -fieldY + infoHeight + 30, (-fieldX + 10) - 1, -fieldY + infoHeight + 520);
g.drawLine(-fieldX + 340, -fieldY + infoHeight + 30, -fieldX + 340, -fieldY + infoHeight + 520);
g.drawLine(-fieldX + 340 + 1, -fieldY + infoHeight + 30, -fieldX + 340 + 1, -fieldY + infoHeight + 520);
g.drawLine(-fieldX + 10, -fieldY + infoHeight + 30, -fieldX + 340, -fieldY + infoHeight + 30);
g.drawLine(-fieldX + 10, (-fieldY + infoHeight + 30) - 1, -fieldX + 340, (-fieldY + infoHeight + 30) - 1);
g.drawLine(-fieldX + 10, -fieldY + infoHeight + 520, -fieldX + 340, -fieldY + infoHeight + 520);
g.drawLine(-fieldX + 10, -fieldY + infoHeight + 520 + 1, -fieldX + 340, -fieldY + infoHeight + 520 + 1);
g.drawArc(-fieldX + 125, -fieldY + infoHeight + 225, 100, 100, 0, 360);
g.drawArc(-fieldX + 126, -fieldY + infoHeight + 226, 98, 98, 0, 360);
g.drawLine(-fieldX + 10, -fieldY + infoHeight + 275, -fieldX + 340, -fieldY + infoHeight + 275);
g.drawLine(-fieldX + 10, -fieldY + infoHeight + 276, -fieldX + 340, -fieldY + infoHeight + 276);
g.drawLine(-fieldX + 74, (-fieldY + infoHeight + 90) - 1, -fieldX + 276, (-fieldY + infoHeight + 90) - 1);
g.drawLine(-fieldX + 74, -fieldY + infoHeight + 90, -fieldX + 276, -fieldY + infoHeight + 90);
g.drawLine(-fieldX + 74, -fieldY + infoHeight + 30, -fieldX + 74, -fieldY + infoHeight + 90);
g.drawLine(-fieldX + 74 + 1, -fieldY + infoHeight + 30, -fieldX + 74 + 1, -fieldY + infoHeight + 90);
g.drawLine((-fieldX + 276) - 1, -fieldY + infoHeight + 30, (-fieldX + 276) - 1, -fieldY + infoHeight + 90);
g.drawLine(-fieldX + 276, -fieldY + infoHeight + 30, -fieldX + 276, -fieldY + infoHeight + 90);
g.drawLine(-fieldX + 74, -fieldY + infoHeight + 460, -fieldX + 276, -fieldY + infoHeight + 460);
g.drawLine(-fieldX + 74, (-fieldY + infoHeight + 460) - 1, -fieldX + 276, (-fieldY + infoHeight + 460) - 1);
g.drawLine(-fieldX + 74, -fieldY + infoHeight + 460, -fieldX + 74, -fieldY + infoHeight + 520);
g.drawLine(-fieldX + 74 + 1, -fieldY + infoHeight + 460, -fieldX + 74 + 1, -fieldY + infoHeight + 520);
g.drawLine((-fieldX + 276) - 1, -fieldY + infoHeight + 460, (-fieldX + 276) - 1, -fieldY + infoHeight + 520);
g.drawLine(-fieldX + 276, -fieldY + infoHeight + 460, -fieldX + 276, -fieldY + infoHeight + 520);
g.drawArc((-fieldX + 175) - 101, (-fieldY + infoHeight + 125) - 202, 202, 202, 220, 100);
g.drawArc((-fieldX + 175) - 100, (-fieldY + infoHeight + 125) - 201, 200, 200, 220, 100);
g.drawArc((-fieldX + 175) - 101, (-fieldY + infoHeight + 550) - 125, 202, 202, 40, 100);
g.drawArc((-fieldX + 175) - 100, (-fieldY + infoHeight + 550) - 124, 200, 200, 40, 100);
if(fieldY <= gate1.getHeight())
g.drawImage(gate1, -fieldX + (350 - gate1.getWidth()) / 2, -fieldY + infoHeight + 0, 0);
if(fieldY >= 550 - screenHeight - gate2.getHeight())
g.drawImage(gate2, -fieldX + (350 - gate2.getWidth()) / 2, (-fieldY + infoHeight + 550) - gate2.getHeight(), 0);
}
public void paint(Graphics g)
{
if(mode != 0)
{
drawField(bg);
for(int i = 0; i < 7; i++)
{
users[i].draw(bg);
comps[i].draw(bg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -