📄 gameworld.java
字号:
loadScale = 11;
serviceRepaints();
this.potImage = loadImage("/pot.png");
smallEnemyImage = loadImage("/soldier_small3.png");// 随机敌人
bigEnemyImage = loadImage("/soldier_big3.png");// 丢炸弹的敌人
backgroundImage = loadImage("/bg_3.png");
loadScale = 12;
serviceRepaints();
break;
case 8:
horntest_map = this.loadMap("8");
this.busImage = loadImage("/bus.png");
towerImage = loadImage("/pot.png");
loadScale = 11;
serviceRepaints();
this.potImage = loadImage("/pot.png");
this.houseImage2 = loadImage("/house_2.png");
smallEnemyImage = loadImage("/soldier_small3.png");// 随机敌人
bigEnemyImage = loadImage("/soldier_big3.png");// 丢炸弹的敌人
backgroundImage = loadImage("/bg_3.png");
loadScale = 12;
serviceRepaints();
break;
case 9:
horntest_map = this.loadMap("9");
this.busImage = loadImage("/bus.png");
towerImage = loadImage("/pot.png");
loadScale = 11;
serviceRepaints();
this.planeImage = loadImage("/plane.png");
this.houseImage2 = loadImage("/house_2.png");
this.potImage = loadImage("/pot.png");
smallEnemyImage = loadImage("/soldier_small3.png"); // 随机敌人
bigEnemyImage = loadImage("/soldier_big3.png"); // 丢炸弹的敌人
backgroundImage = loadImage("/bg_3.png");
loadScale = 12;
serviceRepaints();
break;
}
if (level < 10)
{
bgWidth = backgroundImage.getWidth();
end = bgWidth;
}
randomEnemyType = 5; // 设置随机出现敌人的类型
column = -offsetX / 16; // 地图砖块的起始下标
endColumn = column + screenWidth / 16; // 地图砖块的结束下标
tempEnd = endColumn;
allEnemy = new Enemy[totalSprite]; // 敌人精灵数组
for (int i = 0; i < totalSprite; i++)
{
allEnemy[i] = new Enemy(45, 45, 1, this); // 默认为步兵
}
player = new Player(1, 1, this); // 设置游戏玩家
loadScale = 13;
serviceRepaints();
// 初始化屏幕上的固定敌人和前景
for (byte row = 0; row < horntest_map.length; row++)//horntest_map.length = 13;
{
for (byte col = (byte) column; col < endColumn; col++)//endColumn = 11;
{
if (horntest_map[row][col] != 0)
{
// 检测是否有空闲的对象
for (int j = 0; j < allEnemy.length; j++)//allEnemy.length = 20;
{
if (!allEnemy[j].visible)
{ // 空闲对象即不可见的对象
// 初始化对象为地图数据上类型 13*100
allEnemy[j].init(col * 16, horntest_map[row][col]);
if (allEnemy[j].spriteType == 1
|| allEnemy[j].spriteType == 2
|| allEnemy[j].spriteType == 3
|| allEnemy[j].spriteType == 4
|| allEnemy[j].spriteType == 5
|| allEnemy[j].spriteType == 6
|| allEnemy[j].spriteType == 13
|| allEnemy[j].spriteType == 14
|| allEnemy[j].spriteType == 28)
{
enemyCount++;
}
// 用冒泡法来根据对象的Y坐标排序
for (int i = 0; i < allEnemy.length; i++)
{
for (int k = i + 1; k < allEnemy.length; k++)
{
if (allEnemy[k].visible
&& allEnemy[k].spriteY
+ allEnemy[k].height < allEnemy[i].spriteY
+ allEnemy[i].height)
{
Enemy tempE = allEnemy[i];
allEnemy[i] = allEnemy[k];
allEnemy[k] = tempE;
}
}
}
break;
}
}
}
}
}
loadScale = 14;
serviceRepaints();
System.gc();
isLoading = false;
gameStart = true;
// System.out.println(endColumn);
}
//添加小子弹图标
public static void addBulletIcon()
{
for (int i = 0; i < 30 - Player.bulletCount; i++)
bulletVector.addElement(itemImage);
}
//取得随机数
public int randomNum(int seed)
{
return (random.nextInt() & 0x7fffffff) % seed;
}
/**
* 设置游戏状态
*
* @param b
* 游戏状态常量
*/
public void setGameState(byte b)
{
gameState = b;
}
// 游戏按键的重置
public void keyReset()
{
upPress = false;
downPress = false;
leftPress = false;
rightPress = false;
upRightPress = false;
upLeftPress = false;
downRightPress = false;
downLeftPress = false;
}
// 游戏按键
public void keyPressed(int keyCode)
{
/** ***************************游戏刚刚开始******************************* */
if (isNew)
{
if (logoCount == 2 && nameStart <= 120)
{// 显示完LOGO后进入游戏菜单
logoImage = null;// 释放LOGO 资源
nameImage = null;
anykeyImage = null;
isNew = false;
startMenu = true;
System.gc();
}
if (keyCode == K_BACK)// 右软键盘退出
{
Project2.exitApp();
}
return;
}
/** ***************************菜单选择************************************ */
if (startMenu)
{
if (!keyMenu)
{
return;
}
if (getGameAction(keyCode) == Canvas.LEFT
|| keyCode == Canvas.KEY_NUM4)
{
if (menuItem == 1)
{
menuItem = 5;
} else
{
menuItem--;
}
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
return;
}
if (getGameAction(keyCode) == Canvas.RIGHT
|| keyCode == Canvas.KEY_NUM6)
{
if (menuItem == 5)
{
menuItem = 1;
} else
{
menuItem++;
}
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
return;
}
if (getGameAction(keyCode) == Canvas.FIRE || keyCode == K_OK)
{
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
switch (menuItem)
{
case 1: // 开始游戏
startMenu = false;
isStartCaption = true;
break;
case 2: // 继续游戏
startMenu = false;
sound = loadSetUP();
level = loadLevel();
initGame(20, level);
gameStart = true;
/** ****************************************************************************************** */
break;
case 3: // 音效开关
startMenu = false;
setGame = true;
break;
case 4: // 帮助
startMenu = false;
help = true;
break;
case 5: // 退出
Project2.exitApp();
break;
}
}
if (keyCode == K_BACK)// 右软键盘退出
{
Project2.exitApp();
}
return;
}
/** **************************游戏设置************************************ */
if (setGame)
{
if (!keyMenu)
{
return;
}
if (getGameAction(keyCode) == Canvas.FIRE || keyCode == K_OK)
{
sound = !sound;
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
}
if (keyCode == K_BACK)
{// 返回菜单
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
setGame = false;
startMenu = true;
saveSetUP();
}
return;
}
/** ****************************帮助************************************** */
if (help)
{
if (!keyMenu)
{
return;
}
if (getGameAction(keyCode) == Canvas.UP
|| keyCode == Canvas.KEY_NUM2)
{
if (helpItem > 0)
{
helpItem--;
}
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
return;
}
if (getGameAction(keyCode) == Canvas.DOWN
|| keyCode == Canvas.KEY_NUM8)
{
if (helpItem < 2)
{
helpItem++;
}
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
return;
}
if (keyCode == K_OK || keyCode == K_BACK)
{
help = false;
startMenu = true;
helpItem = 0;
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
}
return;
}
/** **************************游戏中的菜单********************************* */
if (gameMenu)
{
if (!keyMenu)
{
return;
}
if (getGameAction(keyCode) == Canvas.UP
|| keyCode == Canvas.KEY_NUM2)
{
if (gameMenuItem == 1)
{
gameMenuItem = 2;
} else
{
gameMenuItem = 1;
}
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
return;
}
if (getGameAction(keyCode) == Canvas.DOWN
|| keyCode == Canvas.KEY_NUM8)
{
if (gameMenuItem == 2)
{
gameMenuItem = 1;
} else
{
gameMenuItem = 2;
}
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
{
e.printStackTrace();
}
keyMenu = false;
}
return;
}
if (getGameAction(keyCode) == Canvas.FIRE
|| keyCode == Canvas.KEY_NUM5 || keyCode == K_OK)
{
switch (gameMenuItem)
{
case 1: // 继续游戏
gameMenu = false;
break;
case 2: // 退出
this.autoSave();
reset();
gameMenu = false;
System.gc();
break;
}
if (sound)
{
try
{
soundSFX[0].stop();
soundSFX[0].start();
} catch (MediaException e)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -