📄 world.java
字号:
}
public void drawMain(Graphics graphics) {
Tool.fillScreen(graphics, 0xffffff);
drawGameBack(graphics);
drawBoss(graphics);
//画敌人
if(gameLevel == 2){
drawPlaneActor(graphics, shipActorPool);
}
if(transport!= null){
transport.draw(graphics);
}
drawPlaneActor(graphics, helicopterActorPool);
drawPlaneActor(graphics, scoutPlaneActorPool);
drawPlaneActor(graphics, hidingPlaneActorPool);
drawPlaneActor(graphics,plAircraftActorPool);
drawPlaneActor(graphics, largePlaneActorPool);
// 画主角特殊武器
drawPlaneBullet(graphics);
//画敌人子弹
drawClipBullet(graphics, helicopterBulletPool);
drawClipBullet(graphics, largePlaneBulletPool);
if(isBossAppear == true && gameLevel != 3){
drawClipBullet(graphics,bossBulletPool);
}
if (isBossAppear == true) {
drawEffect(graphics, bulletEffectPool);
}
drawSupplyBullet(graphics,supplyBullet);
drawEffect(graphics, bombEffectPool);
drawEffect(graphics, somkeEffectPool);
drawTrackBullet(graphics,missileBulletPool);
//画主角
if(battlePlane.getLiftNum() >= 0){
battlePlane.draw(graphics);
drawImageBullet(graphics, planeBulletPool);
battlePlane.drawPlaneInfo(graphics);
}
}
private void drawSupplyBullet(Graphics graphics, Bullet[] bullets) {
if (bullets != null) {
for (int idx = 0; idx < bullets.length; idx++) {
Bullet bullet = (Bullet) bullets[idx];
if (bullet.isNotUsed() == true) {
continue;
}
bullet.draw(graphics);
}
}
}
private void drawPlaneBullet(Graphics graphics) {
for (byte weaponIdx = 0; weaponIdx < weaponType.length; weaponIdx++) {
switch (weaponType[weaponIdx]) {
case 1: // 大型导弹
drawImageBullet(graphics, planeBigMisslePool);
break;
case 2: // 机枪
drawClipBullet(graphics, planeMachineGunPool);
break;
case 3: // 直射火箭
drawRocketBullet(graphics, planeRocketPool);
break;
case 5: // 呼叫僚机
drawImageBullet(graphics, planeWingPool);
break;
}
}
}
private void drawBoss(Graphics graphics) {
if (isBossAppear == true) {
switch (gameLevel) {
case 1:
frBoss.draw(graphics);
break;
case 2:
secBoss.draw(graphics);
break;
case 3:
if (thBoss != null) {
thBoss.draw(graphics);
if (ThBoss.BOSS_STATE == GameConstant.STATE_BOSS_APPEAR
|| ThBoss.BOSS_STATE == GameConstant.STATE_BOSS_DIE
|| ThBoss.BOSS_STATE == GameConstant.STATE_BOSS_TW_DIE) {
} else {
thBoss.drawSecond(graphics, 30, 10);
}
}
break;
}
}
}
// private void drawThunderBullet(Graphics graphics, ObjectPool actorPool) {
// if (actorPool != null) {
// if (actorPool.getUseObjectNum() == 0) {
// return;
// }
//
// Object[] actors = actorPool.getFreeActor();
//
// for (int idx = 0; idx < actors.length; idx++) {
// Bullet bullet = (Bullet) actors[idx];
// if (bullet.isNotUsed() == true) {
// continue;
// }
//
// if (bullet.lastFrame()) {
// bullet.setAction((byte) 1);
// }
//
// bullet.draw(graphics);
// }
// }
// }
public void drawPlaneActor(Graphics graphics, ObjectPool actorPool) {
if (actorPool != null) {
if (actorPool.getUseObjectNum() == 0) {
return;
}
Object[] actors = actorPool.getFreeActor();
for (int idx = 0; idx < actors.length; idx++) {
Actor actor = (Actor) actors[idx];
if (actor.isNotUsed() == true) {
continue;
}
actor.draw(graphics);
}
}
}
public void drawEffect(Graphics graphics, ObjectPool actorPool) {
//System.out.println("num===" + actorPool.getUseObjectNum());
if (actorPool.getUseObjectNum() == 0) {
return;
}
Object[] actors = actorPool.getFreeActor();
for (int idx = 0; idx < actors.length; idx++) {
Bullet bullet = (Bullet) actors[idx];
if (bullet.isNotUsed() == true) {
continue;
}
//System.out.println("242442244242");
bullet.draw(graphics);
}
}
public void drawClipBullet(Graphics graphics, ObjectPool actorPool) {
if (actorPool != null) {
if (actorPool.getUseObjectNum() == 0) {
return;
}
Object[] bullets = actorPool.getFreeActor();
for (int idx = 0; idx < bullets.length; idx++) {
Bullet bullet = (Bullet) bullets[idx];
if (bullet.isNotUsed() == true) {
continue;
}
bullet.drawClipImage(graphics);
}
}
}
public void drawTrackBullet(Graphics graphics,ObjectPool actorPool){
if(actorPool != null){
if(actorPool.getUseObjectNum() == 0){
return;
}
Object[] bullets = actorPool.getFreeActor();
for (int idx = 0; idx < bullets.length; idx++) {
Bullet bullet = (Bullet) bullets[idx];
if(bullet.isNotUsed() == true){
continue;
}
bullet.drawRegionImage(graphics);
}
}
}
private void drawRocketBullet(Graphics graphics, ObjectPool actorPool) {
if (actorPool.getUseObjectNum() == 0) {
return;
}
Object[] bullets = actorPool.getFreeActor();
for (int idx = 0; idx < bullets.length; idx++) {
Bullet bullet = (Bullet) bullets[idx];
if (bullet.isNotUsed() == true) {
continue;
}
bullet.drawRegionImage(graphics, 0, 12, 17, 6, Sprite.TRANS_ROT270,
GameConstant.TOPLEFT);
}
}
private void drawImageBullet(Graphics graphics,ObjectPool actorPool){
if (actorPool.getUseObjectNum() == 0) {
return;
}
Object[] bullets = actorPool.getFreeActor();
for (int idx = 0; idx < bullets.length; idx++) {
Bullet bullet = (Bullet)bullets[idx];
if (bullet.isNotUsed() == true) {
continue;
}
bullet.drawImage(graphics);
}
}
public void drawGameBack(Graphics graphics) {
graphics.drawImage(bgImage, 0, displacement, GameConstant.TOPLEFT);
graphics.drawImage(bgImage, 0, displacement, GameConstant.LEFTBUTTOM);
displacement += backMoveSpeed; // 背景移动的距离
if (displacement >= GameConstant.iSCREEN_HEIGHT) {
displacement = 0;
}
}
public void doMain(int releasekeyCode,int pressKeyCode) {
battlePlane.changeMyState(releasekeyCode,pressKeyCode);
if (isBossAppear != true) {
//System.out.println("i ==" + i);
if (i < 30 && mapLoadCount <= 60) {
if (mapLoadCount % 20 == 0) {
// System.out.println("mapData[" + i + "][0]" + mapData[i][0]);
// System.out.println("mapData[" + i + "][1]" + mapData[i][1]);
// System.out.println("mapData[" + i + "][2]" + mapData[i][2]);
// System.out.println("mapData[" + i + "][3]" + mapData[i][3]);
if (gameLevel == 1) {
newEnemy(frMapData[i][0]);
newEnemy(frMapData[i][1]);
newEnemy(frMapData[i][2]);
newEnemy(frMapData[i][3]);
}
if (gameLevel == 2) {
newEnemy(secMapData[i][0]);
newEnemy(secMapData[i][1]);
newEnemy(secMapData[i][2]);
newEnemy(secMapData[i][3]);
}
if (gameLevel == 3) {
newEnemy(thMapData[i][0]);
newEnemy(thMapData[i][1]);
newEnemy(thMapData[i][2]);
newEnemy(thMapData[i][3]);
}
if (i != 0 && i % 12 == 0) { // 每12皮怪出一次运输机
newEnemy(20);
}
if (i < 30) {
i += 1;
}
}
mapLoadCount++;
} else if (i < 30 && !isHaveClass()) {
mapLoadCount = 20;
}else if(i >= 30 && !isHaveClass()) {
if (i == 30) {
gameScreen.StopSound();
GameConstant.MUSIC_GAME_STATE = GameConstant.MUSIC_GAME_BOSS;
//gameScreen.playSound(GameConstant.MUSIC_GAME_BOSS);
gameScreen.playSound(GameConstant.MUSIC_GAME_STATE);
try {
//创建图片
dangerImage = Image.createImage("/warn.png");
// if (gameLevel == 3)
// taskCompelete = Image
// .createImage("/miComplete.png");
} catch (IOException e) {
e.printStackTrace();
}
}
if(i == 50){
i = 0;
mapLoadCount = 20;
GameScreen.gameState = GameConstant.STATE_GAME_BOSSAPPEAR;
}
// if(i == 80){
// backMoveSpeed = 8;
// cleanNotUsedObject();
//
// if (gameLevel == 2) //第2关BOSS出现之前把所有不需要的子弹对象全部清空
// cleanObjectBeforeSecBoss();
//
// if (gameLevel == 3) // 第3关BOSS出现之前把所有不需要的子弹对象全部清空
// cleanObjectBeforeThBoss();
// }
//if (i == 100) {
//loadbulletEffect();
//}
// if(i == 120){
// transport.clean();
// transport = null;
//
// isBossAppear = true;
// }
i++;
}
}
doPlaneWeapon();
doEnemy();
doEnemyBullet();
doEffect();
doBoss();
}
public void cleanNotUsedObject() {
helicopterActorPool.cleanObjectPool(); // 清除直升机对象池
largePlaneActorPool.cleanObjectPool(); // 清除大型飞机对象池
scoutPlaneActorPool.cleanObjectPool(); // 清除战斗机对象池
hidingPlaneActorPool.cleanObjectPool(); // 清除影形机对象池
helicopterActorPool = null;
largePlaneActorPool = null;
scoutPlaneActorPool = null;
hidingPlaneActorPool = null;
for (int hIdx = 0; hIdx < GameConstant.MAX_ENEMY_HELICOPTER; hIdx++) {
helicopterActor[hIdx].cleanSpirit();
helicopterActor[hIdx] = null;
}
helicopterActor = null;
for (int sIdx = 0; sIdx < GameConstant.MAX_ENEMY_SCOUTPLANE; sIdx++) {
scoutPlaneActor[sIdx].cleanSpirit();
scoutPlaneActor[sIdx] = null;
}
scoutPlaneActor = null;
for (int hiIdx = 0; hiIdx < GameConstant.MAX_ENEMY_HIDING; hiIdx++) {
hidingPlaneActor[hiIdx].cleanSpirit();
hidingPlaneActor[hiIdx] = null;
}
hidingPlaneActor = null;
for (int larIdx = 0; larIdx < GameConstant.MAX_ENEMY_LARGEPLANE; larIdx++) {
largePlaneActor[larIdx].clean();
largePlaneActor[larIdx] = null;
}
largePlaneActor = null;
if (gameLevel != 3) {
plAircraftActorPool.cleanObjectPool();
plAircraftActorPool = null;
for (int plIdx = 0; plIdx < GameConstant.MAX_ENEMY_AIRCRAFT; plIdx++) {
plAircraftActor[plIdx].clean();
plAircraftActor[plIdx] = null;
}
plAircraftActor = null;
}
System.gc();
}
//清除第2关BOSS出现不需要的对象
public void cleanObjectBeforeSecBoss() {
largePlaneBulletPool.cleanObjectPool();
largePlaneBulletPool = null;
for (int eBullet2Idx = 0; eBullet2Idx < GameConstant.MAX_ENEMY_LARGEPLANEBULLET; eBullet2Idx++) {
largePlaneBullet[eBullet2Idx].clean();
largePlaneBullet[eBullet2Idx] = null;
}
largePlaneBullet = null;
System.gc();
}
public void cleanObjectBeforeThBoss() {
helicopterBulletPool.cleanObjectPool();
largePlaneBulletPool.cleanObjectPool();
missileBulletPool.cleanObjectPool();
helicopterBulletPool = null;
largePlaneBulletPool = null;
missileBulletPool = null;
for (int eBullet1Idx = 0; eBullet1Idx < GameConstant.MAX_ENEMY_HELICOPTERBULLET; eBullet1Idx++) {
helicopterBullet[eBullet1Idx].clean();
helicopterBullet[eBullet1Idx] = null;
}
helicopterBullet = null;
for (int eBullet2Idx = 0; eBullet2Idx < GameConstant.MAX_ENEMY_LARGEPLANEBULLET; eBullet2Idx++) {
largePlaneBullet[eBullet2Idx].clean();
largePlaneBullet[eBullet2Idx] = null;
}
largePlaneBullet = null;
for (int mIdx = 0; mIdx < GameConstant.MAX_BULLET_MISSILEBULLET; mIdx++) {
missileBullet[mIdx].clean();
missileBullet[mIdx] = null;
}
missileBullet = null;
System.gc();
}
public void cleanAllObecjt() {
if (isBossAppear == true) {
switch (gameLevel) {
case 1:
frBoss.clean();
frBoss = null;
break;
case 2:
secBoss.clean();
secBoss = null;
break;
case 3:
thBoss.clean();
thBoss = null;
break;
}
if (gameLevel != 3) {
bossBulletPool.cleanObjectPool();
bossBulletPool = null;
for (int bossBulletIdx = 0; bossBulletIdx < GameConstant.MAX_ENEMY_BOSSBULLET; bossBulletIdx++) {
bossBullet[bossBulletIdx].clean();
bossBullet[bossBulletIdx] = null;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -