📄 starcanvas.java
字号:
/*
* 创建日期 2005-11-10
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package demo;
import java.util.Random;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
final class StarCanvas extends Canvas
implements Runnable,CommandListener {
//僔僗僥儉
private static Random rand =new Random();//棎悢
private static char scene='R'; //僔乕儞
private static int score; //僗僐傾
//彈偺巕
private static Image imgGirl; //僀儊乕僕
private static int girlY=70; //Y嵗昗
private static int girlMagic;//杺朄
//惎
private static Image imgStar; //僀儊乕僕
private static int[] starX=new int[8];//X嵗昗
private static int[] starY=new int[8];//Y嵗昗
private static int[] starV=new int[8];//懍偝
//僟僽儖僶僢僼傽儕儞僌
private static Image imgOff;//僆僼僀儊乕僕
private static Graphics graOff;//僆僼僌儔僼傿僋僗
//幚峴
public void run() {
try {
//僟僽儖僶僢僼傽儕儞僌
imgOff=Image.createImage(120,120);
graOff=imgOff.getGraphics();
//僀儊乕僕偺撉傒崬傒
imgGirl=Image.createImage("/girl.png");
imgStar=Image.createImage("/star.png");
//僐儅儞僪
addCommand(new Command("START",Command.SCREEN,0));
setCommandListener(this);
scene='T';
//儊僀儞儖乕僾
while (true) {
repaint();
Thread.sleep(100);
}
} catch (Exception e) {}
}
//昤夋
public synchronized void paint(Graphics g) {
int i;
if (scene!='R') {
//攚宨偺昤夋
graOff.setColor((255<<8)+255);
graOff.fillRect(0,0,120,90);
graOff.setColor(255<<8);
graOff.fillRect(0,90,120,30);
//僾儗僀帪偺張棟
if (scene=='P') {
int idx=-1;
for (i=0;i<8;i++) {
//惎偺堏摦
if (starV[i]>0) {
starX[i]-=starV[i];
if (starX[i]<25) {
scene='M';
} else if (girlY==starY[i] &&
(idx<0 || starX[i]<starX[idx])) {
idx=i;
}
}
//惎偺惗惉
else if ((rand.nextInt()>>>1)%50==0) {
starX[i]=140;
starY[i]=30+(rand.nextInt()>>>1)%3*20;
starV[i]=3+(rand.nextInt()>>>1)%3*2;
}
}
//杺朄
if (girlMagic>0) {
girlMagic+=30;
graOff.setColor((255<<16)+(255<<8));
if (idx>=0 && girlMagic>starX[idx]-20) {
graOff.fillRect(20,girlY-2,starX[idx]-20,4);
starV[idx]=0;
girlMagic=0;
score++;
} else if (girlMagic<100) {
graOff.fillRect(20,girlY-2,girlMagic,4);
} else {
girlMagic=0;
}
}
}
//僉儍儔偺昤夋
graOff.drawImage(imgGirl,20-13,girlY-12,Graphics.LEFT|Graphics.TOP);
for (i=0;i<8;i++) {
if (starV[i]>0) {
graOff.drawImage(imgStar,
starX[i]-9,starY[i]-8,Graphics.LEFT|Graphics.TOP);
}
}
//暥帤楍
graOff.setColor(255);
graOff.drawString("SCORE "+score,2,2,Graphics.LEFT|Graphics.TOP);
if (scene=='T' || scene=='M') {
String str="僗僞乕僩儖僕儍乕";
if (scene=='M') str="儈僗!";
graOff.setColor((255<<16)+(150<<8)+150);
graOff.drawString(str,61,25,Graphics.HCENTER|Graphics.TOP);
graOff.drawString(str,59,25,Graphics.HCENTER|Graphics.TOP);
graOff.drawString(str,60,26,Graphics.HCENTER|Graphics.TOP);
graOff.drawString(str,60,24,Graphics.HCENTER|Graphics.TOP);
graOff.setColor(255<<16);
graOff.drawString(str,60,25,Graphics.HCENTER|Graphics.TOP);
}
//僆僼僀儊乕僕傪昤夋
g.drawImage(imgOff,0,0,Graphics.LEFT|Graphics.TOP);
}
}
//僉乕僾儗僗僀儀儞僩
protected synchronized void keyPressed(int keyCode) {
if (scene=='P' && girlMagic==0) {
if (keyCode==KEY_NUM2) {
girlY=30;
} else if (keyCode==KEY_NUM5) {
girlY=50;
} else if (keyCode==KEY_NUM8) {
girlY=70;
}
girlMagic=1;
}
}
//僐儅儞僪僀儀儞僩
public synchronized void commandAction(Command c,Displayable s) {
if (scene!='P') {
score =0;
girlY =70;
girlMagic=0;
for (int i=0;i<8;i++) starV[i]=0;
scene='P';
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -