📄 numbercanvasrun.java
字号:
import javax.microedition.lcdui.*;
import java.util.*;
public class NumberCanvasRun extends Canvas implements Runnable {
Image bg0; // 背景,像素大小240*291
Image bg1; // 前景,像素大小240*291
Image over; // gameOver,像素大小240*291
Image mm; // 养眼美眉,像素大小1440*291
Image[] numberig = new Image[10]; // 写在落叶上的数字
Graphics g;
int i = 0, n, xn, yn, xmm;
static Random ran = new Random();
boolean b;
//正确按键计数器,连续一百次按对键,游戏进入game over界面
int k = 0;
public NumberCanvasRun() {
try {
bg0 = Image.createImage("/bg0.png");
bg1 = Image.createImage("/bg1.png");
mm = Image.createImage("/mm.png");
over = Image.createImage("/over.png");
for (i = 0; i < 10; i++) {
numberig[i] = Image.createImage("/number" + i + ".png");
}
Thread td = new Thread(this);
td.start();
} catch (Exception e) {
}
}
protected void paint(Graphics g) {
if (b) {
g.drawImage(over, 0, 0, Graphics.LEFT | Graphics.TOP);
} else {
g.drawImage(bg0, 0, 0, Graphics.LEFT | Graphics.TOP);
g.drawImage(mm, xmm, 0, Graphics.LEFT | Graphics.TOP);
g.drawImage(bg1, 0, 0, Graphics.LEFT | Graphics.TOP);
g.drawImage(numberig[n], xn, yn, Graphics.LEFT | Graphics.TOP);
}
}
public void run() {
try {
n = ran.nextInt(10);
xn = ran.nextInt(230) + 5;
while (true) {
// Thread.sleep(100); // 非精确延时
repaint();
long start = System.currentTimeMillis();
// 数字移动轨迹限制
yn += 10;
if (yn >= 291) {
yn = 0;
b = true;
}
int lable = ran.nextInt(4);
switch (lable) {
case 0:
if (xn <= 8) {
lable = 2;
}
if (xn >= 232) {
lable = 3;
}
xn += 8;
break;
case 1:
if (xn <= 5) {
xn += 15;
lable = 2;
}
if (xn >= 230) {
xn -= 15;
lable = 3;
}
xn -= 8;
break;
case 2:
if (xn >= 230) {
xn -= 15;
lable = 3;
}
xn += 12;
break;
case 3:
if (xn <= 5) {
xn += 15;
lable = 2;
}
xn -= 12;
break;
}
// 中层图片移动控制
xmm -= 4;
if (xmm <= -1200) {
xmm = 0;
}
repaint();
long end = System.currentTimeMillis();
if (end - start < 100) {
Thread.sleep(100 - (end - start));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void keyPressed(int keyCode) {
if (keyCode - 48 != n || k == 99) {
b = true;
k = 0;
} else {
k++;
yn = 0;
n = ran.nextInt(10);
}
if (keyCode == -6) {
b = false;
yn = 0;
}
if (keyCode == -7) {
NumberMidlet.quitApp();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -