📄 grass_canvas.java
字号:
package ch07;
import java.util.Random;
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class Grass_Canvas
extends GameCanvas
implements CommandListener {
//存储构成背景的各图像帧
Image img;
//代表背景
TiledLayer tlg;
//屏幕宽度
int win_width = getWidth();
//屏幕高度
int win_height = getHeight();
//每帧草图像的宽高
int img_grass_size = 16;
//背景行、列数
int backcols, backrows;
//绘制上下文
Graphics g = getGraphics();
//产生随机数
Random r = new Random();
//主MIDlet类实例
Grass_MIDlet gm;
/*
3.构造器
*/
public Grass_Canvas(Grass_MIDlet gm) {
super(true);
this.gm = gm;
Command exitCommand = new Command("退出", Command.EXIT, 0);
addCommand(exitCommand);
setCommandListener(this);
try {
img = Image.createImage("/icons/background/field0.png");
}
catch (IOException e) {
System.out.println(e.getMessage());
}
// 计算横向需要多少图片
backcols = win_width / img_grass_size + 1;
// 计算纵向需要多少图片
backrows = win_height / img_grass_size + 1;
//铺草地
tlg = new TiledLayer(backcols, backrows, img, img_grass_size,
img_grass_size);
for (int i = 0; i < backcols * backrows; i++) {
int n = (r.nextInt() >>> 1) % 5 + 1;
tlg.setCell(i % backcols, i / backcols, n);
}
//铺栅栏
//铺外上栅栏
for (int i = 0; i < backcols; i++) {
tlg.setCell(i, 0, 6);
}
//铺外下栅栏
for (int i = 0; i < backcols; i++) {
tlg.setCell(i, backrows - 2, 6);
tlg.setCell(i, backrows - 1, 6);
}
//铺外左栅栏
for (int i = 0; i < backrows; i++) {
tlg.setCell(0, i, 6);
}
//铺外右栅栏
for (int i = 0; i < backrows; i++) {
tlg.setCell(backcols - 2, i, 6);
tlg.setCell(backcols - 1, i, 6);
}
tlg.paint(g);
}
/*
4.响应按钮事件
*/
public void commandAction(Command c, Displayable s) {
if (c.getCommandType() == Command.EXIT) {
gm.quitApp();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -