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

📄 zoncanvas.java

📁 基于J2ME 开发的冒险类手机游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

			// draw menu items
			int menuX = (scrWidth - ZonLayer.getWidth("menuitem")) / 2;
			int menuY = scrHeight / 3;
			g.setClip(menuX, menuY, 49, SHOWMENU_COUNT * 13);
			g.drawImage(menuItemImage, menuX, menuY - menuBase * 13,
					Graphics.LEFT | Graphics.TOP);

			// draw cursor
			g.setClip(menuX - 20, menuY + (menuSel - menuBase) * 13, 16, 16);
			g.drawImage(cursorImage, menuX - 20, menuY + (menuSel - menuBase)
					* 13, Graphics.LEFT | Graphics.TOP);

		
			showMore = !showMore;

			if (menuBase < MENU_COUNT - SHOWMENU_COUNT) {
				g.setClip(scrWidth / 2 - 6, menuY + SHOWMENU_COUNT * 13 + 2,
						11, 6);
				g.drawImage(menuItemImage, scrWidth / 2 - 6
						- 0, menuY + SHOWMENU_COUNT * 13 + 2
						- 104, Graphics.LEFT | Graphics.TOP);
			}
			if (menuBase > 0) {
				g.setClip(scrWidth / 2 - 6, menuY - 8, 10, 6);
				g.drawImage(menuItemImage, scrWidth / 2 - 6
						- 22, menuY - 8 - 104, Graphics.LEFT
						| Graphics.TOP);
			}
			
//			displayMemory(g);
			
			return;
		case APPSTATE_TITLE:

			if (fontHeight == 0) {
				Font font = g.getFont();
				fontHeight = font.getHeight();
				font = null;
			}

			g.setColor(0);
			g.fillRect(0, 0, scrWidth, scrHeight);
/*			menuImage2 = ZonLayer.findImage("menubg2");
  			g.drawImage(menuImage2, scrWidth / 2,
					ZonLayer.getHeight("menubg2") / 2 + 1, Graphics.HCENTER
							| Graphics.VCENTER);
*/
			if (gameStage == GAMESTAGE_FAILED) {
				g.setColor(255 << 16 | 224 << 8 | 0);
				g.drawString(TARGET_FLIED, scrWidth / 2, scrHeight / 2,
						Graphics.HCENTER | Graphics.TOP);
				return;
			}


			g.setColor(255 << 16 | 224 << 8 | 0);
			switch (gameStage) {
			case GAMESTAGE_ONE:
				g.drawString(STAGESTART_TITLE, scrWidth / 2, scrHeight / 4 + 2
						* fontHeight, Graphics.HCENTER | Graphics.TOP);
				break;
			case GAMESTAGE_TWO:
				g.drawString(STAGECONTINUE_TITLE, scrWidth / 2, scrHeight / 4 + 2
						* fontHeight, Graphics.HCENTER | Graphics.TOP);
				break;
			case GAMESTAGE_THREE:
				g.drawString(STAGECONTINUE_TITLE, scrWidth / 2, scrHeight / 4 + 2
						* fontHeight, Graphics.HCENTER | Graphics.TOP);
				break;
			}
			
//			displayMemory(g);
			return;
		case APPSTATE_ABOUT:
			drawMenuBG(g);
			// draw version
			
			g.setClip(0, 30, scrWidth, 70);
			g.setColor(0xFFFFFF);
			g.drawString(VERSION, scrWidth / 2 , 30, Graphics.HCENTER
					| Graphics.TOP);
			g.drawString(COMPANY, scrWidth / 2, 46, Graphics.HCENTER
					| Graphics.TOP);
			g.drawString(INFO, scrWidth / 2, 62, Graphics.HCENTER
					| Graphics.TOP);
			g.drawString(INFO_NUMBER, scrWidth / 2, 78, Graphics.HCENTER
					| Graphics.TOP);
			// draw about info
			
			return;
		case APPSTATE_GAME:
			
			if(!canvasUpdate)
				return;
/*			int drawX, drawY, drawWidth, drawHeight;

			drawWidth = ZonTileMap.BUF_TILECOUNTX * mainMap.getTileWidth() - mainMap.bufDrawOffsetX;
			drawHeight = scrHeight;

			drawX = - mainMap.bufDrawOffsetX;
			drawY = mainMap.getOffsetY();
			
			
			g.setClip(0, 0, drawWidth, drawHeight);
			
			g.drawImage(bufImage, drawX, drawY, Graphics.TOP | Graphics.LEFT);
			
			
			g.setClip(drawWidth, 0, mainMap.bufDrawOffsetX, drawHeight);
					
			drawX = drawWidth;
			g.drawImage(bufImage, drawX, drawY, Graphics.TOP | Graphics.LEFT);
			
			
			spritePaint(g);

			spriteLead.paint(g, false, false);
			if (tipFlag != 0)
				drawTips(g);*/
			
			
			gameRender(g);
//			displayMemory(g);
			return;

		case APPSTATE_HISCORE:
			drawMenuBG(g);
			loadScore();

			g.setClip(scrWidth / 2 + 16, 80, 8, 8);

			int a = hiScore * 10;
			String score = Integer.toString(a);
			
			g.setClip(0, 80, scrWidth, 20);
			g.setColor(0xFFFFFF);
			g.drawString(score, scrWidth / 2 , 80, Graphics.HCENTER
					| Graphics.TOP);
			
			score = null;
			
			// reuse aboutImage
			/*			aboutImage = ZonLayer.findImage("bloodnumber");
			g.drawImage(aboutImage, scrWidth / 2 + 16, 80, Graphics.LEFT
					| Graphics.TOP);

			// other bits
			int a[] = new int[5];
			a[0] = hiScore % 10;
			a[1] = (hiScore % 100) / 10;
			a[2] = (hiScore % 1000) / 100;
			a[3] = (hiScore % 10000) / 1000;
			a[4] = (hiScore % 100000) / 10000;

			for (int i = 0; i < 5; i++) {
				g.setClip(scrWidth / 2 + 16 - (i + 1) * 8, 80, 8, 8);
				g.drawImage(aboutImage, scrWidth / 2 + 16 - (i + 1) * 8,
						80 - a[i] * 8, Graphics.LEFT | Graphics.TOP);
			}

			a = null;*/
			
			// draw high score
			g.setClip(scrWidth / 2 - 25, 60, 49, 13);
			g.drawImage(menuItemImage, scrWidth / 2 - 25, 60 - 2 * 13,
					Graphics.LEFT | Graphics.TOP);

			return;
		case APPSTATE_PASS:
			
				g.setColor(0);
				g.fillRect(0, 0, scrWidth, scrHeight);
				g.setColor(255 << 16 | 224 << 8 | 0);
				g.drawString(STAGEPASS_MESSAGE, scrWidth / 2, scrHeight / 2,
						Graphics.HCENTER | Graphics.TOP);

//				displayMemory(g);
			break;
		}
	}

	public boolean initMenu() {
		appState = APPSTATE_IDLE;
		releaseSplashPics();
		
		splash1Image = null;
		splash2Image = null;
		splash3Image = null;
		
		if (spriteLead != null) {
			if (saveScore()) {
			}
		}

		spriteLead = null;
		releaseObject();
		
		releaseMenuPics();
		releaseStagePics();
		releaseSharePics();
		
		System.gc();
		
		



		
//		removeCommand(commandBackGame);
		removeCommand(commandBack);
		removeCommand(commandSave);
		
		loadMenuPics();



//		menuImage1 = ZonLayer.findImage("menubg1");
		menuImage2 = ZonLayer.findImage("menubg2");
		menuItemImage = ZonLayer.findImage("menuitem");
		cursorImage = ZonLayer.findImage("cursor");



		if((!soundPlaying()) && soundType == 1 && soundOn)
			initSound("/sound/bgsound.ott", SIZE_BGSOUND);
		
		
		appState = APPSTATE_MENU;
		return true;
	}



	public void drawMenuBG(Graphics g) {
		g.setColor(92 << 16 | 210 << 8 | 244);
		g.fillRect(0, 0, scrWidth, scrHeight);

		g.drawImage(menuImage2, scrWidth / 2,
				ZonLayer.getHeight("menubg2") / 2 + 1, Graphics.HCENTER
						| Graphics.VCENTER);
	}

	protected void keyPressed(int keyCode) {
		int appAction = getGameAction(keyCode);
		canvasUpdate = true;

		switch (appState) {
		case APPSTATE_IDLE:
			return;
		case APPSTATE_TITLE:
		
		case APPSTATE_PASS:
			return;
		case APPSTATE_SPLASH:
			//为了安全起见,删除这一部分!
/*			canvasUpdate = true;
			appState = APPSTATE_MENU;*/
			return;
		case APPSTATE_GAME:
			break;
		case APPSTATE_ABOUT:
			appState = APPSTATE_MENU;
			aboutImage = null;
			System.gc();
			return;
		case APPSTATE_SOUNDSET:
			switch (appAction) {
			case UP:
			case DOWN:
				if(subMenuSel == 0)
					subMenuSel = 1;
				else
					subMenuSel = 0;
				break;
			case FIRE:
				if(subMenuSel == 0){
					if(soundType++ >= 2)
						soundType = 0;
					//0声音关  1背景音开  2 效果音开
					if(soundType == 0)
						soundOn = false;
					else
						soundOn = true;
					if (soundOn && soundType == 1 && (!soundPlaying())) {
						initSound("/sound/bgsound.ott", SIZE_BGSOUND);
						playSound(true);
					} else
						releaseSound();
				
				} else {
					appState = APPSTATE_MENU;
				}
				break;
			}
			return;
		case APPSTATE_HISCORE:
			appState = APPSTATE_MENU;
			aboutImage = null;
			System.gc();
			return;
		case APPSTATE_MENU:
			switch (appAction) {
			case UP:
				menuSel--;
				if (menuSel < 0)
					menuSel = 0;
				else if (menuSel < menuBase)
					menuBase--;
				break;
			case DOWN:
				menuSel++;
				if (menuSel > MENU_COUNT - 1)
					menuSel = MENU_COUNT - 1;
				else if (menuSel >= menuBase + SHOWMENU_COUNT)
					menuBase++;
				break;
			case FIRE:
				switch (menuSel) {
				case 0: // new game
					releaseObject();
					releaseMenuPics();
					releaseStagePics();
					releaseSharePics();
					System.gc();
					loadSharePics();
					
					showTitleCount = 0;
					gameStage = GAMESTAGE_ONE;
					appState = APPSTATE_TITLE;
					

					
					break;
				case 1: // load game
					appState = APPSTATE_IDLE;
					
					releaseObject();
					releaseMenuPics();
					releaseStagePics();
					releaseSharePics();
					System.gc();
					
					loadSharePics();
					
					if (!loadGame()) {			
						Alert loadAlert;
						loadAlert = new Alert("信息", LOADERR_MESSAGE, null, null);
						loadAlert.setTimeout(Alert.FOREVER);

						releaseObject();
						releaseStagePics();
						releaseSharePics();
						System.gc();
						
						loadMenuPics();
						initMenu();
						appState = APPSTATE_MENU;
						
						ZonJaEg.display.setCurrent(loadAlert, this);
					}
					
					break;
				case 2: // high score
					appState = APPSTATE_HISCORE;
					break;
				case 3:
					appState = APPSTATE_SOUNDSET;
					break;
				case 4: // help
					Alert alertHelp = new Alert("帮助", HELP_MESSAGE, null, null);
					alertHelp.setTimeout(Alert.FOREVER);
					ZonJaEg.display.setCurrent(alertHelp, this);
					break;
				case 5: // about
					appState = APPSTATE_ABOUT;
					break;
				case 6:
/*					if (soundPlayer != null) {
						stopSound();
					}*/
					ZonJaEg.quitApp();
					break;
				}
				break;
			}
			canvasUpdate = true;
			return;
		}

		switch (appAction) {
		case LEFT:
			spriteLead.pressKey(MainSprite.KEY_LEFT);
			break;
		case RIGHT:
			spriteLead.pressKey(MainSprite.KEY_RIGHT);
			break;
		case UP:
			spriteLead.pressKey(MainSprite.KEY_UP);
			break;
		case FIRE:
			spriteLead.pressKey(MainSprite.KEY_FIRE);
			break;
		}

	}

	protected void keyReleased(int keyCode) {
		int gameAction = getGameAction(keyCode);
		if (appState != APPSTATE_GAME)
			return;
		switch (gameAction) {
		case LEFT:
			spriteLead.releaseKey(MainSprite.KEY_LEFT);
			break;
		case RIGHT:
			spriteLead.releaseKey(MainSprite.KEY_RIGHT);
			break;
		case UP:
			spriteLead.releaseKey(MainSprite.KEY_UP);
			break;
		case FIRE:
			spriteLead.releaseKey(MainSprite.KEY_FIRE);
			break;
		}
	}


	public void commandAction(Command command, Displayable displayable) {
		// TODO Auto-generated method stub
		if(spriteLead != null)
			spriteLead.clearKeyStatus();
		switch (command.getCommandType()) {
		case Command.EXIT:
			break;
		case Command.OK:
			// back to game
			// no effect in help screen
			if (command.getLabel() == QUIT_GAME) {
				// stop the MIDlet
				if(spriteLead != null){
					if (saveScore()) {
					}
				}
/*				if(soundPlaying()){
					releaseSound();
				}*/
				ZonJaEg.quitApp();
			} else if (command.getLabel() == BACK_MENU) {
				// update the high local score
					
				if(appState != APPSTATE_GAME)
					return;
				//releaseStagePics();
				initMenu();
			} else if (command.getLabel() == MESSAGE_OK) {
				resumeGame();
			

⌨️ 快捷键说明

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