📄 fu_fei.java
字号:
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Fu_Fei extends MIDlet {
public Fu_Fei() {
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(new Tao());
}
class Tao extends GameCanvas implements Runnable {
Graphics g;// 画图工具
Image image, image1, image2, image3, image4, image5, image6;// 图片
Alert alert;
LayerManager lm;// 图层管理
Thread th;// 线程
TiledLayer tl;// 图层
int y, playX, playY, ditux, ditu1x, ditu2x;// y是菜单的上下移动的坐标 playx,playy
// 人物的坐标
int width, height;// 屏宽和高
Sprite sp;// 精灵
int state;// 状态
final int MENU = 0;// 菜单状态
final int GAME = 1;// 菜单状态
final int HELP = 2;// 菜单状态
final int HEIGHTS = 3;// 菜单状态
protected Tao() {// 构造方法
super(false);
setFullScreenMode(true);
g = getGraphics();
width = getWidth();
height = getHeight();
y = 60;
ditux = 0;
ditu1x = ditux + width;
ditu2x = ditux + width + width;
playX = 20;
playY = 20;
try {
image = Image.createImage("/logo1.png");
image1 = Image.createImage("/jieming.PNG");
image2 = Image.createImage("/player.png");
image3 = Image.createImage("/bg4.png");
image4 = Image.createImage("/forest.png");// 游戏背景图
image5 = Image.createImage("/dark.png");// 背景图
image6 = Image.createImage("/dierzangbeijiangtu.PNG");// 背景图
} catch (IOException e) {
e.printStackTrace();
}
// alert = new Alert(null, null, image, AlertType.ALARM);
// g.drawImage(image, 0, 0, 0); // logo图片
lm = new LayerManager();
sp = new Sprite(image2, 24, 24);
lm.append(sp);
go();
}
void cls() {// 清屏
g.setColor(0xffffff);
g.fillRect(0, 0, width, height);
g.setColor(0x000000);
}
void go() {// 线程go方法
if (th == null) {
th = new Thread(this);
th.start();
}
}
void showMenu() {// 开始菜单
g.drawImage(image1, 0, 0, Graphics.TOP | Graphics.LEFT);// 显示背景图片
g.drawRect(140, y, 30, 15);// 画一个矩形
Font font = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_LARGE);// 设置字体
g.setFont(font);
g.drawString("快乐闯关", 55, 150, Graphics.TOP | Graphics.LEFT);
g.setFont(Font.getDefaultFont());
g.drawString("开 始", 140, 60, Graphics.TOP | Graphics.LEFT);
g.drawString("帮 助", 140, 80, Graphics.TOP | Graphics.LEFT);
g.drawString("高 分", 140, 100, Graphics.TOP | Graphics.LEFT);
g.drawString("退 出", 140, 120, Graphics.TOP | Graphics.LEFT);
}
void showGame() {// 写游
g.drawImage(image4, ditux, 0, Graphics.TOP | Graphics.LEFT);
g.drawImage(image5, ditu1x, 0, Graphics.TOP | Graphics.LEFT);
g.drawImage(image6, ditu2x, 0, Graphics.TOP | Graphics.LEFT);
if (ditux <= 0) {
ditux -= 15;
ditu1x = ditux + 175;
}
if (ditu1x <= 0) {
ditu1x -= 15;
ditu2x = ditu1x + 175;
}
if (ditu2x <= 0) {
ditux = ditu2x + 180;
ditu2x -= 15;
}
// g.drawImage(image3, 0, 0, Graphics.TOP | Graphics.LEFT);
sp.setFrame(5);
sp.setPosition(playX, playY);
lm.append(sp);
g.drawString("返回", 150, 180, 0);
lm.paint(g, 0, 0);
}
void showHelp() {// 写帮助
g.drawString("本游戏的基本操作如下", width / 2 - 40, 30, Graphics.TOP
| Graphics.LEFT);
g.drawString(" 本游戏是用左右方向键控制角色前进", 0, 60, Graphics.TOP
| Graphics.LEFT);
g.drawString("后退,上键起跳,1键攻击", 0, 80, Graphics.TOP | Graphics.LEFT);
g.drawString("返回", 150, 180, 0);
}
void showHeightS() {// 写高分
g.drawString("返回", 150, 180, 0);
}
protected void caidan() {// 菜单时的判断
cls();
switch (state) {
case MENU:
showMenu();
break;
case GAME:
showGame();
break;
case HELP:
showHelp();
break;
case HEIGHTS:
showHeightS();
break;
}
}
void menuKeyPressed(int key) {
switch (getGameAction(key)) {
case Canvas.UP:
if (y > 60) {
y -= 20;
} else {
y = 120;
}
break;
case Canvas.DOWN:
if (y < 120) {
y += 20;
} else {
y = 60;
}
break;
case Canvas.FIRE:
if (y == 60) {
state = GAME;
} else if (y == 80) {
state = HELP;
} else if (y == 100) {
state = HEIGHTS;
} else if (y == 120) {
notifyDestroyed();// 关闭,退出
}
break;
default:
break;
}
}
void gamekeyPressed(int key) {
switch (getGameAction(key)) {
case Canvas.UP:// 设置按键上做什么事件
// 设置按键内容
playY -= 3;
break;
case Canvas.DOWN:
playY += 3;
break;
case Canvas.LEFT:
playX -= 3;
break;
case Canvas.RIGHT:
playX += 3;
break;
default:
break;
}
}
protected void keyPressed(int keyCode) {
if (state != MENU && keyCode == -7) {
state = MENU;
y = 60;
}
switch (state) {
case MENU:
menuKeyPressed(keyCode);
break;
case GAME:
gamekeyPressed(keyCode);
break;
}
repaint();
}
// void input() {
// int key = getKeyStates();
// if ((key & UP_PRESSED) != 0) {
// sp.move(0, -3);
// if (sp.getFrame() < 2) {
// sp.nextFrame();
// } else {
// sp.setFrame(0);
// }
// tl.move(0, 3);
// sp.move(0, 3);
// }
// if ((key & DOWN_PRESSED) != 0) {
// sp.move(0, 3);
// if (sp.getFrame() < 8 && sp.getFrame() > 5) {
// sp.nextFrame();
// } else {
// sp.setFrame(6);
// }
// tl.move(0, -3);
// sp.move(0, -3);
// }
// if ((key & LEFT_PRESSED) != 0) {
// sp.move(-3, 0);
// if (sp.getFrame() < 11 && sp.getFrame() > 8) {
// sp.nextFrame();
// } else {
// sp.setFrame(9);
// }
// tl.move(3, 0);
// sp.move(3, 0);
// }
// if ((key & RIGHT_PRESSED) != 0) {
// sp.move(3, 0);
// if (sp.getFrame() < 5 && sp.getFrame() > 2) {
// sp.nextFrame();
// } else {
// sp.setFrame(3);
// }
// tl.move(-3, 0);
// sp.move(-3, 0);
// }
// }
int fps = 10;
boolean isRun = true;
public void run() {
while (isRun) {
long starttime = System.currentTimeMillis();
caidan();
long timetaken = System.currentTimeMillis() - starttime;
if (timetaken < 1000 / fps) {
try {
Thread.sleep(1000 / fps - timetaken);
} catch (Exception e) {
}
}
flushGraphics();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -