📄 mwariocanvas.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class mWarioCanvas extends GameCanvas implements Runnable,CommandListener{
private kidSprite boy,girl;
private stickSprite LStick,RStick;
private woodSprite wood1,wood2,wood3;
private stoneSprite stone1,stone2,stone3,stone4,stone5;
private LayerManager lManager;
private TiledLayer background;
private Image sbStar,srStar,sgStar,lbStar,lrStar,lgStar;
private int bScore,gScore;
private int disWidth,disHeight;
private int waitTick;
private int skipFrame;
private boolean isCyc;
private static int frameNum;
private final static Command conti=new Command("继续",Command.OK,1);
private Graphics g;
private Font myFont;
public mWarioCanvas(){
super(true);
disWidth=getWidth();
disHeight=getHeight();
lManager=new LayerManager();
g=getGraphics();
myFont=Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_LARGE);
bScore=0;
gScore=0;
frameNum=0;
waitTick=0;
skipFrame=0;
try{
wood1=new woodSprite(disWidth,disHeight,1);
wood2=new woodSprite(disWidth,disHeight,2);
wood3=new woodSprite(disWidth,disHeight,3);
stone1=new stoneSprite(disWidth,disHeight,1);
stone2=new stoneSprite(disWidth,disHeight,2);
stone3=new stoneSprite(disWidth,disHeight,3);
stone4=new stoneSprite(disWidth,disHeight,4);
stone5=new stoneSprite(disWidth,disHeight,5);
girl=new kidSprite(disWidth,disHeight,1);
boy=new kidSprite(disWidth,disHeight,2);
LStick=new stickSprite(disWidth,disHeight,true);
RStick=new stickSprite(disWidth,disHeight,false);
}
catch(Exception e){
System.out.println("Can not create Sprite"[img]/images/wink.gif[/img];
}
lManager.append(wood1);
lManager.append(wood2);
lManager.append(wood3);
lManager.append(stone1);
lManager.append(stone2);
lManager.append(stone3);
lManager.append(stone4);
lManager.append(girl);
lManager.append(boy);
lManager.append(LStick);
lManager.append(RStick);
try{
sbStar=Image.createImage("/sbStar.png"[img]/images/wink.gif[/img];
lbStar=Image.createImage("/lbStar.png"[img]/images/wink.gif[/img];
srStar=Image.createImage("/srStar.png"[img]/images/wink.gif[/img];
lrStar=Image.createImage("/lrStar.png"[img]/images/wink.gif[/img];
sgStar=Image.createImage("/sgStar.png"[img]/images/wink.gif[/img];
lgStar=Image.createImage("/lgStar.png"[img]/images/wink.gif[/img];
}
catch(Exception e){
System.out.println("Can not create Sprite"[img]/images/wink.gif[/img];
}
}
public void setBackground(){
g.setColor(50,192,00);
g.fillRect(0,disHeight-20,disWidth,20);
int column=disHeight/20;
if(gScore>bScore){
g.setColor(50,00,00);
for(int i=1;i<=column;i++)
g.fillRect(0,disHeight-i*40,disWidth,20);
g.setColor(90,40,40);
for(int i=1;i<=column;i++)
g.fillRect(0,disHeight-20-i*40,disWidth,20);
}
else if(gScore<bScore){
g.setColor(00,00,50);
for(int i=1;i<=column;i++)
g.fillRect(0,disHeight-i*40,disWidth,20);
g.setColor(40,40,90);
for(int i=1;i<=column;i++)
g.fillRect(0,disHeight-20-i*40,disWidth,20);
}
else{
g.setColor(00,00,00);
for(int i=1;i<=column;i++)
g.fillRect(0,disHeight-i*40,disWidth,20);
g.setColor(70,70,70);
for(int i=1;i<=column;i++)
g.fillRect(0,disHeight-20-i*40,disWidth,20);
}
}
public void paintStar(){
g.drawImage(sgStar,disWidth/6,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
g.drawImage(sgStar,(disWidth/6)*2,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
g.drawImage(lgStar,(disWidth/6)*3,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
g.drawImage(sgStar,(disWidth/6)*4,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
g.drawImage(sgStar,(disWidth/6)*5,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
if(gScore>=1)
g.drawImage(srStar,disWidth/6,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
if(gScore>=2)
g.drawImage(srStar,(disWidth/6)*2,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
if(gScore>=3)
g.drawImage(lrStar,(disWidth/6)*3,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
if(bScore>=1)
g.drawImage(sbStar,(disWidth/6)*5,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
if(bScore>=2)
g.drawImage(sbStar,(disWidth/6)*4,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
if(bScore>=3)
g.drawImage(lbStar,(disWidth/6)*3,disHeight-sgStar.getHeight()+4,Graphics.HCENTER|Graphics.VCENTER);
}
public void startGame(){
Thread t=new Thread(this);
t.start();
}
public void run(){
while(true){
bScore=0;
gScore=0;
isCyc=true;
while(bScore<3&&gScore<3){
wood1.reset();
wood2.reset();
wood3.reset();
stone1.reset();
stone2.reset();
stone3.reset();
stone4.reset();
stone5.reset();
girl.reset();
boy.reset();
LStick.reset();
RStick.reset();
setBackground();
paintStar();
wood1.paint(g);
wood2.paint(g);
wood3.paint(g);
stone1.paint(g);
stone2.paint(g);
stone3.paint(g);
stone4.paint(g);
stone5.paint(g);
LStick.paint(g);
RStick.paint(g);
girl.paint(g);
boy.paint(g);
skipFrame=0;
frameNum=0;
waitTick=0;
g.setColor(255,255,255);
g.setFont(myFont);
g.drawString("准 备!",(disWidth-myFont.stringWidth("准 备!"[img]/images/wink.gif[/img])/2,disHeight-160,Graphics.TOP|Graphics.LEFT);
flushGraphics();
synchronized(this){
try{
wait(1000);
}
catch(Exception e){
System.out.println("wait error"[img]/images/wink.gif[/img];
}
}
while(true){
setBackground();
paintStar();
int KeyState=getKeyStates();
if((KeyState&LEFT_PRESSED)!=0)
LStick.poke();
if((KeyState&RIGHT_PRESSED)!=0)
RStick.poke();
wood1.paint(g);
wood2.paint(g);
wood3.paint(g);
stone1.paint(g);
stone2.paint(g);
stone3.paint(g);
stone4.paint(g);
stone5.paint(g);
LStick.paint(g);
LStick.changeSpeed();
LStick.move();
LStick.stoneCollides(stone1);
LStick.stoneCollides(stone2);
LStick.stoneCollides(stone3);
LStick.stoneCollides(stone4);
LStick.woodCollides(wood1);
LStick.woodCollides(wood2);
LStick.woodCollides(wood3);
RStick.paint(g);
RStick.move();
RStick.stoneCollides(stone1);
RStick.stoneCollides(stone2);
RStick.stoneCollides(stone3);
RStick.stoneCollides(stone4);
RStick.woodCollides(wood1);
RStick.woodCollides(wood2);
RStick.woodCollides(wood3);
girl.paint(g);
boy.paint(g);
if(skipFrame==2){
skipFrame=0;
girl.nextFrame();
boy.nextFrame();
}
skipFrame++;
flushGraphics();
synchronized(this){
try{
wait(50);
}
catch(Exception e){
System.out.println("wait error"[img]/images/wink.gif[/img];
}
}
if(wood1.isSoar(stone1)){
LStick.setVisible(false);
RStick.setVisible(false);
if(wood1.isLeftWin()){
gScore++;
girl.winPose();
boy.losePose();
}
else{
bScore++;
boy.winPose();
girl.losePose();
}
break;
}
if(wood2.isSoar(stone2)){
LStick.setVisible(false);
RStick.setVisible(false);
if(wood2.isLeftWin()){
gScore++;
girl.winPose();
boy.losePose();
}
else{
bScore++;
boy.winPose();
girl.losePose();
}
break;
}
if(wood3.isSoar(stone3)){
LStick.setVisible(false);
RStick.setVisible(false);
if(wood3.isLeftWin()){
gScore++;
girl.winPose();
boy.losePose();
}
else{
bScore++;
boy.winPose();
girl.losePose();
}
break;
}
}
while(true){
setBackground();
paintStar();
girl.paint(g);
boy.paint(g);
wood1.paint(g);
wood2.paint(g);
wood3.paint(g);
stone1.paint(g);
stone2.paint(g);
stone3.paint(g);
stone4.paint(g);
stone5.paint(g);
LStick.paint(g);
RStick.paint(g);
if(frameNum<=16)
frameNum++;
if(wood1.isSoar(stone1)){
if(!wood1.fallDown()){
if(waitTick==60)
break;
waitTick++;
}
if(wood1.isLeftWin()){
g.setColor(255,255,255);
g.setFont(myFont);
g.drawString("你赢了!",disWidth/3-myFont.stringWidth("你赢了!"[img]/images/wink.gif[/img],disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
g.drawString("你输了!",disWidth*2/3,disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
boy.flatten(wood1);
if(skipFrame==6){
skipFrame=0;
girl.nextFrame();
}
skipFrame++;
}
else{
g.setColor(255,255,255);
g.setFont(myFont);
g.drawString("你输了!",disWidth/3-myFont.stringWidth("你输了!"[img]/images/wink.gif[/img],disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
g.drawString("你赢了!",disWidth*2/3,disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
girl.flatten(wood1);
if(skipFrame==6){
skipFrame=0;
boy.nextFrame();
}
skipFrame++;
}
}
if(wood2.isSoar(stone2)){
if(!wood2.fallDown()){
if(waitTick==60)
break;
waitTick++;
}
if(wood2.isLeftWin()){
g.setColor(255,255,255);
g.setFont(myFont);
g.drawString("你赢了!",disWidth/3-myFont.stringWidth("你赢了!"[img]/images/wink.gif[/img],disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
g.drawString("你输了!",disWidth*2/3,disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
boy.flatten(wood2);
if(skipFrame==6){
skipFrame=0;
girl.nextFrame();
}
skipFrame++;
}
else{
g.setColor(255,255,255);
g.setFont(myFont);
g.drawString("你输了!",disWidth/3-myFont.stringWidth("你输了!"[img]/images/wink.gif[/img],disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
g.drawString("你赢了!",disWidth*2/3,disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
girl.flatten(wood2);
if(skipFrame==6){
skipFrame=0;
boy.nextFrame();
}
skipFrame++;
}
}
if(wood3.isSoar(stone3)){
if(!wood3.fallDown()){
if(waitTick==60)
break;
waitTick++;
}
if(wood3.isLeftWin()){
g.setColor(255,255,255);
g.setFont(myFont);
g.drawString("你赢了!",disWidth/3-myFont.stringWidth("你赢了!"[img]/images/wink.gif[/img],disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
g.drawString("你输了!",disWidth*2/3,disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
boy.flatten(wood3);
if(skipFrame==6){
skipFrame=0;
girl.nextFrame();
}
skipFrame++;
}
else{
g.setColor(255,255,255);
g.setFont(myFont);
g.drawString("你输了!",disWidth/3-myFont.stringWidth("你输了!"[img]/images/wink.gif[/img],disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
g.drawString("你赢了!",disWidth*2/3,disHeight-180+frameNum*2,Graphics.TOP|Graphics.LEFT);
girl.flatten(wood3);
if(skipFrame==6){
skipFrame=0;
boy.nextFrame();
}
skipFrame++;
}
}
flushGraphics();
synchronized(this){
try{
wait(25);
}
catch(Exception e){
System.out.println("wait error"[img]/images/wink.gif[/img];
}
}
}
}
while(isCyc==true){
addCommand(conti);
setCommandListener(this);
}
removeCommand(conti);
}
}
public void commandAction(Command c,Displayable s){
if(c==conti){
isCyc=false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -