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

📄 gamecanvas.java

📁 手机版大航海时代
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
						power[6] -= GambingMoney[color];
					} else {
						power[6] = 0;
						dm = "你已经没钱了";

						isAgain = false;
						scene = 25;
						return;
					}
					// 进入提示界面
					scene = 21;
					return;
				}
				break;
			// 选择不要的时候
			case 1:

				// 进入NPC操作状态
				AI = true;

				// 不显示提示文字
				isShow = false;
				break;

			}
		}
		// 当按下左软键的时候,回到港口界面
		if (keyCode == -6) {
			scene = 2;
			reStart();
		}
	}

	/**
	 * npcAI的设定
	 */
	public void npcAI() {
		// 当NPC点数比玩家小
		if (aNumber < pNumber) {
			// 而且NPC的点数不超过21的话
			if (aNumber < 21) {
				// 发一张牌
				aNumber = Gambing(aNumber);
				dm = " ";
			}
		}
	}

	/**
	 * 提示是否进入港口界面按键处理
	 * 
	 * @param keyCode
	 *            int 键值
	 * @param action
	 *            int 游戏动作
	 */
	public void keySok(int keyCode, int action) {

		// 根据游戏动作判断玩家选择哪个
		switch (action) {
		// 向左
		case LEFT:
			if (repairLabel > 0) {
				repairLabel = 0;
			} else {
				repairLabel = 1;
			}
			break;
		// 向右
		case RIGHT:
			if (repairLabel < 1) {
				repairLabel = 1;
			} else {
				repairLabel = 0;
			}
			break;
		}
		// 当按下确定的时候
		if (keyCode == -7) {
			if (power[6] > 300) {
				// 判断玩家选择哪个
				switch (repairLabel) {
				// 是
				case 0:

					// 还原默认值
					reStart();

					// 依次为玩家和NPC发2张牌
					for (int i = 0; i < 2; i++) {
						aNumber = Gambing(aNumber);

						pNumber = Gambing(pNumber);
					}

					// 进入赌博界面
					scene = 22;

					// 是否再来一次设置为false
					isAgain = false;
					break;
				// 否
				case 1:

					// 进入港口界面
					scene = 2;

					// 还原默认值
					reStart();

					// 是否再来一次设置为false
					isAgain = false;
					break;
				}
			} else {
				dm = "没钱你也来这里";
				scene = 25;
			}
		}
	}

	/**
	 * 主线任务对话事件处理
	 * 
	 * @param keyCode键值
	 * @param action游戏动作
	 */
	public void kedog(int keyCode, int action) {
		// 如果主线任务对话的下标小于任务进度的数组的话
		if (mainindex < mainDalogLenth[mainDalogSum]) {
			mainDalog = mainTaskInfo[mainindex];
			// 当主线任务对话的下标小于主线任务对话的长度的时候
			if (mainindex < mainTaskInfo.length) {
				// 显示下一个对话
				mainindex++;
			}
		} else {
			// 显示港口界面
			scene = 2;
			// 对话进度小于主线任务对话的长度
			if (mainDalogSum < mainDalogLenth.length) {
				mainDalogSum++;
			}
		}
		// 如果主线任务的进度到达2的时候
		if (mainTask[1] == 2) {
			// 长度小于当前任务的长度
			if (mainindex < mainDalogLenth[mainDalogSum]) {
				mainDalog = mainTaskInfo[mainindex];
				// 当主线任务对话的下标小于主线任务对话的长度的时候
				if (mainindex < mainTaskInfo.length) {
					// 显示下一个对话
					mainindex++;
				}

			} else {
				// 显示港口界面
				scene = 2;
				// 对话进度小于主线任务对话的长度
				if (mainDalogSum < mainDalogLenth.length) {
					mainDalogSum++;
				}
			}

		}
	}

	/**
	 * 是否移动下标
	 * 
	 * @param powernum
	 *            int 玩家属性的下标
	 * @param max
	 *            int[] 需要金钱的数组
	 * @param mindex
	 *            int 上限的下标
	 */
	public void moveIndex(int powernum, int max[], int mindex) {
		if (power[powernum] == max[moenyindex[mindex]]
				&& power[0] >= moenyindex[mindex]) {
			moenyindex[mindex]++;
		}
	}

	/**
	 * 升级属性事件处理
	 * 
	 * @param powernum所选升级属性
	 * @param max当前船体升级上限
	 * @param money升级需要金钱
	 * @param sum升级增量
	 */
	protected void LvUp(int powernum, int max[], int index, int mindex, int sum) {

		if (power[powernum] < max[moenyindex[mindex]]) {
			if (power[6] > Money[index][moenyindex[mindex]]) {

				power[6] -= Money[index][moenyindex[mindex]];
				power[powernum] += sum;
				// 提示升级成功
				scene = 11;
				dm = "升级成功";

			} else {
				// 提示金币不足,无法升级
				scene = 11;
				dm = "金币不足,无法升级";
			}

		} else {
			// 提示船体等级不够,无法升级
			scene = 11;
			dm = "船体等级不够,无法升级";
		}

	}

	/**
	 * 船体升级属性事件处理
	 * 
	 * @param powernum当前船体等级
	 * @param lvsoundnum需要声望
	 * @param moneynum需要花费的金钱
	 */
	protected void LvUp(int powernum, int lvsoundnum, int moneynum) {

		if (power[powernum] > lvSound[lvsoundnum]) {
			if (power[6] > lvMoney[moneynum]) {
				power[6] -= lvMoney[moneynum];
				power[0]++;
				power[8] += 50;
				// 提示升级成功
				scene = 11;
				dm = "升级成功";

			} else {
				// 提示金币不足,无法升级
				scene = 11;
				dm = "金币不足,无法升级";
			}
		} else {
			// 提示声望不足,无法升级
			scene = 11;
			dm = "声望不足,无法升级";

		}

	}

	/**
	 * 当按键释放时
	 * 
	 * @param keyCode释放按键对应的键值
	 */
	protected void keyReleased(int keyCode) {
		// 根据当前scene的值判断执行按键处理
		if (scene == 0 || scene == 20) {
			// 正常航行状态
			direction = -1;
		}
	}

	/** 读取游戏进度 */
	void loadGame() {
		int len = 0;
		try {
			RecordStore rs = RecordStore.openRecordStore("NavigateGame", false);
			int RMSax = rs.getNumRecords();
			if (RMSax == 1) {
				byte[] data = rs.getRecord(1);
				// 创建输入流对象
				ByteArrayInputStream baos = new ByteArrayInputStream(data);
				DataInputStream bo = new DataInputStream(baos);
				// 恢复数据
				len = power.length;
				for (int i = 0; i < len; i++) {
					power[i] = bo.readInt();
				}
				// 当前mx,my,x,y,dx,dy,x1,y1坐标
				x = bo.readInt();
				y = bo.readInt();
				mx = bo.readInt();
				my = bo.readInt();
				dx = bo.readInt();
				dy = bo.readInt();
				x1 = bo.readInt();
				y1 = bo.readInt();
				// 保存当前游戏各项任务相关参数,主线任务,跑商任务,
				len = mainTask.length;
				for (int i = 0; i < len; i++) {
					mainTask[i] = bo.readInt();
				}
				len = runShangTask.length;
				for (int i = 0; i < len; i++) {
					runShangTask[i] = bo.readInt();
				}
				// 保存当前游戏隐藏地图打开进度
				len = mapOpen.length;
				for (int i = 0; i < len; i++) {
					mapOpen[i] = bo.readBoolean();
				}
				// 保存当前地图序号
				mapIndex = bo.readInt();
				// 保存当前弹药数量
				len = ammo.length;
				for (int i = 0; i < len; i++) {
					ammo[i] = bo.readInt();
				}
				// 保存当前船舱货物
				len = deport.length;
				for (int i = 0; i < len; i++) {
					deport[i] = bo.readInt();
				}
				// 关闭流对象
				bo.close();
				baos.close();
				// 关闭记录集
				rs.closeRecordStore();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/** 保存游戏 */
	// 保存游戏内相关参数:
	void saveGame() {
		int len = 0;
		// 打开(创建)记录集
		try {
			RecordStore rs = RecordStore.openRecordStore("NavigateGame", true);
			// 创建输出流对象
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			DataOutputStream bo = new DataOutputStream(baos);
			// 记录数据
			// 当前玩家power数组内相关参数
			len = power.length;
			for (int i = 0; i < len; i++) {
				bo.writeInt(power[i]);
			}
			// 当前mx,my,x,y,dx,dy,x1,y1坐标
			bo.writeInt(x);
			bo.writeInt(y);
			bo.writeInt(mx);
			bo.writeInt(my);
			bo.writeInt(dx);
			bo.writeInt(dy);
			bo.writeInt(x1);
			bo.writeInt(y1);
			// 保存当前游戏各项任务相关参数,主线任务,跑商任务,
			len = mainTask.length;
			for (int i = 0; i < len; i++) {
				bo.writeInt(mainTask[i]);
			}
			len = runShangTask.length;
			for (int i = 0; i < len; i++) {
				bo.writeInt(runShangTask[i]);
			}
			// 保存当前游戏隐藏地图打开进度
			len = mapOpen.length;
			for (int i = 0; i < len; i++) {
				bo.writeBoolean(mapOpen[i]);
			}
			// 保存当前地图序号
			bo.writeInt(mapIndex);
			// 保存当前弹药数量
			len = ammo.length;
			for (int i = 0; i < len; i++) {
				bo.writeInt(ammo[i]);
			}
			// 保存当前船舱货物
			len = deport.length;
			for (int i = 0; i < len; i++) {
				bo.writeInt(deport[i]);
			}
			// 将数据存入byte数组
			byte[] data = baos.toByteArray();
			// 将数据存入记录集中
			int RMSax = rs.getNumRecords();
			if (RMSax == 0) {
				rs.addRecord(data, 0, data.length);
			} else {
				rs.setRecord(1, data, 0, data.length);
			}
			// 关闭流对象
			bo.close();
			baos.close();
			// 关闭记录集
			rs.closeRecordStore();
		} catch (Exception e) {

		}

	}

	/**
	 * 清屏方法
	 * 
	 * @param g画笔对象
	 */
	public void clearCanvas(Graphics g) {
		g.setColor(0xffffff);
		g.fillRect(0, 0, width, height);
		g.setColor(0);
	}

	/**
	 * 部分清屏方法
	 * 
	 * @param g画笔对象
	 */
	public void clearSome(Graphics g) {
		// 部分清屏
		g.setClip(1, cy, width, cueImage.getHeight());
		g.setColor(0xffffff);
		g.fillRect(1, cy, width, cueImage.getHeight());
		g.setColor(0);
		g.setClip(0, 0, width, height);

	}

	protected void paint(Graphics g) {
		g.setFont(f);
		switch (scene) {
		// 剧情界面
		case -1:
			if (isRuning == false) {
				g.drawImage(gutBack, 0, 0, Graphics.TOP | Graphics.LEFT);
				if (gutTemp == null) {
					gutTemp = splitString(gutString);
				}
				for (int i = 0; i < gutTemp.length; i++) {
					if (i == 0) {
						g.drawString(gutTemp[i], 17 + strWidth * 2, 55 + i
								* strHeight, Graphics.BASELINE | Graphics.LEFT);
					} else {

⌨️ 快捷键说明

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