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

📄 zoncanvas.java

📁 基于J2ME 开发的冒险类手机游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
			magicBoxes[19].setPosition(16 * 107, scrHeight - 16 * 8);
			magicBoxes[20].setPosition(16 * 105, scrHeight - 16 * 7);
			magicBoxes[21].setPosition(16 * 106, scrHeight - 16 * 7);
			magicBoxes[22].setPosition(16 * 107, scrHeight - 16 * 7);

			magicBoxes[0].setTreasureIndex(5);
			magicBoxes[3].setTreasureIndex(5);
			magicBoxes[6].setTreasureIndex(5);
			magicBoxes[13].setTreasureIndex(5);
			break;
		case GAMESTAGE_TWO:
			magicBoxes = new MagicBox[18];
			for (int i = 0; i < magicBoxes.length; i++) {
				magicBoxes[i] = new MagicBox(scrWidth, scrHeight);
				if (magicBoxes[i] == null)
					return false;
				magicBoxes[i].initSprite("enemysprite16_share", 16, 16, false);
				magicBoxes[i].setFrameSequence(0, 0);
			}

			magicBoxes[0].setPosition(16 * 10, scrHeight - 16 * 10);
			magicBoxes[1].setPosition(16 * 10, scrHeight - 16 * 9);
			magicBoxes[2].setPosition(16 * 11, scrHeight - 16 * 9);
			magicBoxes[3].setPosition(16 * 39, scrHeight - 16 * 13);
			magicBoxes[4].setPosition(16 * 40, scrHeight - 16 * 13);
			magicBoxes[5].setPosition(16 * 39, scrHeight - 16 * 12);
			magicBoxes[6].setPosition(16 * 40, scrHeight - 16 * 12);
			magicBoxes[7].setPosition(16 * 45, scrHeight - 16 * 6);
			magicBoxes[8].setPosition(16 * 45, scrHeight - 16 * 5);
			magicBoxes[9].setPosition(16 * 46, scrHeight - 16 * 5);
			magicBoxes[10].setPosition(16 * 81, scrHeight - 16 * 11);
			magicBoxes[11].setPosition(16 * 81, scrHeight - 16 * 10);
			magicBoxes[12].setPosition(16 * 86, scrHeight - 16 * 6);
			magicBoxes[13].setPosition(16 * 87, scrHeight - 16 * 6);
			magicBoxes[14].setPosition(16 * 86, scrHeight - 16 * 5);
			magicBoxes[15].setPosition(16 * 87, scrHeight - 16 * 5);
			magicBoxes[16].setPosition(16 * 86, scrHeight - 16 * 4);
			magicBoxes[17].setPosition(16 * 87, scrHeight - 16 * 4);

			magicBoxes[0].setTreasureIndex(5);
			magicBoxes[6].setTreasureIndex(5);
			magicBoxes[10].setTreasureIndex(5);
			magicBoxes[16].setTreasureIndex(5);

			break;
		case GAMESTAGE_THREE:
			magicBoxes = new MagicBox[20];
			for (int i = 0; i < magicBoxes.length; i++) {
				magicBoxes[i] = new MagicBox(scrWidth, scrHeight);
				if (magicBoxes[i] == null)
					return false;
				magicBoxes[i].initSprite("enemysprite16_share", 16, 16, false);
				magicBoxes[i].setFrameSequence(0, 0);
			}

			magicBoxes[0].setPosition(16 * 20, scrHeight - 16 * 12);
			magicBoxes[1].setPosition(16 * 21, scrHeight - 16 * 12);
			magicBoxes[3].setPosition(16 * 24, scrHeight - 16 * 3);
			magicBoxes[2].setPosition(16 * 21, scrHeight - 16 * 11);
			magicBoxes[4].setPosition(16 * 25, scrHeight - 16 * 3);
			magicBoxes[5].setPosition(16 * 24, scrHeight - 16 * 2);
			magicBoxes[6].setPosition(16 * 25, scrHeight - 16 * 2);
			magicBoxes[7].setPosition(16 * 50, scrHeight - 16 * 7);
			magicBoxes[8].setPosition(16 * 51, scrHeight - 16 * 7);
			magicBoxes[9].setPosition(16 * 52, scrHeight - 16 * 4);
			magicBoxes[10].setPosition(16 * 52, scrHeight - 16 * 3);

			magicBoxes[11].setPosition(16 * 82, scrHeight - 16 * 17);
			magicBoxes[12].setPosition(16 * 82, scrHeight - 16 * 5);
			magicBoxes[13].setPosition(16 * 85, scrHeight - 16 * 12);
			magicBoxes[14].setPosition(16 * 85, scrHeight - 16 * 11);
			magicBoxes[15].setPosition(16 * 116, scrHeight - 16 * 10);
			magicBoxes[16].setPosition(16 * 116, scrHeight - 16 * 9);
			magicBoxes[17].setPosition(16 * 116, scrHeight - 16 * 7);
			magicBoxes[18].setPosition(16 * 116, scrHeight - 16 * 6);
			magicBoxes[19].setPosition(16 * 116, scrHeight - 16 * 5);

			magicBoxes[1].setTreasureIndex(5);
			magicBoxes[6].setTreasureIndex(5);
			magicBoxes[13].setTreasureIndex(5);
			magicBoxes[17].setTreasureIndex(5);

			break;
		}

		for (int i = 0; i < magicBoxes.length; i++) {
			magicBoxes[i].setMap(mainMap);
		}
		return true;
	}

	boolean initBarrier() {
		switch (gameStage) {
		case GAMESTAGE_ONE:
			fence = new Barrier[20];
			for (int i = 0; i < fence.length; i++) {
				fence[i] = new Barrier(scrWidth, scrHeight);
				if (fence[i] == null)
					return false;
				fence[i].initSprite("bg16_5", 16, 16, false);
				fence[i].setFrameSequence(3, 3);
			}

			for (int i = 0; i < 4; i++) {
				fence[i].setPosition(16 * 42, scrHeight - 16 * (i + 12));
			}
			for (int i = 4; i < 10; i++) {
				fence[i].setPosition(16 * 80, scrHeight - 16 * (i - 4 + 4));
			}
			for (int i = 10; i < 14; i++) {
				fence[i].setPosition(16 * 44, scrHeight - 16 * (i - 10 + 5));
			}
			for (int i = 14; i < 20; i++) {
				fence[i].setPosition(16 * 124, scrHeight - 16 * (i - 14 + 5));
			}
			break;
		case GAMESTAGE_TWO:
			fence = new Barrier[22];
			for (int i = 0; i < fence.length; i++) {
				fence[i] = new Barrier(scrWidth, scrHeight);
				if (fence[i] == null)
					return false;
				fence[i].initSprite("bg16_6", 16, 16, false);
				fence[i].setFrameSequence(4, 4);
			}

			for (int i = 0; i < 4; i++) {
				fence[i].setPosition(16 * 38 - 8, scrHeight - 16 * (6 - i));
			}
			for (int i = 4; i < 9; i++) {
				fence[i].setPosition(16 * 68, scrHeight - 16 * (13 - i));
			}
			for (int i = 9; i < 17; i++) {
				fence[i].setPosition(16 * 93, scrHeight - 16 * (20 - i));
			}
			for (int i = 17; i < 22; i++) {
				fence[i].setPosition(16 * 122, scrHeight - 16 * (25 - i));
			}

			break;
		case GAMESTAGE_THREE:
			fence = new Barrier[20];
			for (int i = 0; i < fence.length; i++) {
				fence[i] = new Barrier(scrWidth, scrHeight);
				if (fence[i] == null)
					return false;
				fence[i].initSprite("bg16_6", 16, 16, false);
				fence[i].setFrameSequence(4, 4);
			}

			for (int i = 0; i < 6; i++) {
				fence[i].setPosition(16 * 44 + 8, scrHeight - 16 * (9 - i));
			}
			for (int i = 6; i < 9; i++) {
				fence[i].setPosition(16 * 79, scrHeight - 16 * (13 - i));
			}
			for (int i = 9; i < 13; i++) {
				fence[i].setPosition(16 * 102, scrHeight - 16 * (17 - i));
			}
			for (int i = 13; i < 20; i++) {
				fence[i].setPosition(16 * 124, scrHeight - 16 * (22 - i));
			}
			break;
		}

		for (int i = 0; i < fence.length; i++) {
			fence[i].setMap(mainMap);
		}
		return true;
	}

	private boolean initStaticSprite() {
		deadZone = null;
		switch (gameStage) {
		case GAMESTAGE_ONE:

			deadZone = new StaticSprite[40];
			for (int i = 0; i < deadZone.length; i++) {
				deadZone[i] = new StaticSprite(scrWidth, scrHeight);
				if (deadZone[i] == null)
					return false;
				deadZone[i].initSprite("bg16_5", 16, 16, false);
				deadZone[i].setFrameSequence(0, 0);
			}

			// 40个冰面
			for (int i = 0; i < 14; i++) {
				deadZone[i].setPosition(16 * (24 + i), scrHeight - 16 * 2);
			}

			for (int i = 14; i < 26; i++) {
				deadZone[i].setPosition(16 * (49 + i), scrHeight - 16 * 2);
			}
			for (int i = 26; i < 28; i++) {
				deadZone[i].setPosition(16 * (56 + i), scrHeight - 16 * 2);
			}
			for (int i = 28; i < 40; i++) {
				deadZone[i].setPosition(16 * (59 + i), scrHeight - 16 * 2);
			}

			break;
		case GAMESTAGE_TWO:
			// 第二关里deadZone是用作河流的精灵;
			deadZone = new StaticSprite[36];

			for (int i = 0; i < deadZone.length; i++) {
				deadZone[i] = new StaticSprite(scrWidth, scrHeight);
				if (deadZone[i] == null)
					return false;
				deadZone[i].initSprite("bg16_6", 16, 16, false);
				deadZone[i].setFrameSequence(0, 2);
			}

			for (int i = 0; i < 12; i++) {
				deadZone[i].setPosition(16 * (19 + i), scrHeight - 16 * 2);
			}
			for (int i = 12; i < 23; i++) {
				deadZone[i].setPosition(16 * (38 + i), scrHeight - 16 * 2);
			}
			for (int i = 23; i < 25; i++) {
				deadZone[i].setPosition(16 * (46 + i), scrHeight - 16 * 2);
			}

			for (int i = 25; i < 36; i++) {
				deadZone[i].setPosition(16 * (71 + i), scrHeight - 16 * 2);
			}
			break;
		case GAMESTAGE_THREE:
			deadZone = new StaticSprite[42];

			for (int i = 0; i < deadZone.length; i++) {
				deadZone[i] = new StaticSprite(scrWidth, scrHeight);
				if (deadZone[i] == null)
					return false;
				deadZone[i].initSprite("bg16_6", 16, 16, false);
				deadZone[i].setFrameSequence(0, 2);
			}

			for (int i = 0; i < 10; i++) {
				deadZone[i].setPosition(16 * (6 + i), scrHeight - 16);
			}

			for (int i = 10; i < 16; i++) {
				deadZone[i].setPosition(16 * (19 + i), scrHeight - 16);
			}

			for (int i = 16; i < 23; i++) {
				deadZone[i].setPosition(16 * (27 + i), scrHeight - 16 * 2);
			}

			for (int i = 23; i < 28; i++) {
				deadZone[i].setPosition(16 * (34 + i), scrHeight - 16 * 2);
			}

			for (int i = 28; i < 33; i++) {
				deadZone[i].setPosition(16 * (42 + i), scrHeight - 16 * 2);
			}

			for (int i = 33; i < 35; i++) {
				deadZone[i].setPosition(16 * (58 + i), scrHeight - 16 * 2);
			}

			for (int i = 35; i < 37; i++) {
				deadZone[i].setPosition(16 * (63 + i), scrHeight - 16 * 2);
			}

			for (int i = 37; i < 39; i++) {
				deadZone[i].setPosition(16 * (66 + i), scrHeight - 16 * 2);
			}

			for (int i = 39; i < 42; i++) {
				deadZone[i].setPosition(16 * (72 + i), scrHeight - 16 * 2);
			}
			break;
		}

		for (int i = 0; i < deadZone.length; i++) {
			deadZone[i].setMap(mainMap);
		}

		return true;
	}

	private void releaseObject(){
		//menuImage1 = null;
		
		menuImage2 = null;
		menuItemImage = null;
		cursorImage = null;
		aboutImage = null;
		
		
		enemyBirds = null;
		enemySpring = null;
		enemyBlueFeet = null;
		enemyTops = null;
		stepStone = null;
		stepYellow = null;
		magicBoxes = null;
		fence = null;
		deadZone = null;
		mainMap = null;

/*		bufImage =null;
		gBuf = null;*/
		System.gc();
	}
	
	private boolean initStage() {
		appState = APPSTATE_IDLE;
/*		releaseMenuPics();
		releaseStagePics();
		releaseSharePics();
		
		releaseObject();*/
		
//		loadSharePics();
		loadStagePics();
		
		
		
/*		bufImage = Image.createImage(ZonTileMap.BUF_TILECOUNTX * 16, ZonTileMap.BUF_TILECOUNTY * 16);
		gBuf = bufImage.getGraphics();
		if(bufImage == null || gBuf == null)
			return false;*/
		
		removeCommand(commandQuit);

		addCommand(commandQuit);
		//addCommand(commandBackGame);
		addCommand(commandBack);
		addCommand(commandSave);

		

		//starKeyImage = ZonLayer.findImage("starkey");

		int offsetY = 0;
		 if(!soundOn)
			 releaseSound();
		else if(soundType == 2 && soundOn)
			initSound("/sound/eat.ott", SIZE_EATSOUND);
		else if((!soundPlaying()) && soundType == 1 && soundOn){
			initSound("/sound/bgsound.ott", SIZE_BGSOUND);
			playSound(true);
		}

		switch (gameStage) {
		case GAMESTAGE_ONE:
			initMaps();
			
			
			mainMap.loadMapData("/map/stagemap1.m");
			mainMap.setMapSize(128, 16);
			offsetY = scrHeight - mainMap.getMapHeight()
					* mainMap.getTileHeight();
			mainMap.setPosition(0, offsetY);

			initLead();
			initTops();
			initSpring();
			initBirds();
			initStepStone();
			initBoxes();
			initBarrier();
			initStaticSprite();

			break;
		case GAMESTAGE_TWO:
			initMaps();

			//mainMap.setMapArray(ZonTileMap.gBackground2);
			
			
			mainMap.loadMapData("/map/stagemap2.m");
			mainMap.setMapSize(128, 16);
			offsetY = scrHeight - mainMap.getMapHeight()
					* mainMap.getTileHeight();
			mainMap.setPosition(0, offsetY);

			initLead();
			initSpring();
			initBirds();
			initStepStone();
			initBoxes();
			initStaticSprite();
			initBlueFeet();

			initBarrier();

			break;
		case GAMESTAGE_THREE:
			initMaps();

			//mainMap.setMapArray(ZonTileMap.gBackground3);
			
			
			mainMap.loadMapData("/map/stagemap3.m");
			mainMap.setMapSize(128, 16);
			offsetY = scrHeight - mainMap.getMapHeight()
					* mainMap.getTileHeight();
			mainMap.setPosition(0, offsetY);

			initTops();
			initLead();
			initSpring();
			initBirds();
			initStepStone();
			initBoxes();
			initStaticSprite();
			initBarrier();
			break;

		}
		spriteLead.clearKeyStatus();
		return true;

	}

	public boolean saveScore() {
		try {
			RecordStore rs = RecordStore.openRecordStore("hiscore", true);
			RecordEnumeration re = rs.enumerateRecords(null, null, false);

			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			DataOutputStream dos = new DataOutputStream(bos);
			
			if (spriteLead.getScore() > hiScore) 
				dos.writeInt(spriteLead.getScore());
			else
				dos.writeInt(hiScore);
/*			dos.writeBoolean(soundOn);
			dos.writeInt(soundType);*/

			byte[] scoreData = bos.toByteArray();

			if (!re.hasNextElement()) { // no record exist
				rs.addRecord(scoreData, 0, scoreData.length);
			} else { // record already exist, update it
				int id = re.nextRecordId();
				rs.setRecord(id, scoreData, 0, scoreData.length);
			}

			scoreData = null;

			dos.close();
			dos = null;
			bos.close();
			bos = null;

			re.destroy();
			re = null;
			rs.closeRecordStore();
			rs = null;

			System.gc();
		} catch (Exception e) {
			return false;

⌨️ 快捷键说明

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