📄 gameview.java
字号:
break;
}
break;
case Const.FIGHT_HERO_SELECT:
switch (curKey) {
case Const.KEY_UP:
enemyIndex = ++enemyIndex > enemys.size() - 1 ? 0 : enemyIndex;
break;
case Const.KEY_DOWN:
enemyIndex = --enemyIndex < 0 ? enemys.size() - 1 : enemyIndex;
break;
case Const.KEY_FIRE:
curFightState = Const.FIGHT_HERO_GO;
break;
}
break;
}
}
// ============================END=====================
// ==========================系统方法=====================
public void showNotify() {
}
public void hideNotify() {
}
public void paint(Graphics g) {
g.setColor(0);
g.fillRect(0, 0, Const.SCREEN_WIDTH, Const.SCREEN_HEIGHT);
switch (curScreenState) {
case Const.GAME_SCENE:
DrawScreenScene();
break;
case Const.GAME_FIGHT:
DrawScreenFight();
break;
case Const.GAME_PAUSE:
DrawPause();
break;
case Const.GAME_SYSTEM:
DrawSystem();
break;
case Const.GAME_SYSTEM_TOOLS:
DrawSystemTools();
break;
case Const.GAME_TOOLS:
DrawTools();
break;
case Const.GAME_LOGO:
DrawScreenLogo();
break;
case Const.GAME_HELP:
DrawHelp();
break;
case Const.GAME_ALERT:
DrawAlert();
break;
case Const.GAME_STATUE:
DrawStatue();
break;
case Const.GAME_SAVE:
DrawSave();
break;
case Const.GAME_LOAD:
DrawLoad();
break;
case Const.GAME_TASK:
DrawTask();
break;
case Const.GAME_VOL:
DrawVol();
break;
case Const.GAME_DIALOG:
DrawDialog();
break;
case Const.GAME_OVER:
DrawOver();
break;
}
g.drawImage(bufImage, 0, 0, 20);
}
protected void keyPressed(int key) {
curKey = key;
switch (curScreenState) {
case Const.GAME_SCENE:
SceneKeyEvent();
break;
case Const.GAME_FIGHT:
FightKeyEvent();
break;
case Const.GAME_PAUSE:
PauseKeyEvent();
break;
case Const.GAME_SYSTEM:
SystemKeyEvent();
break;
case Const.GAME_TOOLS:
ToolsKeyEvent();
break;
case Const.GAME_SYSTEM_TOOLS:
SystemToolsEvent();
break;
case Const.GAME_LOGO:
MenuKeyEvent();
break;
case Const.GAME_HELP:
HelpKeyEvent();
break;
case Const.GAME_STATUE:
StatueKeyEvent();
break;
case Const.GAME_SAVE:
SaveKeyEvent();
break;
case Const.GAME_LOAD:
LoadKeyEvent();
break;
case Const.GAME_VOL:
VolKeyEvent();
break;
case Const.GAME_DIALOG:
DialogKeyEvent();
break;
}
}
protected void keyReleased(int key) {
switch (curScreenState) {
case Const.GAME_SCENE:
switch (curKey) {
case Const.KEY_LEFT:
player.curAction = new byte[] { Const.HERO_STAND_FRAME[0] };
break;
case Const.KEY_UP:
player.curAction = new byte[] { Const.HERO_STAND_FRAME[1] };
break;
case Const.KEY_RIGHT:
player.curAction = new byte[] { Const.HERO_STAND_FRAME[2] };
break;
case Const.KEY_DOWN:
player.curAction = new byte[] { Const.HERO_STAND_FRAME[3] };
break;
}
curKey = 2000;
break;
case Const.GAME_FIGHT:
break;
}
}
// =====================END=========================
// ================公共方法======================
// 绘制文字菜单
public void DrawStringMenu(String[] list, Graphics g) {
int top = (Const.SCREEN_HEIGHT - fontHeight * list.length - (list.length - 1 + 2)
* fontMargin) / 2;
// 绘制半透明底图
DrawAlphaRect(
(Const.SCREEN_WIDTH - fontWidth * 4 - 2 * this.fontMargin) / 2,
top, fontWidth * 4 + 2 * this.fontMargin, fontHeight
* list.length + fontMargin, 0x8900ffff, g);
// 绘制选择框
g.setColor(0xff00ff);
g.fillRoundRect(
(Const.SCREEN_WIDTH - fontWidth * 4 - 2 * this.fontMargin) / 2,
top + curIndex * fontHeight, fontWidth * 4 + 2
* this.fontMargin, fontHeight + 4, 5, 5);
// 绘制文字
g.setColor(0xffffff);
for (int i = 0; i < list.length; i++)
g.drawString(list[i], Const.SCREEN_WIDTH / 2, top + fontHeight * i
+ this.fontMargin, Graphics.TOP | Graphics.HCENTER);
}
// 绘制描述菜单
public void DrawIntroduce(String s, Graphics g) {
this.DrawAlphaRect(Const.SCREEN_WIDTH-150, Const.SCREEN_HEIGHT-60, 120, 40, 0x8900ff00, g);
g.setColor(0);
g.drawString(s, Const.SCREEN_WIDTH-140, Const.SCREEN_HEIGHT-50, 20);
}
// 绘制切割图片
public void drawClipImg(int xScreenPos, int yScreenPos, int imgW, int imgH,
int xImgPos, int yImgPos, Image img, Graphics g) {
if (img == null) {
return;
}
g.setClip(xScreenPos, yScreenPos, imgW, imgH);
g.drawImage(img, xScreenPos - xImgPos, yScreenPos - yImgPos, 20);
g.setClip(0, 0, Const.SCREEN_WIDTH, Const.SCREEN_HEIGHT);
}
// 进入工具界面
public void GotoTools() {
curScreenState = Const.GAME_TOOLS;
curIndex = 0;
}
// 进入游戏封面
public void GotoMenu() {
curScreenState = Const.GAME_LOGO;
}
// 进入暂停状态
public void GotoPause() {
curScreenState = Const.GAME_PAUSE;
curIndex = 0;
}
//进入系统界面
public void GotoSystem() {
curScreenState = Const.GAME_SYSTEM;
curIndex = 0;
}
// 进入帮助界面
public void GotoHelp() {
curScreenState = Const.GAME_HELP;
curIndex = 0;
}
//进入提示信息界面
public void GotoAlert() {
curScreenState = Const.GAME_ALERT;
curIndex = 0;
}
// 从战斗场景中返回
public void GotoScene() {
this.setFullScreenMode(true);
// 图片初始化
try {
imgMap = Image.createImage("/map0.png");
bgMap = Image.createImage("/bg2.png");
} catch (IOException e) {
System.out.println("地图读取失败!请检测地图相关路径是否准确!");
e.printStackTrace();
}
// 获得地图宽和高
maxWidth = MAP_TILE_SIZE * mapData[0].length;
maxHeight = MAP_TILE_SIZE * mapData.length;
curScreenState = Const.GAME_SCENE;
// 主角初始化
player = new Hero(this);
}
// 进入战斗场景
public void GotoFight() {
this.curScreenState = Const.GAME_FIGHT;
player.curAction = Const.HERO_LEFT_FRAME;
this.curFightState = Const.FIGHT_HERO_WAIT;
if (enemys == null) {
enemys = new Vector();
} else {
enemys.removeAllElements();
}
int count = r.nextInt(3) + 1;
for (int i = 0; i < count; i++) {
int type = 0;
if(mapID == 0) {
type = r.nextInt(2) + 1;
} else if(mapID == 1) {
type = r.nextInt(3) + 2;
}
enemys.addElement(new Enemy(this, Const.ENEMY_X, Const.ENEMY_Y[i],
(byte) i, (byte)type));
exp += type * 2;
}
}
//进入游戏结束场景
public void GotoGameOver() {
try {
gameOver = Image.createImage("/GameOver02.png");
} catch (IOException e) {
e.printStackTrace();
}
curScreenState = Const.GAME_OVER;
}
//进入存档界面
public void GotoSave() {
curScreenState = Const.GAME_SAVE;
}
//进入读取界面
public void GotoLoad() {
curScreenState = Const.GAME_LOAD;
}
// 切换地图
public void ChangeMap(byte id) {
mapID = id;
mapData = Const.MAP_DATA[mapID];
mapTrigger = Const.MAP_TRIGGER[mapID];
}
// 结束游戏
public void ExitGame() {
GameApp.instance.destroyApp(false);
GameApp.instance.notifyDestroyed();
}
// 页面切换时释放资源
public void Release() {
}
// 设置提示文字显示
public void SetAlertCount(String[] s) {
alertCount = s;
}
// 读取游戏
public void LoadGame() {
GotoScene();
ByteArrayInputStream bais = null;
DataInputStream dis = null;
byte[] data = null;
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(RMS_NAME, false);
data = rs.getRecord(curIndex + 1);
} catch (RecordStoreFullException e) {
e.printStackTrace();
} catch (RecordStoreNotFoundException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
}
bais = new ByteArrayInputStream(data);
dis = new DataInputStream(bais);
try {
// for(int i=0; i<save.length; i++) {
// save[i] = dis.readUTF();
// }
player.x = dis.readInt();
player.y = dis.readInt();
player.hp = dis.readInt();
player.mp = dis.readInt();
player.hpTotal = dis.readInt();
player.mpTotal = dis.readInt();
player.level = dis.readInt();
player.at = dis.readInt();
player.def = dis.readInt();
player.exp = dis.readInt();
player.name = dis.readUTF();
player.brand = dis.readUTF();
mapID = dis.readByte();
ChangeMap(mapID);
curIndex = 0;
this.SetAlertCount(new String[] {"记录读取成功"});
this.GotoAlert();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bais.close();
dis.close();
rs.closeRecordStore();
} catch (IOException e) {
e.printStackTrace();
} catch (RecordStoreNotOpenException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
}
}
}
// 保存游戏
public void SaveGame() {
ByteArrayOutputStream baos = null;
DataOutputStream dos = null;
byte[] data = null;
baos = new ByteArrayOutputStream();
dos = new DataOutputStream(baos);
save[curIndex] = "等级" + player.level;
try {
// for(int i=0; i<save.length; i++) {
// dos.writeUTF(save[i]);
// }
dos.writeInt(player.x);
dos.writeInt(player.y);
dos.writeInt(player.hp);
dos.writeInt(player.mp);
dos.writeInt(player.hpTotal);
dos.writeInt(player.mpTotal);
dos.writeInt(player.level);
dos.writeInt(player.at);
dos.writeInt(player.def);
dos.writeInt(player.exp);
dos.writeUTF(player.name);
dos.writeUTF(player.brand);
dos.writeByte(mapID);
} catch (IOException e1) {
e1.printStackTrace();
}
data = baos.toByteArray();
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(RMS_NAME, true);
if(rs.getNumRecords() <= 0) {
rs.addRecord(data, 0, 0);
rs.addRecord(data, 0, 0);
rs.addRecord(data, 0, 0);
rs.setRecord((curIndex + 1), data, 0, data.length);
} else {
rs.setRecord((curIndex + 1), data, 0, data.length);
}
curIndex = 0;
this.SetAlertCount(new String[] {"记录保存成功"});
this.GotoAlert();
} catch (RecordStoreFullException e) {
e.printStackTrace();
} catch (RecordStoreNotFoundException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
} finally {
try {
baos.close();
dos.close();
rs.closeRecordStore();
} catch (RecordStoreNotOpenException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// ================END======================
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -