📄 gamecanvas.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 + -