📄 moomcanvas.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.* ;
import javax.microedition.io.*;
import java.util.Random;
public class MoomCanvas extends Stage implements Runnable {
public boolean gun=false;
private LayerManager lm=new LayerManager ();
private Image img,screen,imgLv,imgLf,imgSc,imgPr,allman[];
private Goodman spaceman;
private Badman tongs[]=new Badman[3];
private Badman tank[] =new Badman[3];
private Badman speed[]=new Badman[3];
private Badman fire[] =new Badman[5];
private Badman snail[]=new Badman[4];
private Badman elec[] =new Badman[2];
private Badman wheel[]=new Badman[2];
private Badman boom[] =new Badman[2];
private Badman com,laser;
private Goods jump,canvas,weapon,fuel,shoot,blood;
private Goods sharp[]=new Goods[20];
private MoomBackground bg ;
private String space="",sep="-",des[];
private int i=0,life=3,level=1,win=3,score=0,bd=5;
private int tankNum=3,tongsNum=3,furitNum=10,snailNum=4,speedNum=3,fireNum=5;
private int elecNum=2,wheelNum=2,sharpNum=20,boomNum=2;
private Graphics g=getGraphics();
private Random r=new Random();
private final int SCREEN_LIMIT=32,PRE_LOCATION_X=-200,PRE_LOCATION_Y=-200,TYPE=3;
private final int WIN_CONTI=1750;
private final int CANVAS_UBOUND=1600,CANVAS_LBOUND=40,MSG_LIMIT=17;
private final int TILEDCOLUMN=56,TILEDROW=10,PLAYERX=33,PLAYERY=100;
private int dir=0,distance=0;
private int keystate;
private ParameterList parlist =new ParameterList();
public MoomCanvas(){
super(true);
try{
img =Image.createImage("/Moom/box.png");
spaceman=new Goodman(img,20,32,PLAYERX,PLAYERY);
img =Image.createImage("/Moom/jump.png");
jump=new Goods(img,32,20,1700,160);
img =Image.createImage("/Moom/stageground.png");
bg=new MoomBackground(TILEDCOLUMN,TILEDROW,img,32,20,level);
img =Image.createImage("/Moom/elector.png");
elec[0]=new Badman(img,16,160,1070,32);
elec[1]=new Badman(img,16,160,1550,32);
img =Image.createImage("/Moom/wheel.png");
wheel[0]=new Badman(img,24,24,PRE_LOCATION_X,PRE_LOCATION_Y);
wheel[1]=new Badman(img,24,24,PRE_LOCATION_X,PRE_LOCATION_Y);
img =Image.createImage("/Moom/weapon3.png");
weapon=new Goods(img,32,32,PRE_LOCATION_X,PRE_LOCATION_Y);
img =Image.createImage("/Moom/tank.png");
for(i=0;i<tankNum;i++)
tank[i]=new Badman(img,31,29,PRE_LOCATION_X,PRE_LOCATION_Y);
img =Image.createImage("/Moom/soldier.png");
for(i=0;i<snailNum;i++)
snail[i]=new Badman(img,24,24,PRE_LOCATION_X,PRE_LOCATION_Y);
img =Image.createImage("/Moom/fuel.png");
fuel=new Goods(img,24,24,PRE_LOCATION_X,PRE_LOCATION_Y);
screen=Image.createImage("/Moom/moombase.png");
canvas=new Goods(screen,2380,208,0,0);
img =Image.createImage("/Moom/bar.png");
blood=new Goods(img,9,28,5,43);
imgLv=Image.createImage("/Moom/lv.png");
imgLf=Image.createImage("/Moom/lf.png");
imgSc=Image.createImage("/Moom/sc.png");
} catch (java.io.IOException e){}
spaceman.plat_init(20,32);
lm.append(spaceman);
lm.append(weapon);
lm.append(jump);
lm.append(elec[0]);
lm.append(elec[1]);
lm.append(wheel[0]);
lm.append(wheel[1]);
for(i=0;i<tankNum;i++) {
lm.append(tank[i]);
}
lm.append(bg);
for(i=0;i<snailNum;i++)
lm.append(snail[i]);
lm.append(fuel);
spaceman.setBg(bg);
spaceman.setJump(jump);
lm.append(canvas);
setFullScreenMode(true);
g.setClip(0,0,176,208);
CreateFuel();
}
public void start(){
Thread g = new Thread(this);
g.start();
}
public void run(){
while(conti){
try{
Thread.sleep(0);}
catch (InterruptedException e){}
input();
switch (level) {
case 1:
if(spaceman.collGood(fuel)){
life++;
fuel.setVisible(false);
}
CreateSnail();
CreateElec();
CreateTank();
CreateWheel();
CreateWeapon();
checkLife();
checkWin();
render(g);
break;
case 2:
break;
case 3:
break;
case 4:
}
}
if(life==0)
GameOver();
}
public synchronized void input(){
keystate = getKeyStates();
if(keystate ==UP_PRESSED) {
if(spaceman.getState()==0)
spaceman.setState(1);
}
if(keystate ==RIGHT_PRESSED) {
spaceman.primalman_moveRight();
spaceman.collidect(bg,1);
spaceman.collJump(1);
}
if(keystate ==LEFT_PRESSED) {
spaceman.primalman_moveLeft();
spaceman.collidect(bg,2);
spaceman.collJump(2);
}
if(keystate==1024){
if(gun==false) {
gun=true;
dir=0;
distance=0;
spaceman.setFrame(7);
spaceman.setTransform(0);
weapon.setFrame(0);
weapon.setPosition(spaceman.getX()+25,spaceman.getY());
}
}
if(keystate ==512) {
if(gun==false) {
gun=true;
dir=1;
distance=0;
spaceman.setFrame(7);
spaceman.setTransform(2);
weapon.setFrame(0);
weapon.setPosition(spaceman.getX()-10,spaceman.getY());
}
}
}
public void checkLife(){
if(spaceman.getY()>210 ) {
death();
spaceman.death();
}
if(bd==0){
death();
spaceman.death();
}
if(life==0)
GameOver();
}
public void death(){
System.gc();
spaceman.setFrame(6);
spaceman.move(0,-50);
render(g);
try{
Thread.sleep(1000);}
catch (InterruptedException e){}
for(int i=10;i<100;i=i+10)
{spaceman.move(0,i);
render(g);}
try{
Thread.sleep(1000);}
catch (InterruptedException e){}
life--;
for(int i=0;i<tankNum;i++){
tank[i].live=false;
tank[i].setInit();
speed[i].live=false;
speed[i].setInit();
}
for(int i=0;i<snailNum;i++) {
snail[i].live=false;
snail[i].setVisible(true);
}
for(int i=0;i<fireNum;i++)
fire[i].live=false;
for(int i=0;i<boomNum;i++){
boom[i].live=false;
boom[i].boom_flag=true;
}
laser.setVisible(false);
laser.live=false;
bd=5;
}
public void GameOver(){
g.drawImage(screen,0,0,20);
g.setColor(255,255,255);
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE));
g.drawString("Game Over" ,40,60,20);
lm.setViewWindow(0,0,0,0);
lm.paint(g,0,0);
flushGraphics();
Stop();
setGameOverFlag(true);
}
public void CreateWeapon() {
if(gun==true && dir==0) {
weapon.move(distance,0);
if(distance%5==0)
weapon.nextFrame();
weapon.setTransform(0);
distance=distance+1;
}else if(gun==true && dir==1) {
weapon.move(-distance,0);
if(distance%5==0)
weapon.nextFrame();
weapon.setTransform(2);
distance=distance+1;
}
if(Math.abs(spaceman.getX()-weapon.getX())>=170){
gun=false;
weapon.setPosition(-40,-70);
}
}
public void CreateElec() {
for(int i=0;i<elecNum;i++) {
if(elec[i].live) {
elec[i].elec_attack();
if(elec[i].collman(spaceman)){
bd--;
}
}else{
if(Math.abs(r.nextInt()%200)<=5)
elec[i].live=true;
}
}
}
public void CreateTongs() {
for(int i=0;i<tongsNum;i++) {
if(tongs[i].live==true) {
switch (r.nextInt()%20) {
case 0:
tongs[0].tongs_attack();
break;
case 1:
tongs[1].tongs_attack();
break;
case 2:
tongs[2].tongs_attack();
break;
}
if(tongs[i].collman(spaceman)) {
bd--;
}
}else if(i<1){
tongs[0].setPosition(252,80);
tongs[1].setPosition(960,60);
tongs[2].setPosition(1440,80);
tongs[0].live=true;
tongs[1].live=true;
tongs[2].live=true;
tongs[0].setinit(tongs[0].getX(),tongs[0].getY());
tongs[1].setinit(tongs[1].getX(),tongs[1].getY());
tongs[2].setinit(tongs[2].getX(),tongs[2].getY());
}
}
}
public void CreateTank(){
for(i=0;i<tankNum;i++) {
if(tank[i].live==true ) {
tank[i].tank_attack(bg);
if(tank[i].collman(spaceman)){
bd--;
}else if(tank[i].collGood(weapon)){
tank[i].setVisible(false);
weapon.setPosition(-250,-70);
gun=false;
score=score+500;
}
}else if(i<1){
switch (level) {
case 1:
tank[0].setPosition(485,135);
tank[1].setPosition(860,135);
tank[2].setPosition(1365,135);
break;
case 2:
tank[0].setPosition(530,115);
tank[1].setPosition(856,115);
tank[2].setPosition(1150,115);
break;
case 3:
tank[0].setPosition(295,115);
tank[1].setPosition(970,135);
tank[2].setPosition(1250,115);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -