📄 oceancanvas.java
字号:
}else if(random.nextInt()%32 == 0){
if (waterBoy.isVisible()) {
addMissile(waterBoy);
break;
}
}
}
}
// ===============随机增加导弹end==============
//===============急救箱start===============
if (random.nextInt() % 180 == 0) {
for (int i = 0; i < 20; i++) {
if (!missile[i].isVisible()) {
missile[i].setFrame(9);
missile[i].setPosition(Math.abs(random.nextInt()
% (getWidth() - 50) + 25), Math.abs(random
.nextInt()
% (getHeight() - 100)) + 25);
missile[i].setVisible(true);
break;
}
}
}
// =============急救箱end==================
// ===============红心start=================
if (random.nextInt() % 350 == 0) {
for (int i = 0; i < MISSILECOUNTS; i++) {
if (!missile[i].isVisible()) {
missile[i].setFrame(13);
missile[i].setPosition(Math.abs(random.nextInt()
% (getWidth() - 50) + 25), Math.abs(random
.nextInt()
% (getHeight() - 100) + 25));// x(25~151),y(25~123)
missile[i].setVisible(true);
break;
}
}
}
// ===============红心end==================
// =============导弹处理start================
for (int i = 0; i < MISSILECOUNTS; i++) {
if (missile[i].isVisible()) {
// 玩家发射导弹
if (missile[i].getFrame() == 7) {
missile[i].move(0, -5);
if (missile[i].collidesWith(acaleph1, true)) {
addExplosion(acaleph1);
acaleph1HP = acaleph1HP - 2;
playerScores = playerScores + 10;
missile[i].setVisible(false);
} else if (missile[i].collidesWith(acaleph2, true)) {
addExplosion(acaleph2);
acaleph2HP = acaleph2HP - 2;
playerScores = playerScores + 10;
missile[i].setVisible(false);
} else if (missile[i].collidesWith(waterBoy, true)) {
addExplosion(waterBoy);
playerScores = playerScores + 10;
missile[i].setVisible(false);
waterBoy.setVisible(false);
} else if (missile[i].collidesWith(mine, true)) {
addExplosion(mine);
playerScores = playerScores + 10;
missile[i].setVisible(false);
mine.setVisible(false);
} else if (missile[i].collidesWith(submarine, true)) {
addExplosion(submarine);
playerScores = playerScores + 10;
missile[i].setVisible(false);
submarine.setVisible(false);
}
}
// 潜水艇开火
else if (missile[i].getFrame() == 4) {
missile[i].move(0, 2);
if (missile[i].collidesWith(playerPlane, true)) {
addExplosion(playerPlane);
playerHP = playerHP - 5;
missile[i].setVisible(false);
}
}
// 水娃开火
else if (missile[i].getFrame() == 3) {
missile[i].move(0, 3);
if (missile[i].collidesWith(playerPlane, true)) {
addExplosion(playerPlane);
playerHP = playerHP - 5;
missile[i].setVisible(false);
}
}
// 水母开火
else if (missile[i].getFrame() == 6) {
if(!acaleph1.isVisible()){
missile[i].setVisible(false);
} else if(!acaleph2.isVisible()){
missile[i].setVisible(false);
}
missile[i].move(0, 3);
if (missile[i].collidesWith(playerPlane, true)) {
addExplosion(playerPlane);
playerHP = playerHP - 5;
missile[i].setVisible(false);
}
}
// 加人
else if(missile[i].getFrame() == 13){
missile[i].move(0,2);
if(missile[i].collidesWith(playerPlane,true)){
playerLifeCounts = Math.min(playerLifeCounts + 1,9);
missile[i].setVisible(false);
}
}
// 加血
else if(missile[i].getFrame() == 9){
missile[i].move(0,2);
if(missile[i].collidesWith(playerPlane,true)){
playerHP = Math.min(playerHP + 5,70);
missile[i].setVisible(false);
}
}
missile[i].checkBounds();
}
}
// =============导弹处理end==================
// =============水雷的攻击处理start=======
if (mine.collidesWith(playerPlane, true)) {
addExplosion(playerPlane);
playerHP = playerHP - 5;
mine.setVisible(false);
}
// =============水雷的攻击处理endt=======
// ============爆炸处理start===============
for (int i = 0; i < EXPLOSIONCOUNTS; i++) {
if (explosion[i].isVisible()) {
if (explosion[i].getFrame() < 3) {
explosion[i].nextFrame();
} else {
explosion[i].setVisible(false);
}
//break; //由于必须对所有的爆炸进行处理,所以要遍历爆炸数组。
}
}
// ============爆炸处理end================
updateInfo();
}
public void updateInfo() {
if (playerHP <= 0) {
playerLifeCounts = playerLifeCounts - 1;
playerHP = 70;
}
if (playerLifeCounts == -1) {
playerHP = 0;
playerLifeCounts = 0;
oceanThread = null;
missionThreeGameOver = false;
isWin = false;
Dragon.MISSIONCOUNTS = Dragon.MENULIST;
Dragon.showMenu = true;
}
if(acaleph1HP <= 0){
acaleph1.setVisible(false);
} else if(acaleph2HP <= 0){
acaleph2.setVisible(false);
}
if (acaleph1HP <= 0 && acaleph2HP <= 0) {
Dragon.MISSIONCOUNTS = Dragon.MISSIONBOSS;
// Dragon.bossCanvas = new BOSSCanvas(Display.getDisplay(dragonMidlet));
missionThreeGameOver = true;
oceanThread = null;
isWin = true;
}
}
public void topInfoBar(Graphics g) {
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_SMALL));
g.setColor(0x999999);// 设定状态栏背景色是浅灰色
g.fillRect(0, 0, infoBarWidth, infoBarHeight);// 设定状态栏大小
g.drawImage(acalephIconImage, 0, 0, Graphics.LEFT | Graphics.TOP);// 绘制Boss1头标
g.setColor(0xff0000);
g.drawRect(17, 4, 70, 8);
g.setColor(0xccff33);
if (acaleph1HP < 30) {
g.setColor(0xff0000);
}
g.fillRect(17, 4, acaleph1HP, 8);// 绘制boss1血槽
g.drawImage(acalephIconImage, 88, 0, Graphics.LEFT | Graphics.TOP);// 绘制boss2头标
g.setColor(0xff0000);
g.drawRect(105, 4, 70, 8);
g.setColor(0xccff33);
if (acaleph2HP < 30) {
g.setColor(0xff0000);
}
g.fillRect(105, 4, acaleph2HP, 8);// 绘制boss2血槽
}
public void bottomInfoBar(Graphics g) {
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_SMALL));
// ===============绘制底部状态栏start===============
g.setColor(0x999999);// 设定状态栏背景色是浅灰色
g.fillRect(0, getHeight() - 20, infoBarWidth, infoBarHeight);// 设定状态栏大小
g.drawImage(playerIconImage, 0, getHeight() - 20, Graphics.LEFT
| Graphics.TOP);// 绘制player头标
g.setColor(0);
g.drawString(Integer.toString(playerLifeCounts), 20, getHeight() - 15,
Graphics.LEFT | Graphics.TOP);// 绘制生命数字符串
g.drawRect(30, getHeight() - 16, 70, 8);
g.setColor(0xccff00);
if (playerHP < 20) {
g.setColor(0xff0000);
}
g.fillRect(30, getHeight() - 16, playerHP, 8);// 绘制player血槽
g.setColor(0);// 设定字体颜色
g.drawString("SCORE:", 104, getHeight() - 18, Graphics.LEFT
| Graphics.TOP);// 绘制SCORES字符串
g.drawString(Integer.toString(playerScores), 142, getHeight() - 18,
Graphics.LEFT | Graphics.TOP);// 绘制SCORES
}
protected void drawIt(Graphics g) {
g.drawImage(backgroundImage, 0, 20, Graphics.LEFT | Graphics.TOP);
topInfoBar(g);// 顶部信息栏
missileVisibleCounts(g);
oceanCanvasLayer.paint(g, 0, 0);// 游戏主画面
bottomInfoBar(g);// 底部信息栏
if (stringShowCounts <= 38) {// 因为rate=40所以38表示1.5s,50表示2s
g.setColor(0xff0000);
g.drawString("Mission Three", getWidth() / 2 - 35,
getHeight() / 2 - 10, Graphics.LEFT | Graphics.TOP);
g.drawString("Ocean! Fight", getWidth() / 2 - 50,
getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
}
if (missionThreeGameOver) {
g.setColor(0xff0000);
g.drawString("Mission three", getWidth() / 2 - 35,
getHeight() / 2 - 10, Graphics.LEFT | Graphics.TOP);
if (isWin) {
g.setColor(0xff0000);
g.drawString("You Win!", getWidth() / 2 - 25,
getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
g.drawString("Loading......",getWidth() / 2 - 28,
getHeight() / 2 + 22, Graphics.LEFT | Graphics.TOP);
System.out.println(playerScores);
System.out.println("win " + Dragon.MISSIONCOUNTS);
} else {
g.setColor(0xff0000);
g.drawString("You Lose!", getWidth() / 2 - 30,
getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
System.out.println(playerScores);
System.out.println("lose " + Dragon.MISSIONCOUNTS);
}
}
flushGraphics();// flushGraphics()千万别忘。
}
public void missileVisibleCounts(Graphics g) {
// ===========监测可见弹药数start=============
int missileCount = 0;
for (int i = 0; i < MISSILECOUNTS; i++) {
if (missile[i].isVisible())
missileCount++;
}
g.setColor(0);
g.drawString(Integer.toString(missileCount), 0, 25, Graphics.LEFT
| Graphics.TOP);
// ===========监测可见弹药数end===============
}
public int randomXPosition() {
return Math.abs(random.nextInt() % (getWidth() - 50) + 40);
}
public int randomYPosition() {
return Math.abs(random.nextInt() % (getHeight() - 100));
}
public void addCharacter(GameSprites sprites) {
sprites.setPosition(randomXPosition(), randomYPosition());
sprites.setVisible(true);
if (sprites == playerPlane) {
sprites.setPosition((getWidth() - playerPlane.getWidth()) / 2,
getHeight() - 40);
}
}
public void addMissile(GameSprites sprites) {
for (int i = 0; i < MISSILECOUNTS; i++) {
if (!missile[i].isVisible()) {
if (sprites == submarine) {
missile[i].setFrame(4);
missile[i].setPosition(sprites.getX() + 16,
sprites.getY() + 16);
missile[i].setVisible(true);
break;
} else if (sprites == acaleph2) {
if(acaleph2.isVisible()){
missile[i].setFrame(6);
missile[i].setPosition(sprites.getX() - 2,
sprites.getY() + 15);
missile[i].setVisible(true);
}
break;
} else if (sprites == acaleph1) {
if(acaleph1.isVisible()){
missile[i].setFrame(6);
missile[i].setPosition(sprites.getX() - 10,
sprites.getY() + 15);
missile[i].setVisible(true);
}
break;
} else if (sprites == waterBoy) {
missile[i].setFrame(3);
missile[i].setPosition(sprites.getX() + 35,
sprites.getY() + 10);
missile[i].setVisible(true);
break;
} else if (sprites == playerPlane) {
missile[i].setFrame(7);
missile[i].setPosition(sprites.getX()
+ (sprites.getWidth() / 2) - 6, sprites.getY() - 2);
missile[i].setVisible(true);
break;
}
}
}
}
public void addExplosion(Sprite sprites) {
for (int i = 0; i < EXPLOSIONCOUNTS; i++) {
if (!explosion[i].isVisible()) {
explosion[i].setFrame(0);
explosion[i].setPosition(sprites.getX() + sprites.getWidth()
/ 2, sprites.getY() + sprites.getHeight() / 2);
explosion[i].setVisible(true);
break;
}
}
}
public void randomPlace(Sprite sprites) {
if(random.nextInt()% 50 == 0){
sprites.setPosition(Math.abs(random.nextInt() % getWidth()), Math
.abs(random.nextInt() % (getHeight() - 100)) + 25);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -