📄 gamefc.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: GameFC.java
import com.nokia.mid.ui.FullCanvas;
import java.io.PrintStream;
import java.util.Hashtable;
import java.util.Vector;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class GameFC extends FullCanvas
implements Runnable
{
public GameFC(Main main1)
{
thread = null;
offscreen = Image.createImage(96, 65);
upPressed = false;
downPressed = false;
leftPressed = false;
rightPressed = false;
firePressed = false;
turtles = new Vector();
main = main1;
main1.cache.put("mario.png", main1.loadImage("mario.png"));
main1.cache.put("bricks.png", main1.loadImage("bricks.png"));
main1.cache.put("characters1.png", main1.loadImage("characters1.png"));
main1.cache.put("characters2.png", main1.loadImage("characters2.png"));
loadLevel(1);
}
private void start()
{
if(thread == null)
{
thread = new Thread(this);
thread.start();
}
}
protected void paint(Graphics g)
{
start();
Graphics g1 = offscreen.getGraphics();
g1.setColor(bgR, bgG, bgB);
g1.fillRect(0, 0, 96, 65);
landscape.paint(g1);
paintTurtles(g1);
mario.paint(g1);
if(gate != null)
gate.paint(g1);
if(levelInfo != null)
levelInfo.paint(g1);
main.paintCenter(g, offscreen);
}
public void run()
{
_L2:
if(!dead && gate == null)
{
landscape.touch();
marioTouchTurtles();
if(rightPressed)
mario.move(1);
if(leftPressed)
mario.move(-1);
if(upPressed)
mario.jump();
mario.idle();
turtleAction();
if(completed)
gate = new Gate(0, main);
break MISSING_BLOCK_LABEL_388;
}
if(dead && mario.yF < 650)
{
mario.dead();
if(mario.deadJump < 4)
{
mario.deadJump++;
mario.yF -= 30;
} else
if(mario.yF < 650)
mario.yF += 40;
} else
if(gate == null)
gate = new Gate(0, main);
if(levelInfo != null && levelInfo.done)
{
if(levelInfo.state == 1)
gate = new Gate(1, main);
if(levelInfo.state == 0)
main.setCurrentDA(new MainMenuL(main));
levelInfo = null;
}
if(gate == null || !gate.done)
break MISSING_BLOCK_LABEL_388;
if(dead)
{
gate = new Gate(2, main);
levelInfo = new LevelInfo(0, this);
continue; /* Loop/switch isn't completed */
}
if(completed)
{
loadLevel(level + 1);
continue; /* Loop/switch isn't completed */
}
gate = null;
repaint();
Thread.currentThread();
Thread.sleep(100L);
continue; /* Loop/switch isn't completed */
Exception exception;
exception;
System.out.println("Run cycle exception: " + exception.toString());
if(main.currentDA == this) goto _L2; else goto _L1
_L1:
thread = null;
return;
}
public void keyPressed(int i)
{
if(main.currentDA != this)
return;
if(i == -6)
{
GameMenuL gamemenul = new GameMenuL(main, this);
main.setCurrentDA(gamemenul);
return;
}
int j = getGameAction(i);
if(j == 1)
upPressed = true;
if(j == 6)
downPressed = true;
if(j == 2)
leftPressed = true;
if(j == 5)
rightPressed = true;
if(j == 8)
firePressed = true;
}
public void keyReleased(int i)
{
int j = getGameAction(i);
if(j == 1)
upPressed = false;
if(j == 6)
downPressed = false;
if(j == 2)
leftPressed = false;
if(j == 5)
rightPressed = false;
if(j == 8)
firePressed = false;
}
public void loadLevel(int i)
{
if(i > 15)
i = 1;
level = i;
if(main.demo && i > 1)
{
main.setCurrentDA(new ActivateFC(main));
return;
}
turtles.removeAllElements();
String s = new String(main.loadResource("levels/level" + i + ".txt"));
Vector vector = main.getLines(s);
String s1 = (String)vector.elementAt(0);
Vector vector1 = main.getTokens(s1);
bgR = Integer.parseInt((String)vector1.elementAt(0));
bgG = Integer.parseInt((String)vector1.elementAt(1));
bgB = Integer.parseInt((String)vector1.elementAt(2));
int j = ((String)vector.elementAt(1)).length();
int k = vector.size();
char ac[][] = new char[j][k - 1];
for(int l = 0; l < k - 1; l++)
{
String s2 = (String)vector.elementAt(l + 1);
for(int i1 = 0; i1 < j; i1++)
ac[i1][l] = s2.charAt(i1);
}
landscape = new Landscape(main, ac, this);
mario = new Mario(main, this);
dead = false;
completed = false;
gate = new Gate(2, main);
levelInfo = new LevelInfo(1, this);
main.saveFile("level", ("" + i).getBytes());
}
private void paintTurtles(Graphics g)
{
int i = turtles.size();
for(int j = 0; j < i; j++)
{
GroundEnemy groundenemy = (GroundEnemy)turtles.elementAt(j);
if(!groundenemy.isActive())
{
turtles.removeElementAt(j);
j--;
i--;
} else
{
groundenemy.paint(g);
}
}
}
private void turtleAction()
{
int i = turtles.size();
for(int j = 0; j < i; j++)
{
GroundEnemy groundenemy = (GroundEnemy)turtles.elementAt(j);
groundenemy.move();
}
}
private void marioTouchTurtles()
{
int i = turtles.size();
for(int j = 0; j < i; j++)
{
GroundEnemy groundenemy = (GroundEnemy)turtles.elementAt(j);
int k = groundenemy.xF / 10;
int l = k + groundenemy.w;
int i1 = groundenemy.yF / 10;
int j1 = i1 + groundenemy.h;
if(main.inside(mario.xF / 10 + mario.w / 2, (mario.yF / 10 + mario.h) - mario.h / 4, k, i1, l, j1))
dead = true;
}
}
private Main main;
private Thread thread;
private Image offscreen;
private boolean upPressed;
private boolean downPressed;
private boolean leftPressed;
private boolean rightPressed;
public boolean firePressed;
public Mario mario;
public Landscape landscape;
public boolean dead;
public boolean completed;
private Gate gate;
private LevelInfo levelInfo;
public int level;
public Vector turtles;
private int bgR;
private int bgG;
private int bgB;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -