⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pigcanvas.java

📁 一个关于J2ME的确游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -