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

📄 starcanvas.java

📁 一款飞行中打星星的游戏
💻 JAVA
字号:
/*
 * 创建日期 2005-11-10
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
package demo;

import java.util.Random;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/**
 * @author Administrator
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
final class StarCanvas extends Canvas
implements Runnable,CommandListener {
//僔僗僥儉
private static Random rand =new Random();//棎悢
private static char   scene='R';         //僔乕儞
private static int    score;             //僗僐傾

//彈偺巕
private static Image imgGirl;  //僀儊乕僕
private static int   girlY=70; //Y嵗昗
private static int   girlMagic;//杺朄

//惎
private static Image imgStar;         //僀儊乕僕
private static int[] starX=new int[8];//X嵗昗
private static int[] starY=new int[8];//Y嵗昗
private static int[] starV=new int[8];//懍偝

//僟僽儖僶僢僼傽儕儞僌
private static Image    imgOff;//僆僼僀儊乕僕
private static Graphics graOff;//僆僼僌儔僼傿僋僗

//幚峴
public void run() {
    try {
        //僟僽儖僶僢僼傽儕儞僌
        imgOff=Image.createImage(120,120);
        graOff=imgOff.getGraphics();

        //僀儊乕僕偺撉傒崬傒
        imgGirl=Image.createImage("/girl.png");
        imgStar=Image.createImage("/star.png");

        //僐儅儞僪
        addCommand(new Command("START",Command.SCREEN,0));
        setCommandListener(this);
        scene='T';

        //儊僀儞儖乕僾
        while (true) {
            repaint();
            Thread.sleep(100);
        }
    } catch (Exception e) {}
}

//昤夋
public synchronized void paint(Graphics g) {
    int i;
    if (scene!='R') {
        //攚宨偺昤夋
        graOff.setColor((255<<8)+255);
        graOff.fillRect(0,0,120,90);
        graOff.setColor(255<<8);
        graOff.fillRect(0,90,120,30);

        //僾儗僀帪偺張棟
        if (scene=='P') {
            int idx=-1;
            for (i=0;i<8;i++) {
                //惎偺堏摦
                if (starV[i]>0) {
                    starX[i]-=starV[i];
                    if (starX[i]<25) {
                        scene='M';
                    } else if (girlY==starY[i] &&
                        (idx<0 || starX[i]<starX[idx])) {
                        idx=i;
                    }
                }
                //惎偺惗惉
                else if ((rand.nextInt()>>>1)%50==0) {
                    starX[i]=140;
                    starY[i]=30+(rand.nextInt()>>>1)%3*20;
                    starV[i]=3+(rand.nextInt()>>>1)%3*2;
                }
            }

            //杺朄
            if (girlMagic>0) {
                girlMagic+=30;
                graOff.setColor((255<<16)+(255<<8));
                if (idx>=0 && girlMagic>starX[idx]-20) {
                    graOff.fillRect(20,girlY-2,starX[idx]-20,4);
                    starV[idx]=0;
                    girlMagic=0;
                    score++;
                } else if (girlMagic<100) {
                    graOff.fillRect(20,girlY-2,girlMagic,4);
                } else {
                    girlMagic=0;
                }
             }
        }

        //僉儍儔偺昤夋
        graOff.drawImage(imgGirl,20-13,girlY-12,Graphics.LEFT|Graphics.TOP);
        for (i=0;i<8;i++) {
            if (starV[i]>0) {
                graOff.drawImage(imgStar,
                    starX[i]-9,starY[i]-8,Graphics.LEFT|Graphics.TOP);
            }
        }

        //暥帤楍
        graOff.setColor(255);
        graOff.drawString("SCORE "+score,2,2,Graphics.LEFT|Graphics.TOP);
        if (scene=='T' || scene=='M') {
            String str="僗僞乕僩儖僕儍乕";
            if (scene=='M') str="儈僗!";
            graOff.setColor((255<<16)+(150<<8)+150);
            graOff.drawString(str,61,25,Graphics.HCENTER|Graphics.TOP);
            graOff.drawString(str,59,25,Graphics.HCENTER|Graphics.TOP);
            graOff.drawString(str,60,26,Graphics.HCENTER|Graphics.TOP);
            graOff.drawString(str,60,24,Graphics.HCENTER|Graphics.TOP);
            graOff.setColor(255<<16);
            graOff.drawString(str,60,25,Graphics.HCENTER|Graphics.TOP);
        }

        //僆僼僀儊乕僕傪昤夋
        g.drawImage(imgOff,0,0,Graphics.LEFT|Graphics.TOP);
    }
}

//僉乕僾儗僗僀儀儞僩
protected synchronized void keyPressed(int keyCode) {
    if (scene=='P' && girlMagic==0) {
        if (keyCode==KEY_NUM2) {
            girlY=30;
        } else if (keyCode==KEY_NUM5) {
            girlY=50;
        } else if (keyCode==KEY_NUM8) {
            girlY=70;
        }
        girlMagic=1;
    }
}

//僐儅儞僪僀儀儞僩
public synchronized void commandAction(Command c,Displayable s) {
    if (scene!='P') {
        score    =0;
        girlY    =70;
        girlMagic=0;
        for (int i=0;i<8;i++) starV[i]=0;
        scene='P';
    }
}
}

⌨️ 快捷键说明

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