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

📄 mycanvas.java~83~

📁 小鸡过马路
💻 JAVA~83~
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.media.Player;
import javax.microedition.media.Manager;
import java.io.*;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class MyCanvas extends Canvas implements CommandListener, Runnable {
    Command menu = new Command("关于...", Command.OK, 1);
    Alert info = new Alert("关于本游戏:小鸡过马路");
    Player player; //player contorel
    Player backmusic;
    Image background = null; //马路
    Image chicken; //主角  鸡
    Image chickhead; //chicken head
    Sprite[] carsprite = new Sprite[4];
    int[] carSpeedY = new int[4];
    Sprite chicksprite;
    int width, height;
    int frameDelay = 33;
    boolean gameOver = false;
    int score = 0;
    int lives = 3;
    InputStream is;
    public MyCanvas() {
        width = this.getWidth();
        height = this.getHeight();
        init();
        try {
            info.setTimeout(8000);
            String str =
                    "饥饿的小鸡想要穿过繁忙的大马路!路上杀机重重,车辆如梭,陷阱随机出现,聪明灵敏的你能不能帮助小鸡通过马路啦?GO!!!";
            str += "\n作者:魏超\n适用手机:S40  屏幕尺寸:178*208\nMIDP版本:2.0";
            info.setString(str);
            is = getClass().getResourceAsStream("/png/Squish.wav");
            player = Manager.createPlayer(is, "audio/x-wav");
            player.prefetch();
            is = getClass().getResourceAsStream("/png/Music.mid");
            backmusic = Manager.createPlayer(is, "audio/midi");
            backmusic.prefetch();
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void newGame() {
        gameOver = false;
        lives = 3;
        score = 0;
        init();
    }

    public void checkBounds(Sprite sprite, boolean wrap) {
        if (wrap) {
            if (sprite.getX() < -sprite.getWidth()) {
                sprite.setPosition(width, sprite.getY());
            } else if (sprite.getX() > width) {
                sprite.setPosition( -sprite.getWidth(), sprite.getY());
            }
            if (sprite.getY() < -sprite.getHeight()) {
                sprite.setPosition(sprite.getX(), height);
            } else if (sprite.getY() > height) {
                sprite.setPosition(sprite.getX(), -sprite.getHeight());
            }
        } else {
            if (sprite.getX() < 0) {
                sprite.setPosition(0, sprite.getY());
            } else if (sprite.getX() > width - sprite.getWidth()) {
                sprite.setPosition(width - sprite.getWidth(), sprite.getY());
            }

            if (sprite.getY() < 0) {
                sprite.setPosition(sprite.getX(), 0);

            } else if (sprite.getY() > height - sprite.getHeight()) {
                sprite.setPosition(sprite.getX(), height - sprite.getHeight());
            }
        }
    }

    public void run() {
        while (!gameOver) {
            repaint();
            update();
            try {
                Thread.sleep(frameDelay);
            } catch (Exception e) {
                System.out.println("runnable fieled");
            }
        }
    }

    public void draw(Graphics g) {
        if (!gameOver) {
            g.drawImage(background, 0, 0, Graphics.TOP | Graphics.LEFT);
            chicksprite.paint(g);
            for (int i = 0; i < 4; i++) {
                carsprite[i].paint(g);
                checkBounds(carsprite[i], true);
            }
            for (int i = lives; i > 0; i--) {
                g.drawImage(chickhead, width - i * chickhead.getWidth(),
                            width - 10,
                            20);
            }
            g.setColor(0xff0000);
            g.drawString("Score:" + score, 10, 2, 20);

        } else {
            g.setColor(0xffffff);
            g.fillRect(0, 0, width, height);
            g.setColor(0xff0000);
            g.drawString("G A M E O V E R", width / 2 - 30, height / 2, 20);
            g.drawString("You's total score:" + score, width / 2 - 35,
                         height / 2 + 10, 20);
            g.drawString("Key FIRE to new game", width / 2 - 40,
                         height / 2 + 20, 20);
        }

    }

    public void init() { //
        try {

            chickhead = Image.createImage("/png/ChickenHead.png");
            background = Image.createImage("/png/Highway.png");
            chicksprite = new Sprite(Image.createImage("/png/Chicken.png"), 22,
                                     22);
            chicksprite.setPosition(0, 77);
            carsprite[0] = new Sprite(Image.createImage("/png/Car1.png"));
            carsprite[0].setPosition(27, 0);
            carSpeedY[0] = 2;

            carsprite[1] = new Sprite(Image.createImage("/png/Car2.png"));
            carsprite[1].setPosition(67, 0);
            carSpeedY[1] = 1;

            carsprite[2] = new Sprite(Image.createImage("/png/Car3.png"));
            carsprite[2].setPosition(93, 67);
            carSpeedY[2] = -3;

            carsprite[3] = new Sprite(Image.createImage("/png/Car4.png"));
            carsprite[3].setPosition(128, 64);
            carSpeedY[3] = -4;

        } catch (Exception e) {
            System.out.println("feiled image load");
        }

        Thread thread = new Thread(this);
        thread.start();
        try{

        }catch(Exception e){
            System.out.println("background music play field!!");
        }
    }

    public void update() {
        if (lives == 0) {
            gameOver = true;
        }
        if (chicksprite.getX() > 153) {
            score += 25;
            chicksprite.setPosition(0, 77);
        }
        for (int i = 0; i < 4; i++) {
            carsprite[i].move(0, carSpeedY[i]);
            if (chicksprite.collidesWith(carsprite[i], true)) {
                try {
                    player.start();
                } catch (Exception e) {
                    System.out.println("play music fieled");
                }

                chicksprite.setPosition(0, 77);
                lives--;
                break;

            }
        }
    }

    public void keyPressed(int key) {
        switch (this.getGameAction(key)) {
        case UP:
            chicksprite.move(0, -6);
            break;
        case DOWN:
            chicksprite.move(0, +6);
            break;
        case LEFT:
            chicksprite.nextFrame();
            chicksprite.move( -6, 0);
            break;
        case RIGHT:
            chicksprite.nextFrame();
            chicksprite.move( +6, 0);
            break;
        case FIRE:
            newGame();
            break;

        }
        checkBounds(chicksprite, false);
        repaint();
    }

    private void jbInit() throws Exception {
        // Set up this Displayable to listen to command events
        setCommandListener(this);
        // add the Exit command
        addCommand(new Command("退出", Command.EXIT, 1));
    }

    public void commandAction(Command command, Displayable displayable) {
        /** @todo Add command handling code */
        if (command.getCommandType() == Command.EXIT) {
            // stop the MIDlet
            Main.quitApp();
        }
        if (command == menu) {
            Display.getDisplay(Main.instance).setCurrent(info);
        }
    }

    protected void paint(Graphics g) {
        draw(g);
        addCommand(menu);
        setCommandListener(this);
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -