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

📄 role.java

📁 一个锻炼记忆力的小游戏
💻 JAVA
字号:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.rms.RecordStoreNotOpenException;

public class role extends Sprite {
	long lFrameTimeElapsed;

	GamePlay gp;

	Graphics graphics;

	private final int MapDOWN = 1;

	private final int MapUP = 2;

	private final int UP = 3;

	private final int DOWN = 4;

	private final int RIGHT = 5;

	private final int LEFT = 6;

	int iSpeed = 24; // 指针的移动速度

	private int iDirection = MapDOWN; // ROLE的方向状态

	private static final int STAY = 1; // ROLE没翻牌的状态

	private static final int RUN = 2; // ROLE翻牌的状态

	private int iState = STAY; // ROLE的状态

	static final int PLAYER_01 = 7;

	private int iType = PLAYER_01;

	private int XW, YH; // 记录第一次翻牌当前的坐标

	private int XW1, YH1; // 记录第二次翻牌当前的坐标

	boolean isAssemble = false; // 翻牌时间控制

	boolean isZhiBiao = true;

	Map map;

	Image fanpaiImage[];

	byte fanPaiByte[];

	public int iFP = 0; // 记录翻牌次数

	public int zhuangtai = 0; // 记录当前的状态

	byte num[];

	public int zeroArry = 0;

	int roleX = 3, roleY = 50;

	public int xSpeed = 0, ySpeed = 0;

	public role(GamePlay gp, Image age, int x, int y) {
		super(age, x, y);
		graphics = gp.gm.gameGraphics;
		this.gp = gp;
		// TODO 自动生成构造函数存根
		num = new byte[2];

		fanpaiImage = new Image[14];

		setPosition(roleX, roleY);

		for (int i = 0; i < 7; i++) {
			try {
				fanpaiImage[i] = Image.createImage("/images/" + i + "A.png");
				fanpaiImage[i + 7] = fanpaiImage[i];
			} catch (IOException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
	}

	public void save(DataOutputStream dos) {
		try {
			dos.writeByte(gp.number);
			dos.writeInt(gp.num);
			dos.writeBoolean(gp.onlyOne);
			dos.writeInt(iFP);
			dos.writeInt(XW);
			dos.writeInt(YH);
			dos.writeInt(xSpeed);
			dos.writeInt(ySpeed);
			dos.writeByte(num[0]);
			dos.writeByte(num[1]);
			dos.writeInt(zeroArry);
			dos.writeInt(zhuangtai);
		} catch (IOException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
	}

	public void read(DataInputStream dis, int numTemp) {
		try {
			
			gp.number = dis.readByte();
			if (numTemp == 1) {
				dis.skipBytes(38);
			}
			gp.num = dis.readInt();
			gp.onlyOne = dis.readBoolean();
			iFP = dis.readInt();
			XW = dis.readInt();
			YH = dis.readInt();
			xSpeed = dis.readInt();
			ySpeed = dis.readInt();
			num[0] = dis.readByte();
			num[1] = dis.readByte();
			zeroArry = dis.readInt();
			zhuangtai = dis.readInt();
			gp.gm.gameGraphics.setColor(255, 0, 0);
			gp.gm.gameGraphics.drawRect(iSpeed * xSpeed, 48 + iSpeed
					* ySpeed, 23, 23);
		} catch (IOException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
	}

	public void render() {
		// drawImage(XW,YH);
		gp.gm.gameGraphics.setColor(255, 0, 0);
		gp.gm.gameGraphics.drawRect(iSpeed * xSpeed, 48 + iSpeed * ySpeed, 23,
				23);
	}

	public final void update(long time_elapsed) {

		switch (iType) {
		case PLAYER_01:
			if (isVisible()) { // 判断可见
				switch (iState) {
				case STAY:
					// if (isAssemble) {
					// this.setPosition(this.getX() - this.getWidth(), this
					// .getY()
					// - this.getHeight());
					// changeRunDir(MapUP);
					// } else
					// changeRunDir(MapDOWN);
					if (time_elapsed / 4 == 0) {
						changeRunDir(MapUP);
					} else if (time_elapsed / 4 != 0) {
						changeRunDir(MapDOWN);
					}

					break;
				}
			}

			if (isAssemble)
				this.timeOut(time_elapsed);
			break;
		}
	}

	public void keyReleased(int action) {

	}

	public void keyPressed(int action) {

		switch (iState) {
		case STAY: // 设置各个方向的帧序列
			if (action == GameCanvas.UP || action == GameCanvas.KEY_NUM2) {
				iDirection = UP;
				move();
				return;
			} else if (action == GameCanvas.RIGHT
					|| action == GameCanvas.KEY_NUM6) {
				iDirection = RIGHT;
				move();
				return;
			} else if (action == GameCanvas.DOWN
					|| action == GameCanvas.KEY_NUM8) {
				iDirection = DOWN;
				move();
				return;
			} else if (action == GameCanvas.LEFT
					|| action == GameCanvas.KEY_NUM4) {
				iDirection = LEFT;
				move();
				return;
			} else if (action == GameCanvas.KEY_STAR) {
				// 保存游戏数据
				// sg.textRms(number);
				try {
					if (gp.sg.rs.getNumRecords() == 0)
						gp.sg.init();
				} catch (RecordStoreNotOpenException e) {
					// TODO 自动生成 catch 块
					e.printStackTrace();
				}
				gp.sg.SavaNum();
			} else if (action == GameCanvas.KEY_NUM5
					|| action == GameCanvas.FIRE) {
				// gp.gm.gameGraphics.drawImage(map.age1[10], this.getX() - 5,
				// this
				// .getY() - 1, 0);
				// int M = 0, N = 0;
				if (gp.bj.arry[xSpeed][ySpeed] != 15)
					if (xSpeed != XW || ySpeed != YH || zhuangtai == 0) {
						if (iFP > 2)
							return;
						else
							iFP = iFP + 1;

						if (iFP == 1) {
							// 第一次翻牌
							// xSpeed ySpeed
							gp.bj.beijing[xSpeed][ySpeed] = gp.bj.arry[xSpeed][ySpeed];
							num[0] = gp.bj.beijing[xSpeed][ySpeed];
							XW = xSpeed;
							YH = ySpeed;
							zhuangtai = 1;

						} else if (iFP == 2) {
							// 第二次翻牌
							gp.bj.beijing[xSpeed][ySpeed] = gp.bj.arry[xSpeed][ySpeed];
							num[1] = gp.bj.beijing[xSpeed][ySpeed];
							XW1 = xSpeed;
							YH1 = ySpeed;
							zhuangtai = 0;
							next();
						}
					}
				return;
			}
			break;
		case RUN:
			break;
		}
	}

	private void timeOut(long time_elapsed) { // 控制ROLE的帧动画播放时间
		if ((lFrameTimeElapsed += time_elapsed) >= 600) {
			gp.bj.beijing[XW][YH] = 14;
			gp.bj.beijing[XW1][YH1] = 14;
			lFrameTimeElapsed = 0;
			iFP = 0;
			isAssemble = false;
		}

	}

	private void next() {
		// 判断第一次翻牌一第二次翻牌是否一样
		if (num[0] == num[1]) {
			gp.bj.arry[XW][YH] = 15;
			gp.bj.arry[XW1][YH1] = 15;
			gp.bj.beijing[XW][YH] = 15;
			gp.bj.beijing[XW1][YH1] = 15;
			gp.num = gp.num + 500; // 相同分数加500
			iFP = 0;
			zeroArry = zeroArry + 2;
		} else {
			gp.num = gp.num - 100; // 不同分数减100
			isAssemble = true;
			// gp.Bj.beijing[XW / 24][YH / 24] = gp.Bj.Map[0];
			// gp.Bj.beijing[getX() / 24][getY() / 24] = gp.Bj.Map[0];
		}
	}

	private final void move() {

		switch (iDirection) {

		case UP:
			// if (this.getY() > 22 + 48)
			// move(0, -iSpeed); // 设置向Y轴方向移动
			// else {
			// this.setPosition(this.getX(), gp.gm.getHeight() - 20 - ((11 -
			// gp.bj.nowHeight) * 24) );
			// }

			if (ySpeed > 0) {
				ySpeed = ySpeed - 1;
			} else {
				ySpeed = gp.bj.nowHeight - 1;
			}
			break;
		case RIGHT:
			// if (this.getX() < gp.gm.WIDTH - 24 -((10 - gp.bj.nowWidth) * 24)
			// )
			// move(iSpeed, 0); // 设置向X轴方向移动
			// else {
			// this.setPosition(3, this.getY());
			// }

			if (xSpeed <= gp.bj.nowWidth - 2) {
				xSpeed = xSpeed + 1;
			} else {
				xSpeed = 0;
			}

			break;
		case DOWN:
			// if (this.getY() < gp.gm.HEIGHT - 24 - ((11 - gp.bj.nowHeight) *
			// 24))
			// move(0, iSpeed); // 设置向Y轴方向移动
			// else {
			// this.setPosition(this.getX(), 2 + 48);
			// }

			if (ySpeed <= gp.bj.nowHeight - 2) {
				ySpeed = ySpeed + 1;
			} else {
				ySpeed = 0;
			}
			break;
		case LEFT:
			// if (this.getX() > 19)
			// move(-iSpeed, 0); // 设置向X轴方向移动
			// else {
			// this.setPosition(gp.gm.WIDTH - 22 - ((10 - gp.bj.nowWidth) * 24),
			// this.getY());
			// }

			if (xSpeed > 0) {
				xSpeed = xSpeed - 1;
			} else {
				xSpeed = gp.bj.nowWidth - 1;
			}
			break;
		}
	}

	private void changeRunDir(int dir) {

		switch (dir) {
		case MapUP:
			this.setTransform(TRANS_ROT180);
			break;
		case MapDOWN:
			this.setTransform(TRANS_NONE);
			break;
		}

	}

	public int UpSequence[] = { 0 }; // 向右的帧序列

}

⌨️ 快捷键说明

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