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

📄 canvaszhu.java

📁 用J2ME写的手机游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
					runStart();

					repaint();
					Thread.sleep(60);
					break;
				case Continue:
					ReadGame();
					keyControl = true;
					if (beijing == null) {
						beijing = Image.createImage("/zhu/res/beijing.png");
						repaint();
					}
					break;
				case HelpForm:
					if (caozuo == null) {
						caozuo = Image.createImage("/zhu/res/caozuo.png");
						repaint();
					}
					break;
				case FirstForm:
					/** 动化中狼和猪走动切图频率 */
					runpinlv();
					/** 连续按键 */
					runkeypressed();
					/** ******箭的移动******** */
					runjiance();// 生成新的箭
					runjianMove();// 箭左移动
					/** ******狼的移动******** */
					runFirstForm();

					repaint();
					Thread.sleep(100);
					break;
				}
			} catch (Exception e) {
			}
		}
	}

	private void runkeypressed() {
		// 连续按键
		if (pressedUp) {
			if (zhuFirstFormy <= 80) {
				pressedUp = false;
			} else {
				zhuFirstFormy -= 8;
			}
		}
		if (pressedDown) {
			if (zhuFirstFormy >= 240) {
				pressedDown = false;
			} else {
				zhuFirstFormy += 8;
			}
		}
	}

	private void runStart() {
		if (langfangxiang[0] == 3) {
			if (langStartx >= -(LANG_ZHU + LANG_ZHU + 40)) {
				/** 一个LANG_ZHU是小猪图的宽度 */
				langStartx -= 5;
			} else {
				langfangxiang[0] = 0;
			}
			if (zhux >= 0 && langStartx <= WIDTH / 2) {
				zhux -= 5;
			}
		} else {
			if (langStartx <= WIDTH + 40) {
				langStartx += 5;
			} else {
				langfangxiang[0] = 3;
			}
			if (zhux <= WIDTH) {
				zhux += 5;
			}
		}
	}

	private void runpinlv() {
		tushu++;
		if (tushu == 3) {
			if (tushuL == 2) {
				tushuL = -1;
			}
			if (tushuZ == 1) {
				tushuZ = -1;
			}
			tushuZ++;
			tushuL++;
			tushu = 0;
		}
	}

	private void runjianMove() {
		for (int i = 0; i < jianArray.length; i++) {
			if (jianArray[i][0] > -(LANG_ZHU - 5) && jianArray[i][0] != ZHUX) {
				jianArray[i][0] -= 10;// 箭左移
			} else if (jianArray[i][0] < -(LANG_ZHU - 5)) {
				jianArray[i][0] = -(LANG_ZHU - 5);
			}
		}
	}

	private void runjiance() {
		if (controljian) {// 只出现一个x坐标为 ZHUX 的箭
			for (int i = 0; i < jianArray.length; i++) {
				if (jianArray[i][0] == ZHUX) {
					controljian = false;
					break;
				}
				if (jiange <= 45) {
					jiange++;
				} else {
					for (byte ii = 0; ii < jianArray.length; ii++) {
						if (jianArray[ii][0] <= -(LANG_ZHU - 5)) {
							jianArray[ii][0] = ZHUX;
							jiange = 0;
							jiani = ii;
							controljian = false;
							break;
						}
					}
				}
			}
		}
	}

	private void runFirstForm() {
		for (byte i = 0; i <= ii; i++) {
			if (langLife == 7) {// 上到崖上的狼数 控制石头下落
				// 禁止移动和发射键盘
				keyControl = false;
				// 石头下落
				runshiDown();
			} else if (langLife <= 6) {
				if ((langx[i] == langLifeArray[langLife] && langy[i] == YA_Y)) {
					// 当狼移动到崖上狼队伍的末尾时,数据初始化,狼重新在右下出现
					runReNewNum(i);
				} else {
					// 狼移动
					runlangMove(i);
				}
			}
			if (temp[i] == 20 && ii < 2) {
				ii++;
			}
		}
	}

	private void runReNewNum(byte ii) {
		qiqiuy[ii] = (HEIGHT - LANG_ZHU);
		langfangxiang[ii] = 0;
		if (langLife >= 2) {
			for (int i = 0; i < langLifeArray.length; i++) {
				// 崖上狼 右移 10
				langLifeArray[i] = (langLifeArray[i] + 10);
			}
			// 石头右移动
			shix += 10;
		}
		langLife++;// 活着的狼数
		t[ii] = (byte) (Math.abs(r.nextInt() % 28) + 5);
		temp[ii] = 0;
		langx[ii] = 0;
		langy[ii] = HEIGHT;
		boolDun[ii] = false;
		defenbool[ii] = true;

	}

	private void runlangMove(byte ii) {
		if (t[ii] >= temp[ii]) {
			/** 狼向右移动 */
			langx[ii] += 5;// 狼出来 向右移动
			temp[ii]++;// 狼移动次数
		} else {
			/** 狼向上移动 */
			runLangUpMove(ii);
		}
	}

	private void runLangUpMove(byte ii) {
		// 加气球
		if (qiqiuy[ii] + LANG_ZHU == langy[ii]) {
			boolQiqiu[ii] = true;
		}
		// 碰撞判断
		runpengzhuang(ii);
		// 向上移动
		if (!bool[ii] && controlMove[ii]) {// boolLang == true
			// 狼移动方向标识
			langfangxiang[ii] = 1;
			// 狼移动操作
			if (qiqiuy[ii] >= 0) {
				qiqiuy[ii] -= 5;
				langy[ii] = qiqiuy[ii] + LANG_ZHU;
			}
			if (langy[ii] <= YA_Y) {// 崖的x坐标 40
				if (langy[ii] < YA_Y) {
					langy[ii] = YA_Y;
				} else {
					boolQiqiu[ii] = false;
					boolDun[ii] = false;
					/** 狼在崖上移动 */
					runLangUpMove_YA(ii);
				}
			}

		} else {
			/** 狼被射中向下移动,气球向上移动 */
			runlangDownMove(ii);
		}
	}

	private void runlangDownMove(byte ii) {
		if (langy[ii] >= HEIGHT + LANG_ZHU && qiqiuy[ii] <= 0) {
			// 为狼重新出现 数据初始化
			qiqiuy[ii] = (HEIGHT - LANG_ZHU);
			t[ii] = (byte) (Math.abs(r.nextInt() % 28) + 5);
			temp[ii] = 0;
			langx[ii] = 0;
			langy[ii] = HEIGHT;
			defenbool[ii] = true;
			bool[ii] = false;
			boolQiqiu[ii] = false;
			langfangxiang[ii] = 0;
			controlMove[ii] = true;
		} else {
			// 狼 气球移动
			langy[ii] += 10;
			qiqiuy[ii] -= 10;
		}
	}

	private void runLangUpMove_YA(byte ii) {
		if (Math.abs(langLifeArray[langLife] - langx[ii]) > 5) {
			if (langLifeArray[langLife] < langx[ii]) {
				langfangxiang[ii] = 3;
				langx[ii] -= 5;
			}
			if (langLifeArray[langLife] > langx[ii]) {
				langfangxiang[ii] = 4;
				langx[ii] += 5;
			}
		} else {
			langfangxiang[ii] = 5;
			langx[ii] = langLifeArray[langLife];
		}
	}

	private void runpengzhuang(byte ii) {
		// 碰撞处理 中了为true
		for (int i = 0; i < jianArray.length; i++) {
			/** ***射中狼的判断**** */
			if ((LANG_ZHU / 2 + (LANG_ZHU - 5) / 4)
					* (LANG_ZHU / 2 + (LANG_ZHU - 5) / 4)
					+ (LANG_ZHU / 2 + 3 / 2)// 箭的高度为3
					* (LANG_ZHU / 2 + 3 / 2) >= (jianArray[i][0]
					- (LANG_ZHU - 5) / 4 - (langx[ii] - LANG_ZHU / 2))
					* (jianArray[i][0] - (LANG_ZHU - 5) / 4 - (langx[ii] - LANG_ZHU / 2))
					+ (jianArray[i][1] - 3 / 2 - (langy[ii] - LANG_ZHU / 2))
					* (jianArray[i][1] - 3 / 2 - (langy[ii] - LANG_ZHU / 2))) {// 射中狼

				if (t[ii] % 4 == 0) {// 几率射中
					bool[ii] = bool[ii] || true;
					controlMove[ii] = false;
					langfangxiang[ii] = 2;// 狼死
					if (defenbool[ii]) {
						defen = defen + 10;
						defenString = DEFENS + defen;
						defenbool[ii] = false;
					}
					jianArray[i][0] = -LANG_ZHU;
					break;
				} else {
					boolDun[ii] = true;
					jianArray[i][0] = -LANG_ZHU;
				}
			}
			/** ***射中气球判断**** */
			if ((LANG_ZHU / 2 + (LANG_ZHU - 5) / 4)
					* (LANG_ZHU / 2 + (LANG_ZHU - 5) / 4)
					+ (LANG_ZHU / 2 + 3 / 2) * (LANG_ZHU / 2 + 3 / 2) >= (jianArray[i][0]
					- (LANG_ZHU - 5) / 4 - (langx[ii] - LANG_ZHU / 2))
					* (jianArray[i][0] - (LANG_ZHU - 5) / 4 - (langx[ii] - LANG_ZHU / 2))
					+ (jianArray[i][1] - 3 / 2 - (qiqiuy[ii] - LANG_ZHU / 2))
					* (jianArray[i][1] - 3 / 2 - (qiqiuy[ii] - LANG_ZHU / 2))) {
				bool[ii] = bool[ii] || true;
				controlMove[ii] = false;
				boolQiqiu[ii] = false;
				boolDun[ii] = false;
				langfangxiang[ii] = 2;
				if (defenbool[ii]) {
					defen = defen + 3;
					defenString = DEFENS + defen;
					defenbool[ii] = false;
				}
				break;
			}
		}
	}

	private void runshiDown() {
		if (shiy <= zhuFirstFormy) {
			shiy = (shiy + 10);
		} else {
			try {
				Thread.sleep(1000);
				// 让狼的移动条件都不成立
				langLife = 8;
				// 跳转到下个界面
				index = Result;
			} catch (Exception e) {
			}
		}
	}

	private void SaveGame() {
		try {
			rs = RecordStore.openRecordStore("recordlist", false);
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			DataOutputStream dos = new DataOutputStream(baos);
			dos.writeByte(ii);
			dos.writeInt(defen);
			dos.writeByte(index);
			dos.writeByte(jiange);
			dos.writeByte(jiani);
			dos.writeByte(langLife);
			dos.writeByte(Menu_index);
			dos.writeInt(shix);
			dos.writeInt(shiy);
			dos.writeBoolean(controljian);
			dos.writeInt(zhuFirstFormy);

			for (int i = 0; i < jianArray.length; i++) {
				for (int j = 0; j < jianArray[i].length; j++) {
					dos.writeInt(jianArray[i][j]);
				}
			}

			for (int i = 0; i < 3; i++) {
				dos.writeInt(langx[i]);
				dos.writeInt(langy[i]);
				dos.writeInt(qiqiuy[i]);
				dos.writeBoolean(controlMove[i]);
				dos.writeBoolean(boolQiqiu[i]);
				dos.writeBoolean(boolDun[i]);
				dos.writeBoolean(defenbool[i]);
				dos.writeByte(t[i]);
				dos.writeByte(temp[i]);
				dos.writeBoolean(bool[i]);
				dos.writeByte(langfangxiang[i]);
			}
			String s="";
			if (rs.getNumRecords() == 1) {
				s= String.valueOf(0);
				rs.addRecord(s.getBytes(), 0, s.getBytes().length);
			}
			rs.setRecord(2, baos.toByteArray(), 0, baos.toByteArray().length);
			baos.close();
			dos.close();
			// 存到编号为1的记录集
			s = String.valueOf(jixu);
			rs.setRecord(1, s.getBytes(), 0, s.getBytes().length);
			s=null;
			rs.closeRecordStore();
		} catch (Exception e) {
		}
	}

	private void ReadGame() {
		try {
			rs = RecordStore.openRecordStore("recordlist", false);
			ByteArrayInputStream bais = new ByteArrayInputStream(rs
					.getRecord(2));
			DataInputStream dis = new DataInputStream(bais);
			ii = dis.readByte();
			defen = dis.readInt();
			index = dis.readByte();
			jiange = dis.readByte();
			jiani = dis.readByte();
			langLife = dis.readByte();
			Menu_index = dis.readByte();
			shix = dis.readInt();
			shiy = dis.readInt();
			controljian = dis.readBoolean();
			zhuFirstFormy = dis.readInt();

			for (int i = 0; i < jianArray.length; i++) {
				for (int j = 0; j < jianArray[i].length; j++) {
					jianArray[i][j] = dis.readInt();
				}
			}

			for (int i = 0; i < 3; i++) {
				langx[i] = dis.readInt();
				langy[i] = dis.readInt();
				qiqiuy[i] = dis.readInt();
				controlMove[i] = dis.readBoolean();
				boolQiqiu[i] = dis.readBoolean();
				boolDun[i] = dis.readBoolean();
				defenbool[i] = dis.readBoolean();
				t[i] = dis.readByte();
				temp[i] = dis.readByte();
				bool[i] = dis.readBoolean();
				langfangxiang[i] = dis.readByte();
			}
			defenString = DEFENS + defen;
		} catch (Exception e) {
		}
	}
}

⌨️ 快捷键说明

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