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

📄 fu_fei.java

📁 初学者加了注释的,,,,希望能给我提点建意
💻 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 + -