⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamescreen.java~6~

📁 Source code of J2ME game called Action Soccer. Great for used. Already configurations with JBuilder
💻 JAVA~6~
📖 第 1 页 / 共 5 页
字号:
// 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 + -