📄 desertcanvas.java
字号:
addMissile(eyeballMonster);
}
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 <EXPLOSIONCOUNTS; i++){
if(explosion[i].isVisible()){
if(explosion[i].getFrame()<3){
explosion[i].nextFrame();
} else{
explosion[i].setVisible(false);
}
}
}
//============爆炸处理end================
//=============导弹处理start================
for(int i =0; i< MISSILECOUNTS; i++){
if(missile[i].isVisible()){
//玩家发射导弹
if(missile[i].getFrame() ==16){
missile[i].move(0,-5);
if(missile[i].collidesWith(bigMouthMonster,false)){
addExplosion(bigMouthMonster);
bigMouthMonsterHP = bigMouthMonsterHP - 2;
playerScores = playerScores + 10;
missile[i].setVisible(false);
} else if(missile[i].collidesWith(toLeftMonster,false)){
addExplosion(toLeftMonster);
toLeftMonsterHP = toLeftMonsterHP - 2;
playerScores = playerScores + 10;
missile[i].setVisible(false);
} else if(missile[i].collidesWith(eyeballMonster,false)){
addExplosion(eyeballMonster);
playerScores = playerScores + 10;
missile[i].setVisible(false);
eyeballMonster.setVisible(false);
}
for(int j = 0 ;j < AEROCRAFTCOUNTS; j++){
if(missile[i].collidesWith(aeroCraft[j],false)){
addExplosion(aeroCraft[j]);
playerScores = playerScores + 10;
missile[i].setVisible(false);
aeroCraft[j].setVisible(false);
}
}
}
//眼球怪发射导弹
else if(missile[i].getFrame() == 2){
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){
missile[i].move(0,3);
if(missile[i].collidesWith(playerPlane,true)){
addExplosion(playerPlane);
playerHP = playerHP - 5;
missile[i].setVisible(false);
}
}//red start
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=======
for(int i =0; i< AEROCRAFTCOUNTS; i++){
if(aeroCraft[i].collidesWith(playerPlane,true)){
addExplosion(playerPlane);
playerHP = playerHP - 5;
aeroCraft[i].setVisible(false);
break;
}
}
//=============飞行器的攻击处理endt=======
updateInfo();
}
public void updateInfo(){
if(playerHP<= 0){
playerLifeCounts = playerLifeCounts -1;
playerHP = 70;
}
if(playerLifeCounts == -1){
playerHP = 0;
playerLifeCounts = 0;
desertThread = null;
missionTwoGameOver = false;
isWin = false;
Dragon.MISSIONCOUNTS = Dragon.MENULIST;
Dragon.showMenu = true;
}
if(isLose){
stop();
dragonMidlet.backToMenu();
}
if(bigMouthMonsterHP <= 0){
bigMouthMonster.setVisible(false);
} else if(toLeftMonsterHP <= 0){
toLeftMonster.setVisible(false);
}
if(bigMouthMonsterHP <= 0 && toLeftMonsterHP <= 0){
missionTwoGameOver = true;
desertThread = null;
isWin = true;
Dragon.MISSIONCOUNTS = Dragon.MISSIONTHREE;
// Dragon.oceanCanvas = new OceanCanvas(Display.getDisplay(dragonMidlet));
}
}
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(boss1IconImage,0,0,Graphics.LEFT|Graphics.TOP);//绘制Boss1头标
g.setColor(0xff0000);
g.drawRect(17,4,70,8);
g.setColor(0xccff33);
if(bigMouthMonsterHP < 30){
g.setColor(0xff0000);
}
g.fillRect(17,4,bigMouthMonsterHP,8);//绘制boss1血槽
g.drawImage(boss2IconImage,88,0,Graphics.LEFT|Graphics.TOP);//绘制boss2头标
g.drawRect(105,4,70,8);
g.setColor(0xccff33);
if(toLeftMonsterHP < 30){
g.setColor(0xff0000);
}
g.fillRect(105,4,toLeftMonsterHP,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);
desertCanvasLayer.paint(g,0,0);//游戏主画面
bottomInfoBar(g);//底部信息栏
if(stringShowCounts<= 38){//因为rate=40所以38表示1.5s,50表示2s
g.setColor(0xff0000);
g.drawString("Mission Two",getWidth()/2 -35,getHeight()/2 - 10,Graphics.LEFT|Graphics.TOP);
g.drawString("Desert! Hold Up",getWidth()/2 -50,getHeight()/2 + 10,Graphics.LEFT|Graphics.TOP);
}
if(missionTwoGameOver){
g.setColor(0xff0000);
g.drawString("Mission Two",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) + 30);
}
public void addCharacter(GameSprites sprites){
sprites.setPosition(randomXPosition(),randomYPosition() +20);
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 == bigMouthMonster){
if(bigMouthMonster.isVisible()){
missile[i].setFrame(6);
missile[i].setPosition(sprites.getX()+16,sprites.getY()+16);
missile[i].setVisible(true);
}
break;
} else if(sprites == toLeftMonster){
if(toLeftMonster.isVisible()){
missile[i].setFrame(3);
missile[i].setPosition(sprites.getX()-10,sprites.getY()+15);
missile[i].setVisible(true);
}
break;
} else if(sprites == eyeballMonster){
missile[i].setFrame(2);
missile[i].setPosition(sprites.getX()+35,sprites.getY()+10);
missile[i].setVisible(true);
break;
} else if(sprites == playerPlane){
missile[i].setFrame(16);
missile[i].setPosition(sprites.getX()+ (sprites.getWidth()/2)- 7,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;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -