📄 raidencanvas.java
字号:
//背景1
if (score > 4000 && score <= 7000)
{
g.drawImage(imgBack2, 0, backY, 0); //背景2
if(backY>0&&backY<CanvasHeight)
g.drawImage(imgBack2, 0, backY-imgBack2.getHeight(), 0);
}
if (score > 7000 && score <= 10100)
{
g.drawImage(imgBack3, 0, backY, 0); //背景3
if(backY>0&&backY<CanvasHeight)
g.drawImage(imgBack3, 0, backY-imgBack2.getHeight(), 0);
}
player.paint(g);
for (i = 0; i < 3; i++)
{
bullets[i].draw(g);
}
enemy1.draw(g);
enemy2.draw(g);
for (i = 0; i < 8; i++)
{
enemy3456[i].draw(g);
}
bonus.draw(g);
g.drawImage(imgState, 0, CanvasHeight - 10, g.TOP | g.LEFT);
g.setColor(0xffff00);
g.fillRect(8, CanvasHeight - 10+3, energy, 4);
if (isExplored)
{
g.drawImage(imgExplored, expX, expY, g.TOP | g.LEFT);
isExplored = false;
}
switch(life){
case 3:
g.drawImage(imgLife, 60+imgLife.getWidth(),CanvasHeight-imgLife.getHeight(), g.TOP | g.LEFT);
g.drawImage(imgLife, 60+2*imgLife.getWidth(), CanvasHeight-imgLife.getHeight(), g.TOP | g.LEFT);
g.drawImage(imgLife, 60+3*imgLife.getWidth(), CanvasHeight-imgLife.getHeight(), g.TOP | g.LEFT);
break;
case 2:
g.drawImage(imgLife, 60+imgLife.getWidth(), CanvasHeight-imgLife.getHeight(), g.TOP | g.LEFT);
g.drawImage(imgLife, 60+2*imgLife.getWidth(), CanvasHeight-imgLife.getHeight(), g.TOP | g.LEFT); break;
case 1:
g.drawImage(imgLife, 60+imgLife.getWidth(), CanvasHeight-imgLife.getHeight(), g.TOP | g.LEFT);
break;
default:
break;
}
g.setFont(font);
g.setColor(0xffffff);
g.drawString("暂停",CanvasWidth-2*fontWidth,CanvasHeight-fontHeight,g.TOP|g.LEFT);
drawScore(g);
if(isWin||isFail){
g.setColor(0x000000);
g.fillRect(0,0,CanvasWidth,CanvasHeight);
if(isWin)g.drawImage(imgWin,CanvasWidth/2,CanvasHeight/2,g.VCENTER|g.HCENTER);
if(isFail)g.drawImage(imgFail,CanvasWidth/2,CanvasHeight/2,g.VCENTER|g.HCENTER);
if(score>midlet.highScore&&isFail){
g.setColor(0xffffff);
g.drawString("恭喜,打破记录!",40,CanvasHeight/2+40,g.TOP|g.LEFT);
}
}
flushGraphics();
}
private void drawScore(Graphics g)
{
i = score/10000;
g.drawImage(num[i],CanvasWidth-5*7-5,0,g.TOP|g.LEFT);
i = (score%10000)/1000;
g.drawImage(num[i],CanvasWidth-4*7-4,0,g.TOP|g.LEFT);
i = (score%1000)/100;
g.drawImage(num[i],CanvasWidth-3*7-3,0,g.TOP|g.LEFT);
i = (score%100)/10;
g.drawImage(num[i],CanvasWidth-2*7-2,0,g.TOP|g.LEFT);
i = score%10;
g.drawImage(num[i],CanvasWidth-1*7-1,0,g.TOP|g.LEFT);
}
private void tick()
{
Enemy3456Cnt++;
if (Enemy3456Cnt % 15 == 0)
{
i = (random.nextInt() & 0x7fffffff) % 8;
if (enemy3456[i].isAlive() == false)
enemy3456[i].setAlive(true);
}
bonusCnt++;
if (bonusCnt % 5 == 0)//改成100
{
if (bonus.isAlive() == false)
{
bonus.setAlive(true);
}
}
// If player presses two or more direction buttons, we ignore them
// all. But pressing fire is independent. The code below also ignores
// direction buttons if GAME_A..GAME_D are pressed.
// if (backY <= 0)
// {
//背景从y<0开始下移
backY = backY + 1;
// }
if (backY ==CanvasHeight )
{
//至y>0返回重新移动
backY = CanvasHeight - imgBack1.getHeight();;
}
for (i = 0; i < 8; i++)
{
enemy3456[i].tick();
}
bonus.tick();
player.tick();
if(bonus.isAlive() == true&&player.collidesWith(bonus,false)){
bonus.setAlive(false);
if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.BONUS);
switch(bonus.bonusType)
{
case 0:
player.speedup();
break;
case 1:
life++;if(life>3)life = 3;
break;
case 2:
energy+=16;
if(energy>40)energy=40;
break;
}
}
for (i = 0; i < 3; i++)
{
bullets[i].tick();
}
if((1400>=score&&score>=1000||2400>=score&&score>=2000||6400>=score&&score>=6000)&&enemy1.isAlive() ==false)enemy1.setAlive(true);
if((3500>=score&&score>=3100||8500>=score&&score>=8000||9500>=score&&score>=9000)&&enemy2.isAlive() ==false)enemy2.setAlive(true);
enemy1.tick(player.getRefPixelX());
if(player.collidesWith(enemy1,false)){
life--;energy=40;
player.setAlive(true);}
enemy2.tick();
if(player.collidesWith(enemy2,false)){
life--;energy=40;
player.setAlive(true);}
if(enemy1.isBullet1Alive&&player.collidesWith(enemy1.bullet1,false)){
enemy1.isBullet1Alive = false;
isExplored = true;
expX = player.getX();
expY = player.getY();
energy-=8;
}
if(enemy1.isBullet2Alive&&player.collidesWith(enemy1.bullet2,false)){
enemy1.isBullet2Alive = false;
isExplored = true;
expX = player.getX();
expY = player.getY();
energy-=8;
}
if(enemy2.isBullet1Alive&&player.collidesWith(enemy2.bullet1,true)){
enemy2.isBullet1Alive = false;
isExplored = true;
expX = player.getX();
expY = player.getY();
energy-=8;
}
if(enemy2.isBullet2Alive&&player.collidesWith(enemy2.bullet2,true)){
enemy2.isBullet2Alive = false;
isExplored = true;
expX = player.getX();
expY = player.getY();
energy-=8;
}
for (i = 0; i < 3; i++)
{
if (enemy1.isAlive() && bullets[i].isAlive() &&
bullets[i].collidesWith(enemy1, false))
{
isExplored = true;
expX = bullets[i].getRefPixelX();
expY = bullets[i].getRefPixelY();
enemy1.energy--;
if(enemy1.energy==0){enemy1.setAlive(false);score+=400;if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.EXPLOSION);}
}
if (enemy2.isAlive() && bullets[i].isAlive() &&
bullets[i].collidesWith(enemy2, false))
{
isExplored = true;
expX = bullets[i].getRefPixelX();
expY = bullets[i].getRefPixelY();
enemy2.energy--;
if(enemy2.energy==0){enemy2.setAlive(false);score+=400;if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.EXPLOSION);}
}
}
for (i = 0; i < 8; i++)
{
for (j = 0; j < 3; j++)
{
if (enemy3456[i].isAlive() && bullets[j].isAlive() &&
bullets[j].collidesWith(enemy3456[i], false))
{
isExplored = true;
expX = enemy3456[i].getX();
expY = enemy3456[i].getY();
enemy3456[i].setAlive(false);
bullets[j].setAlive(false);
score+=100;
if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.DEAD);
}
}
if (enemy3456[i].isAlive() && player.collidesWith(enemy3456[i],false))
{
enemy3456[i].setAlive(false);
isExplored = true;
expX = enemy3456[i].getX();
expY = enemy3456[i].getY();
life--;energy=40;
player.setAlive(true);
}
if(enemy3456[i].isBulletAlive&& player.collidesWith(enemy3456[i].bullet,false))
{
// enemy3456[i].setAlive(false);
isExplored = true;
expX = player.getX();
expY = player.getY();
enemy3456[i].isBulletAlive = false;
energy-=8;
}
}
if(energy == 0){life--;energy=40;if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.NEW_PLAYER);}
if(life==-1){isFail = true;
if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.FAIL);
}
if(score>=10000){
isWin = true;
if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.WIN);
if(midlet.set[RaidenMIDlet.VIBRA])midlet.vibrate(100,100,3);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -