📄 movegamecanvas.java
字号:
/***************************************************
* 程序文件名称: MoveGameCanvas.java
* 功能:控制物体移动
***************************************************/
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class MoveGameCanvas extends GameCanvas implements Runnable {
// Game Loop runs when isPlay is true
private boolean isPlay;
// 定义休眠常数
private long delay;
// 设置颜色块的坐标
private int currentX, currentY;
// 设置屏幕宽度
private int width;
// 设置屏幕高度
private int height;
// 初始化
public MoveGameCanvas() {
super(true);
width = getWidth();
height = getHeight();
currentX = width / 2;
currentY = height / 2;
delay = 20;
}
// 启动线程
public void start() {
isPlay = true;
Thread t = new Thread(this);
t.start();
}
public void stop() {
isPlay = false;
}
// 游戏线程
public void run() {
Graphics g = getGraphics();
while (isPlay == true) {
//键盘事件
input();
//绘制图形
drawScreen(g);
try { Thread.sleep(delay);}
catch (InterruptedException ie) { }
}
}
// 用户键盘按钮事件
private void input() {
int keyStates = getKeyStates();
// Left
if ((keyStates & LEFT_PRESSED) != 0)
currentX = Math.max(0, currentX - 1);
// Right
if ((keyStates & RIGHT_PRESSED) != 0)
if (currentX + 5 < width)
currentX = Math.min(width, currentX + 1);
// Up
if ((keyStates & UP_PRESSED) != 0)
currentY = Math.max(0, currentY - 1);
// Down
if ((keyStates & DOWN_PRESSED) != 0)
if (currentY + 10 < height)
currentY = Math.min(height, currentY + 1);
}
// 绘制图形
private void drawScreen(Graphics g) {
//设置背景色为淡蓝色
g.setColor(0,255,255);
g.fillRect(0,0,getWidth(),getHeight());
//设置当前坐标系统
g.translate(currentX-g.getTranslateX(),currentY-g.getTranslateY());
g.setColor(0x00000000);
//在当前坐标系统中绘制
g.fillRect(2,2,22,22);
//设置移动物体的颜色(红色)
g.setColor(0x00ff0000);
g.fillRect(0,0,20,20);
//刷新画面
flushGraphics();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -