📄 pigcanvas.java
字号:
import javax.microedition.lcdui.*;
import java.io.IOException;
public class PigCanvas extends Canvas implements Runnable {
private static PigCanvas pigCanvas;
private PigMidlet pigMidlet;
public final static int SCRW = 176;
public final static int SCRH = 166;
public final static int playing = 1;
public final static int chooseGoods = 2;
public final static int gameOver = 3;
private int scrX, scrY;
private int currentPosX, currentPosY, moveX;
private Image image1, image2;
// private int moveStep;
private int gameState;
private int lastDraw, energyX, lastDrawGas, gasEnergyX;
private int goodsChooseX, goodsChooseY;
private int goods_bao, floorCount;
private boolean isSlow;
private long slowTime;
private long personCount;
private int[][] storageGoods;
private boolean running;
private PigWorld world;
private FlyPig flyPig;
private SpriteClip spriteGoods, spriteClip2;
public PigCanvas(PigMidlet pMidlet) {
pigCanvas = this;
pigMidlet = pMidlet;
try {
image1 = Image.createImage("/images/zhuangtailan.png");
image2 = Image.createImage("/images/daoju.png");
// image10 = Image.createImage("/images/boss.png");
} catch (IOException e) {
e.printStackTrace();
}
running = true;
scrX = (this.getWidth() - SCRW) / 2;
scrY = (this.getHeight() - SCRH) / 2;
// scrY = 1;
currentPosX = 0;
currentPosY = world.MAP_H * world.TILE_H - SCRH;
moveX = world.MAP_W * world.TILE_H - SCRW;
// moveStep = 3;
world = new PigWorld(scrX, scrY);
world.setView(currentPosX, currentPosY);
flyPig = new FlyPig(world);
flyPig.init(0, world.viewX + SCRW / 2, world.viewY + SCRH - 40,
Actor.UP);
world.setPlayer(flyPig);
spriteGoods = new SpriteClip();
spriteGoods.init(image2, 8);
spriteGoods.setArray(0, 20, 20, 18, 0, 0, 0); // daoju_smallyao
spriteGoods.setArray(1, 20, 20, 38, 0, 0, 0); //daoju_middleyao
spriteGoods.setArray(2, 20, 20, 58, 0, 0, 0); //daoju_bigyao
spriteGoods.setArray(3, 20, 20, 78, 0, 0, 0); // daoju_mianju
spriteGoods.setArray(4, 20, 20, 98, 0, 0, 0); // daoju_lengjing
spriteGoods.setArray(5, 20, 20, 138, 0, 0, 0); // daoju_key
spriteGoods.setArray(6, 20, 20, 158, 0, 0, 0); // daoju_miehuo
spriteGoods.setArray(7, 15, 20, 178, 0, 0, 0); //daoju_qingxin
// spriteClip2 = new SpriteClip();
energyX = flyPig.energyMax / 49;
gasEnergyX = flyPig.gasEnergyMax / 51;
isSlow = false;
storageGoods = new int[16][8];
goods_bao = 5;
gameState = playing;
Thread t = new Thread(this);
t.start();
}
protected void paint(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
// g.setClip(178,0,15,20);
// g.drawImage(image2, 0,0, Actor.G_TOP_LEFT);
renderWorld(g);
// spriteGoods.drawClip(g,0,0);
}
public void renderWorld(Graphics g) {
world.render(g);
if (SCRH < getHeight()) {
g.setColor(255, 255, 255);
g.setClip(scrX, scrY - 40, SCRW, 40);
g.fillRect(scrX, scrY - 40, SCRW, 40);
g.setClip(scrX, scrY + SCRH, SCRW, 40);
g.fillRect(scrX, scrY + SCRH + 1, SCRW, 40);
}
if (SCRW < getWidth()) {
g.setColor(255, 255, 255);
g.setClip(scrX - 22, scrY - 22, 22, SCRH + 44);
g.fillRect(scrX - 22, scrY - 22, 22, SCRH + 44);
g.setClip(scrX + SCRW + 1, scrY - 22, 22, SCRH + 44);
g.fillRect(scrX + SCRW + 1, scrY - 22, 22, SCRH + 44);
}
g.setColor(0, 0, 0);
g.setClip(scrX, scrY, 20, 20);
g.drawString("" + personCount, scrX + 3, scrY + 3, Actor.G_TOP_LEFT);
g.setClip(scrX, scrY + SCRH + 1, SCRW, 28);
g.setColor(255, 0, 0);
int drawEnergy = flyPig.energy / energyX;
if (lastDraw != drawEnergy) {
lastDraw = drawEnergy;
}
g.fillRect(scrX + 74, scrY + SCRH + 9, lastDraw, 7);
g.setColor(0, 100, 255);
drawEnergy = flyPig.gasEnergy / gasEnergyX;
if (lastDrawGas != drawEnergy) {
lastDrawGas = drawEnergy;
}
g.fillRect(scrX + 71, scrY + SCRH + 19, lastDrawGas, 7);
g.drawImage(image1, scrX, scrY + SCRH + 1, Actor.G_TOP_LEFT);
g.setColor(0, 255, 0);
g.drawString("" + goods_bao, scrX + 150, scrY + SCRH + 2,
Actor.G_TOP_LEFT);
g.setColor(0, 0, 255);
g.drawString("" + floorCount, scrX + 20, scrY + SCRH + 8,
Actor.G_TOP_LEFT);
if (gameState == chooseGoods) {
int xpos = 0;
int ypos = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
int goodsType = storageGoods[i][j];
xpos = j * 20 + scrX + (SCRW - 160) / 2;
ypos = i * 20 + scrY + (SCRH - 160) / 2;
drawGoods(g, xpos, ypos);
if (goodsType != 0) {
spriteGoods.setState( goodsType - 1,200);
spriteGoods.drawClip(g, xpos, ypos);
}
}
}
}
}
public int getGameState() {
return gameState;
}
public void setGameState(int stateArg) {
gameState = stateArg;
}
public void drawGoods(Graphics g, int x, int y) {
g.setColor(0, 198, 255);
g.setClip(x, y, 161, 161);
g.fillRect(x, y, 20, 20);
g.setColor(0, 0, 0);
g.drawRect(x, y, 20, 20);
g.setColor(255, 255, 0);
g.drawRect(goodsChooseX * 20 + scrX + (SCRW - 160) / 2,
goodsChooseY * 20 + scrY + (SCRH - 160) / 2, 20, 20);
}
public void setGoods(int goods) {
boolean b = true;
for (int i = 0; i < 16; i++) {
if (b) {
for (int j = 0; j < 8; j++) {
if (storageGoods[i][j] == 0) {
storageGoods[i][j] = goods;
b = false;
break;
}
}
} else {
break;
}
}
}
public void setSortGoods() {
int sortGoods[][] = new int[16][8];
int m = 0;
int n = 0;
for (int i = 0; i < 16; i++) {
for (int j = 0; j < 8; j++) {
if (storageGoods[i][j] != 0) {
sortGoods[m][n] = storageGoods[i][j];
n++;
if (n > 7) {
n = 0;
m++;
}
if (m > 15) {
break;
}
}
}
}
for (int i = 0; i < 16; i++) {
for (int j = 0; j < 8; j++) {
if (sortGoods[i][j] != 0) {
storageGoods[i][j] = sortGoods[i][j];
} else {
storageGoods[i][j] = 0;
}
}
}
}
public boolean getIsSlow() {
return isSlow;
}
public void useGoods() {
int goodsType = storageGoods[goodsChooseY][goodsChooseX];
switch (goodsType) {
case 1:
if (flyPig.energy < flyPig.energyMax) {
flyPig.energy = flyPig.energy + 100;
storageGoods[goodsChooseY][goodsChooseX] = 0;
} else {
flyPig.energy = flyPig.energyMax;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -