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

📄 gamecanvas.java

📁 剪刀石头布 小时候的东西 同样是WTK编译就可以运行.源码完整
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 

import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.*;

public class GameCanvas extends Canvas
    implements CommandListener
{

    private final int ROCK = 0;
    private final int PAPER = 1;
    private final int SCISSORS = 2;
    private int canvasWidth;
    private int canvasHeight;
    private int middleX;
    private PushBack parent;
    private Command quitC;
    private Command resetC;
    private Command helpC;
    private Command aboutC;
    private AboutAlert about;
    private HelpAlert help;
    private Image boxImg;
    private Image rockImg;
    private Image paperImg;
    private Image scissorsImg;
    private Image rockPhoneImg;
    private Image paperPhoneImg;
    private Image scissorsPhoneImg;
    private Image userImg[];
    private Image phoneImg[];
    private int boxX;
    private int boxY;
    private int index;
    private int user[] = {
        0, 1, 2
    };
    private int phone[] = {
        0, 1, 2
    };
    private Random random;
    private int userX1;
    private int userX2;
    private int userX3;
    private int phoneX1;
    private int phoneX2;
    private int phoneX3;
    private boolean gameOver;
    private String message;
    private Font font;

    public GameCanvas(PushBack pushback)
    {
        canvasWidth = getWidth();
        canvasHeight = getHeight();
        middleX = canvasWidth / 2;
        parent = null;
        quitC = null;
        resetC = null;
        helpC = null;
        aboutC = null;
        about = null;
        help = null;
        boxImg = null;
        rockImg = null;
        paperImg = null;
        scissorsImg = null;
        rockPhoneImg = null;
        paperPhoneImg = null;
        scissorsPhoneImg = null;
        userImg = null;
        phoneImg = null;
        boxX = 0;
        boxY = 0;
        index = 0;
        random = null;
        userX1 = 0;
        userX2 = 0;
        userX3 = 0;
        phoneX1 = canvasWidth - 16;
        phoneX2 = phoneX1;
        phoneX3 = phoneX2;
        gameOver = false;
        message = "";
        font = Font.getFont(0, 0, 8);
        parent = pushback;
        try
        {
            boxImg = Image.createImage("/box.png");
            rockImg = Image.createImage("/rock.png");
            paperImg = Image.createImage("/paper.png");
            scissorsImg = Image.createImage("/scissors.png");
            rockPhoneImg = Image.createImage("/rock_phone.png");
            paperPhoneImg = Image.createImage("/paper_phone.png");
            scissorsPhoneImg = Image.createImage("/scissors_phone.png");
            userImg = new Image[3];
            phoneImg = new Image[3];
            userImg[0] = rockImg;
            userImg[1] = paperImg;
            userImg[2] = scissorsImg;
            phoneImg[0] = rockPhoneImg;
            phoneImg[1] = paperPhoneImg;
            phoneImg[2] = scissorsPhoneImg;
        }
        catch(IOException _ex) { }
        resetC = new Command("Reset", 4, 1);
        quitC = new Command("Quit", 4, 2);
        helpC = new Command("Help", 4, 3);
        aboutC = new Command("About", 4, 4);
        addCommand(resetC);
        addCommand(quitC);
        addCommand(helpC);
        addCommand(aboutC);
        setCommandListener(this);
        random = new Random();
        about = new AboutAlert("About");
        about.setTimeout(-2);
        help = new HelpAlert("Help");
        help.setTimeout(-2);
    }

    private void cleanUp()
    {
        quitC = null;
        resetC = null;
        helpC = null;
        aboutC = null;
        about = null;
        help = null;
        boxImg = null;
        rockImg = null;
        paperImg = null;
        scissorsImg = null;
        rockPhoneImg = null;
        paperPhoneImg = null;
        scissorsPhoneImg = null;
        userImg = null;
        phoneImg = null;
        user = null;
        phone = null;
        random = null;
    }

    public void commandAction(Command command, Displayable displayable)
    {
        if(command == quitC)
        {
            cleanUp();
            System.gc();
            parent.exitMIDlet();
        } else
        if(command == resetC)
            reset();
        else
        if(command == helpC)
            parent.display.setCurrent(help, this);
        else
        if(command == aboutC)
            parent.display.setCurrent(about, this);
    }

    private void comparePieces()
    {
        for(int i = 0; i < 3; i++)
            if(user[i] == 0)
            {
                if(phone[i] == 1)
                    stepBack(i);
                else
                if(phone[i] == 2)
                    stepForward(i);
            } else
            if(user[i] == 1)
            {
                if(phone[i] == 0)
                    stepForward(i);
                else
                if(phone[i] == 2)
                    stepBack(i);
            } else
            if(user[i] == 2)
                if(phone[i] == 0)
                    stepBack(i);
                else
                if(phone[i] == 1)
                    stepForward(i);

    }

    public void keyPressed(int i)
    {
        if(i == 50)
        {
            boxY = boxY - 16;
            if(boxY < 0)
                boxY = 32;
            index = index - 1;
            if(index < 0)
                index = 2;
            setBoxX(index);
        } else
        if(i == 56)
        {
            boxY = boxY + 16;
            if(boxY > 32)
                boxY = 0;
            index = index + 1;
            if(index > 2)
                index = 0;
            setBoxX(index);
        } else
        if(i == 52)
        {
            if(user[index] == 0)
            {
                userImg[index] = paperImg;
                user[index] = 1;
            } else
            if(user[index] == 1)
            {
                userImg[index] = scissorsImg;
                user[index] = 2;
            } else
            if(user[index] == 2)
            {
                userImg[index] = rockImg;
                user[index] = 0;
            }
        } else
        if(i == 53)
        {
            random.setSeed(System.currentTimeMillis());
            for(int j = 0; j < 3; j++)
            {
                int k = 0;
                k = Math.abs(random.nextInt()) % 3;
                if(k == 0)
                {
                    phoneImg[j] = rockPhoneImg;
                    phone[j] = 0;
                } else
                if(k == 1)
                {
                    phoneImg[j] = paperPhoneImg;
                    phone[j] = 1;
                } else
                if(k == 2)
                {
                    phoneImg[j] = scissorsPhoneImg;
                    phone[j] = 2;
                }
            }

            comparePieces();
            results();
            setBoxX(index);
        }
        repaint();
    }

    public void paint(Graphics g)
    {
        int i = g.getColor();
        g.setColor(0xffffff);
        g.fillRect(0, 0, canvasWidth - 1, canvasHeight - 1);
        g.setColor(i);
        g.drawLine(middleX, 0, middleX, 48);
        g.drawImage(boxImg, boxX, boxY, 20);
        g.drawImage(userImg[0], userX1, 0, 20);
        g.drawImage(userImg[1], userX2, 16, 20);
        g.drawImage(userImg[2], userX3, 32, 20);
        g.drawImage(phoneImg[0], phoneX1, 0, 20);
        g.drawImage(phoneImg[1], phoneX2, 16, 20);
        g.drawImage(phoneImg[2], phoneX3, 32, 20);
        if(gameOver)
            g.drawString(message, middleX - font.stringWidth(message) / 2, 0, 20);
    }

    private void reset()
    {
        boxX = 0;
        boxY = 0;
        index = 0;
        user[0] = 0;
        user[1] = 1;
        user[2] = 2;
        phone[0] = 0;
        phone[1] = 1;
        phone[2] = 2;
        userImg[0] = rockImg;
        userImg[1] = paperImg;
        userImg[2] = scissorsImg;
        phoneImg[0] = rockPhoneImg;
        phoneImg[1] = paperPhoneImg;
        phoneImg[2] = scissorsPhoneImg;
        userX1 = 0;
        userX2 = 0;
        userX3 = 0;
        phoneX1 = canvasWidth - 16;
        phoneX2 = canvasWidth - 16;
        phoneX3 = canvasWidth - 16;
        gameOver = false;
        message = "";
        repaint();
    }

    private void results()
    {
        if((userX1 == 32 || userX2 == 32 || userX3 == 32) && (phoneX1 == 48 || phoneX2 == 48 || phoneX3 == 48))
        {
            message = "Tie";
            gameOver = true;
        } else
        if(userX1 == 32 || userX2 == 32 || userX3 == 32)
        {
            message = "You win";
            gameOver = true;
        } else
        if(phoneX1 == 48 || phoneX2 == 48 || phoneX3 == 48)
        {
            message = "You lose";
            gameOver = true;
        }
    }

    private void setBoxX(int i)
    {
        switch(i)
        {
        case 0: // '\0'
            boxX = userX1;
            break;

        case 1: // '\001'
            boxX = userX2;
            break;

        case 2: // '\002'
            boxX = userX3;
            break;
        }
    }

    private void stepBack(int i)
    {
        switch(i)
        {
        default:
            break;

        case 0: // '\0'
            userX1 = userX1 - 16;
            if(userX1 < 0)
                userX1 = 0;
            phoneX1 = phoneX1 - 16;
            if(phoneX1 < 48)
                phoneX1 = 48;
            break;

        case 1: // '\001'
            userX2 = userX2 - 16;
            if(userX2 < 0)
                userX2 = 0;
            phoneX2 = phoneX2 - 16;
            if(phoneX2 < 48)
                phoneX2 = 48;
            break;

        case 2: // '\002'
            userX3 = userX3 - 16;
            if(userX3 < 0)
                userX3 = 0;
            phoneX3 = phoneX3 - 16;
            if(phoneX3 < 48)
                phoneX3 = 48;
            break;
        }
    }

    private void stepForward(int i)
    {
        switch(i)
        {
        default:
            break;

        case 0: // '\0'
            userX1 = userX1 + 16;
            if(userX1 > 32)
                userX1 = 32;
            phoneX1 = phoneX1 + 16;
            if(phoneX1 > canvasWidth - 16)
                phoneX1 = canvasWidth - 16;
            break;

        case 1: // '\001'
            userX2 = userX2 + 16;
            if(userX2 > 32)
                userX2 = 32;
            phoneX2 = phoneX2 + 16;
            if(phoneX2 > canvasWidth - 16)
                phoneX2 = canvasWidth - 16;
            break;

        case 2: // '\002'
            userX3 = userX3 + 16;
            if(userX3 > 32)
                userX3 = 32;
            phoneX3 = phoneX3 + 16;
            if(phoneX3 > canvasWidth - 16)
                phoneX3 = canvasWidth - 16;
            break;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -