gamecanvas.java

来自「这是一个用JAVA写的很好玩的好游戏!是更新版!加了碰撞上面都有的!希望大家喜欢」· Java 代码 · 共 149 行

JAVA
149
字号
import java.io.IOException;

import javax.microedition.lcdui.*;

public class GameCanvas extends Canvas implements Runnable {
	static int screen_w;

	static int screen_h;

	Hero hero;

	boolean up, down, left, right;

	Image mapImg;

	int map_w;

	int map_h;

	public GameCanvas() {
		this.setFullScreenMode(true);
		screen_w = this.getWidth();
		screen_h = this.getHeight();
		try {
			mapImg = Image.createImage("/050-Roof02.png");
			map_w = 16;
			map_h = 16;
		} catch (IOException e) {
			e.printStackTrace();
		}
		hero = new Hero();
		hero.initHero(Hero.STOP, Hero.DOWN, 100, 100);
		new Thread(this).start();
	}

	public void run() {
		while (true) {
			if (up || down || left || right) {
				hero.state = Hero.MOVE;
			} else {
				hero.state = Hero.STOP;
			}
			hero.move();
			repaint();
			try {
				Thread.sleep(50);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	public void paint(Graphics g) {
		g.setColor(0xff0000);
		g.fillRect(0, 0, screen_w, screen_h);
		paintMap(g);
		hero.paint(g);
	}

	public void paintMap(Graphics g) {
		for (int i = 0; i < Map.map3_map0.length; i++) {
			for (int j = 0; j < Map.map3_map0[i].length; j++) {
				int index = Map.map3_map0[i][j] - 1;
				if (index >= 0) {
					g.setClip(j * map_w, i * map_h, map_w, map_h);
					g.drawImage(mapImg, j * map_w - index % 6 * map_w, i
							* map_h - index / 6 * map_h, 0);
				}
			}
		}
	}

	public void keyPressed(int keyCode) {
		if (keyCode == Canvas.KEY_NUM2) {
			up = true;
			hero.dir = Hero.UP;
		}
		if (keyCode == Canvas.KEY_NUM8) {
			down = true;
			hero.dir = Hero.DOWN;
		}
		if (keyCode == Canvas.KEY_NUM4) {
			left = true;
			hero.dir = Hero.LEFT;
		}
		if (keyCode == Canvas.KEY_NUM6) {
			right = true;
			hero.dir = Hero.RIGHT;
		}
		if (keyCode == Canvas.KEY_NUM5) {

		}
		keyCode = this.getGameAction(keyCode);
		if (keyCode == Canvas.UP) {
			up = true;
			hero.dir = Hero.UP;
		}
		if (keyCode == Canvas.DOWN) {
			down = true;
			hero.dir = Hero.DOWN;
		}
		if (keyCode == Canvas.LEFT) {
			left = true;
			hero.dir = Hero.LEFT;
		}
		if (keyCode == Canvas.RIGHT) {
			right = true;
			hero.dir = Hero.RIGHT;
		}
		if (keyCode == Canvas.FIRE) {

		}
	}

	public void keyReleased(int keyCode) {
		if (keyCode == Canvas.KEY_NUM2) {
			up = false;
		}
		if (keyCode == Canvas.KEY_NUM8) {
			down = false;
		}
		if (keyCode == Canvas.KEY_NUM4) {
			left = false;
		}
		if (keyCode == Canvas.KEY_NUM6) {
			right = false;
		}
		if (keyCode == Canvas.KEY_NUM5) {

		}
		keyCode = this.getGameAction(keyCode);
		if (keyCode == Canvas.UP) {
			up = false;
		}
		if (keyCode == Canvas.DOWN) {
			down = false;
		}
		if (keyCode == Canvas.LEFT) {
			left = false;
		}
		if (keyCode == Canvas.RIGHT) {
			right = false;
		}
		if (keyCode == Canvas.FIRE) {

		}
	}
}

⌨️ 快捷键说明

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