📄 role.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 + -