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

📄 gamescreen.java

📁 J2ME飞机设计游戏,希望对学习J2ME的程序员有所帮助
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
						}

						gameState = GameConstant.STATE_MENU_SELECT;
						break;
					case 2: // 设置
						gameState = GameConstant.STATE_GAME_SETTING;
						break;
					case 3: // 帮助
						gameMenu.initHelp();
						
						gameState = GameConstant.STATE_GAME_HELP;
						break;
					case 4: // 退出游戏
						isShow = false;
						isExit = true;
						
//						if (world.isBossAppear() != true) { //BOSS没有死亡
//							world.cleanNotUsedObject();
//
//							if (world.getGameLevel() == 2) {
//								world.cleanObjectBeforeSecBoss();
//							} else if (world.getGameLevel() == 3) {
//								world.cleanObjectBeforeThBoss();
//							}
//						}
//
//						world.cleanAllObecjt();
//
//						GameScreen gameScreen = GameScreen.getInstance();
//						gameScreen.StopSound();
//
//						world.cleanPlane();
//						
//						// 加载游戏菜单
//						gameMenu.initGameMenu();
//						
//						world.setBossAppear(false);
//						gameState = GameConstant.STATE_MENU_SELECT;
						break;
					}
				}
				keyReset();
				break;
			case GameConstant.STATE_GAME_SETTING:
				if((pressedKey & GameConstant.KEY_L) != 0
						|| (pressedKey & GameConstant.KEY_U) != 0){
					setCount = --setCount < 0 ? 1 : setCount;
				}else if((pressedKey & GameConstant.KEY_R) != 0
						|| (pressedKey & GameConstant.KEY_D) != 0){
					setCount = ++setCount > 1 ? 0 : setCount;
				}else if((pressedKey & GameConstant.KEY_ATTACK) != 0
						|| (pressedKey & GameConstant.KEY_SOFT1) != 0){
					if(setCount == 0){
						if(player == null){
							isPlaySound = true;
							if(world.isBossAppear()){
								GameConstant.MUSIC_GAME_STATE = GameConstant.MUSIC_GAME_BOSS;
							}else{
								GameConstant.MUSIC_GAME_STATE = GameConstant.MUSIC_GAME_RUN;
							}
							
							playSound(GameConstant.MUSIC_GAME_STATE);
						}
					}else if(setCount == 1){
						StopSound();
						isPlaySound = false;
					}
					
				}else if((pressedKey & GameConstant.KEY_SOFT2) != 0){
					setCount = 0;
					gameState = GameConstant.STATE_GAME_MENU;
				}
				
				keyReset();
				break;
			case GameConstant.STATE_GAME_BOSSAPPEAR:  //BOSS出现
				world.loadBoss();
				break;
			}
		} catch (Exception ex) {
			System.out.println("fuck ");
			ex.printStackTrace();
		}
	}

	protected void paint(Graphics graphics) {
		Tool.fillScreen(graphics, 0);
		graphics.translate(0,6);
		try {
			//Graphics graphics = offScreenBuffer.getGraphics();

			switch (gameState) {
			case GameConstant.STATE_LOGO1:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawLogo1(graphics, GameConstant.iSCREEN_WIDTH >> 1,
						GameConstant.iSCREEN_HEIGHT >> 1, GameConstant.CENTER);
				break;
			case GameConstant.STATE_LOGO2:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawLogo2(graphics, GameConstant.iSCREEN_WIDTH >> 1,
						GameConstant.iSCREEN_HEIGHT >> 1, GameConstant.CENTER);
				break;
			case GameConstant.STATE_ISSOUNDON:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawIsPlaySound(graphics, 12);
				break;
			case GameConstant.STATE_MENU_AUTOSHOW:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawAutoMenu(graphics, menuShowTimes, menu2ShowTimes,
						lightChangeTimes, GameConstant.TOPLEFT);
				break;
			case GameConstant.STATE_MENU_SELECT:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawMenuSelect(graphics, selectCount, menuShowTimes,
						menu2ShowTimes, lightChangeTimes, GameConstant.TOPLEFT);
				break;
			case GameConstant.STATE_MENU_SPLANE:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawMenuSelectPlane(graphics, planeType);
				break;
			case GameConstant.STATE_MENU_HELP:
			case GameConstant.STATE_GAME_HELP:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawMenuHelp(graphics, helpCount);
				break;
			case GameConstant.STATE_MENU_SCORE:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.showScore(graphics,egNums,rmsMobile.getPlayerScore());
				break;
			case GameConstant.STATE_MENU_SWEAPON:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawMenuSelectWeapon(graphics, weaponType);
				break;
			case GameConstant.STATE_GAME_LOAD:
				//Tool.fillScreen(graphics,0);
				showProgress(graphics);
				break;
			case GameConstant.STATE_GAME_RUN:
				world.drawMain(graphics);
				if(planeActor.getLiftNum() < 0){
					world.drawPlaneDie(graphics);
				}
				
				break;
			case GameConstant.STATE_GAME_OVER:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawMenuScore(graphics,BattlePlaneActor.iScore,egNum,egNumIdx);
				break;
			case GameConstant.STATE_GAME_MENU:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawGameMenu(graphics,gameMenuCount);
				break;
//				Tool.fillScreen(graphics, 0xffffff);
//				gameMenu.drawMenuHelp(graphics, helpCount);
//				break;
			case GameConstant.STATE_MENU_SETTING:
			case GameConstant.STATE_GAME_SETTING:
				Tool.fillScreen(graphics, 0xffffff);
				gameMenu.drawSetMenu(graphics,setCount);
				break;
			case GameConstant.STATE_GAME_BOSSAPPEAR:
				world.drawBossAppear(graphics);
				break;
//			case GameConstant.STATE_GAME_TASKCOMPLETE:
//				world.drawTaskComplete(graphics);
//				break;
//			case GameConstant.STATE_PLANE_DIE:
//				//Tool.fillScreen(graphics, 0xffffff);
//				world.drawPlaneDie(graphics);
//				break;
			}
			
			
			//绘画缓冲图
//			graphics.setClip(0, 0, GameConstant.iSCREEN_WIDTH, 6);
//			graphics.setColor(0);
//			graphics.fillRect(0, 0, GameConstant.iSCREEN_WIDTH, 6);
//			graphics.setClip(0, 0, GameConstant.iSCREEN_WIDTH,
//					GameConstant.iSCREEN_HEIGHT + 12);
//
//			graphics.drawImage(offScreenBuffer, 0, 6, GameConstant.TOPLEFT);
//
//			graphics.setClip(0, 6 + GameConstant.iSCREEN_HEIGHT,
//					GameConstant.iSCREEN_WIDTH,
//					GameConstant.iSCREEN_HEIGHT + 12);
//			graphics.setColor(0);
//			graphics.fillRect(0, 6 + GameConstant.iSCREEN_HEIGHT,
//					GameConstant.iSCREEN_WIDTH,
//					12 + GameConstant.iSCREEN_HEIGHT);
//			graphics.setClip(0, 0, GameConstant.iSCREEN_WIDTH,
//					GameConstant.iSCREEN_HEIGHT + 12);
			graphics.translate(0,-6);
			
			graphics.setClip(0, 0, GameConstant.iSCREEN_WIDTH,
			GameConstant.iSCREEN_HEIGHT + 12);
			//graphics.setClip(0, 0, GameConstant.iSCREEN_WIDTH, 6);
			graphics.setColor(0);
			graphics.fillRect(0, 0, GameConstant.iSCREEN_WIDTH, 6);
//			graphics.setClip(0, 0, GameConstant.iSCREEN_WIDTH,
//					GameConstant.iSCREEN_HEIGHT);
			
//			graphics.setClip(0, 6 + GameConstant.iSCREEN_HEIGHT,
//					GameConstant.iSCREEN_WIDTH,
			// GameConstant.iSCREEN_HEIGHT + 12);
			graphics.fillRect(0, 214, GameConstant.iSCREEN_WIDTH, 6);
		} catch (Exception ex) {
			System.out.println("suck");
			ex.printStackTrace();
		}
	}

	// 切换选择武器图片,4个按键选择武器不相同
	public byte getNextWeapon(byte type) {
		++weaponType[type];
		switch (type) {
		case 0:
			while ((weaponType[type] == weaponType[1])
					|| (weaponType[type] == weaponType[2])
					|| (weaponType[type] == weaponType[3])) {
				++weaponType[type];
			}
			break;
		case 1:
			while ((weaponType[type] == weaponType[0])
					|| (weaponType[type] == weaponType[2])
					|| (weaponType[type] == weaponType[3])) {
				++weaponType[type];
			}
			break;
		case 2:
			while ((weaponType[type] == weaponType[0])
					|| (weaponType[type] == weaponType[1])
					|| weaponType[type] == weaponType[3]) {
				++weaponType[type];
			}
			break;
		case 3:
			while ((weaponType[type] == weaponType[0])
					|| (weaponType[type] == weaponType[1])
					|| weaponType[type] == weaponType[2]) {
				++weaponType[type];
			}
			break;
		}

		if (weaponType[type] > 6) {
			weaponType[type] = 0;
			getNextWeapon(type);
		}

		return weaponType[type];
	}

	public void keyReset() {
		key = 0;
		pressedKey = 0;
		releasedKey = 0;
	}

	public void initialLoadData() {
		try {
			imageLoad = Image.createImage("/load.png");
			imageLoading = Image.createImage("/loading.png");
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}

//	protected void keyReleased(int keyCode) {
//		switch (keyCode) {
//		// 方向键上或者是2
//		case Canvas.KEY_NUM2:
//		case GameConstant.PADDLE_UP:
//			isUpkeyPress = false;
//			break;
//		// 方向键为下或者是8
//		case Canvas.KEY_NUM8:
//		case GameConstant.PADDLE_DOWN:
//			isDownKeyPress = false;
//			break;
//		// 方向键为左或者是4
//		case Canvas.KEY_NUM4:
//		case GameConstant.PADDLE_LEFT:
//			isLeftKeyPress = false;
//			break;
//		// 方向键为右或者是6
//		case Canvas.KEY_NUM6:
//		case GameConstant.PADDLE_RIGHT:
//			isRightKeyPress = false;
//			break;
//		}
//	}
	
	public void keyReleased(int keyCode) {
		switch (keyCode) {
		case Canvas.KEY_NUM2:
		case GameConstant.PADDLE_UP:
			key &= 0xfffffffb;
			break;
		case Canvas.KEY_NUM8:
		case GameConstant.PADDLE_DOWN:
			key &= 0xfffffff7;
			break;

		case Canvas.KEY_NUM4:
		case GameConstant.PADDLE_LEFT:
			key &= 0xfffffffe;
			break;

		case Canvas.KEY_NUM6:
		case GameConstant.PADDLE_RIGHT:
			key &= 0xfffffffd;
			break;
		case Canvas.KEY_NUM1:
			key &= 0xffffffef;
			break;
		case Canvas.KEY_NUM3:
			key &= 0xfffffdff;
			break;
		case Canvas.KEY_NUM7:
			key &= 0xffffffbf;
			break;
		case Canvas.KEY_NUM9:
			key &= 0xffffefff;
			break;
		case Canvas.KEY_NUM5:
		case GameConstant.PADDLE_FIRE:
			key &= 0xffffffdf;
			break;
		}

//		planeActor = BattlePlaneActor.getInstance();
		if(gameState == GameConstant.STATE_GAME_RUN){
			planeActor.setAction((byte)0);
			planeActor.setCurrentFrame(-1);
		}
	}

	protected void keyPressed(int keyCode) {
		switch (keyCode) {
		// 方向键上或者是2
		case Canvas.KEY_NUM2:
		case GameConstant.PADDLE_UP:
			key |= GameConstant.KEY_U;
			break;
		// 方向键为下或者是8
		case Canvas.KEY_NUM8:
		case GameConstant.PADDLE_DOWN:
			key |= GameConstant.KEY_D;
			break;
		// 方向键为左或者是4
		case Canvas.KEY_NUM4:
		case GameConstant.PADDLE_LEFT:
			key |= GameConstant.KEY_L;
			break;
		// 方向键为右或者是6
		case Canvas.KEY_NUM6:
		case GameConstant.PADDLE_RIGHT:
			key |= GameConstant.KEY_R;
			break;
		// 数字键1
		case Canvas.KEY_NUM1:
			key |= GameConstant.KEY_NUM1;
			break;
		// 数字键3
		case Canvas.KEY_NUM3:
			key |= GameConstant.KEY_NUM3;
			break;
		// 数字键7
		case Canvas.KEY_NUM7:
			key |= GameConstant.KEY_NUM7;
			break;
		// 数字键9
		case Canvas.KEY_NUM9:
			key |= GameConstant.KEY_NUM9;
			break;
//			key |= GameConstant.KEY_NUM5;
//			break;
		// 开火键 数字键5
		case Canvas.KEY_NUM5:
		case GameConstant.PADDLE_FIRE:
			key |= GameConstant.KEY_ATTACK;
			break;
		// 左软按键
		case GameConstant.PADDLE_SOFT1:
			key |= GameConstant.KEY_SOFT1;
		// 右软按键
		case GameConstant.PADDLE_SOFT2:
			key |= GameConstant.KEY_SOFT2;
		}
	}

	private void acquireKey(int keyCode) {
		pressedKey = ~releasedKey & keyCode;
		releasedKey = keyCode;
	}
	

⌨️ 快捷键说明

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