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

📄 gameview.java

📁 我用WTK不能运行
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
				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 + -