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

📄 rhythm_room.java

📁 j2me音樂考反應源代碼,適合新手遊戲開發者看
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
import java.util.*;

public class rhythm_room extends MIDlet implements CommandListener {
    private Display display;
    private TempleteCanvas canvas;
    private int state = 0;//系统状态
    private Timer timer;
    private ClockTimerTask timerTask;
    private long time1, time2, time3;
    private int flag, enable, start1;
    private long t, interval;
    private int counter;
    private int startNum;
    private RecordStore rs = null;
    private long recordTime;
    private boolean anyRecord = false;
    private Image backImage;
    private Image centerImage;
    private Command exit = new Command("Exit", Command.EXIT, 1);
    private Command enter = new Command("Enter", Command.ITEM, 2);
    private Command help = new Command("help", Command.HELP, 2);
    private Command start = new Command("start", Command.ITEM, 2);
    private Command stop = new Command("stop", Command.ITEM, 2);
    private Command replay = new Command("replay", Command.ITEM, 2);
    private Command record = new Command("record", Command.ITEM, 2);
    private Command OK = new Command("OK", Command.OK, 1);

    public rhythm_room() {
        canvas = new TempleteCanvas();
        display = Display.getDisplay(this);
        try {
            backImage = Image.createImage("/back.png");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void startApp() {
        display.setCurrent(canvas);
        canvas.addCommand(exit);
        canvas.addCommand(enter);
        canvas.addCommand(help);
        //canvas.addCommand(record);
        canvas.setCommandListener(this);
        counter = 0;
        flag = 0;
        enable = 0;
        start1 = 0;
        t = 1000;
        startNum = Math.abs((new Random()).nextInt() % 12);
        try {
            rs = RecordStore.openRecordStore("LOCALRECORD", true);
            if (rs.getNumRecords() != 0) {
                anyRecord = true;
                ByteArrayInputStream bais = new ByteArrayInputStream(rs.getRecord(1));
                DataInputStream dis = new DataInputStream(bais);
                try {
                    //recordPlayer=dis.readUTF();
                    recordTime = dis.readLong();
                } catch (Exception e) {
                }
                rs.closeRecordStore();
            }
        } catch (RecordStoreException e) {
        }
        if (anyRecord) {
            canvas.addCommand(record);
        }
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable s) {
        if (c == exit) {
            destroyApp(false);
            notifyDestroyed();
        } else if (c == enter) {
            state = 1;
            canvas.repaint();
            //进入主游戏画面
        } else if (c == help) {
            state = 2;
            canvas.repaint();
            //进入帮助画面
        } else if (c == record) {
            state = 4;
            canvas.repaint();
            //进入本机记录画面
        } else if (c == start) {
            state = 1;
            start1 = 1;
            interval = 0;
            time1 = 0;
            time2 = 0;
            time3 = 0;
            while (interval < 500) {
                interval = Math.abs((new Random()).nextInt() % 2000);
            }
            timer = new Timer();
            timerTask = new ClockTimerTask();
            timer.scheduleAtFixedRate(timerTask, t, interval);
            canvas.repaint();
        } else if (c == replay) {
            state = 3;
            canvas.repaint();
        } else if (c == stop) {
            if (enable == 1) {
                flag = 1;
                time2 = System.currentTimeMillis();
                time3 = time2 - time1 - interval * 6;
                time3 = Math.abs(time3);
                enable = 0;
                canvas.repaint();
            }
        }
    }
 
    class TempleteCanvas extends Canvas {
        int width = 0;
        int height = 0;

        protected void paint(Graphics g) {
            g.setColor(0, 0, 0);
            g.fillRect(0, 0, width - 1, height - 1);
            //游戏开始画面
            if (state == 0) {
                width = getWidth();
                height = getHeight();
                Image coverImage = null;
                try {
                    coverImage = Image.createImage("/cover.png");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                g.drawImage(coverImage, 0, 0, g.TOP | g.LEFT);
            }
            //游戏帮助画面
            if (state == 2) {
                Image helpImage = null;
                try {
                    helpImage = Image.createImage("/result.png");
                } catch (Exception e) {
                    e.printStackTrace();
                }
    	        g.drawImage(helpImage,0,0,g.TOP|g.LEFT);
    	        g.setColor(120,240,60);
    	        g.drawString("想看看自己的节奏感如何吗?",24,10,g.TOP|g.LEFT);
    	        g.drawString("请接受这毫秒级的检验吧:)",24,30,g.TOP|g.LEFT);
g.drawString("游戏规则:",24,50,g.TOP|g.LEFT);
    	        g.drawString("点『start』按钮,将看到绿色",24,70,g.TOP|g.LEFT);
    	        g.drawString("圆点按一定的频率依次通过六个",4,90,g.TOP|g.LEFT);
    	        g.drawString("星座,请按此节奏估计圆点到达第",4,110,g.TOP|g.LEFT);
    	        g.drawString("十二个星座,也就是圆圈所在的星",4,130,g.TOP|g.LEFT);
    	        g.drawString("座的时刻,并在该时刻按下『stop』",4,150,g.TOP|g.LEFT);
    	        g.drawString("按钮,您将会看到您的判断与准确",4,170,g.TOP|g.LEFT);
    	        g.drawString("时刻的误差",4,190,g.TOP|g.LEFT);
    	        g.drawString("加油哦^_^",24,210,g.TOP|g.LEFT);
            }
            //本机记录画面
            if (state == 4) {
                Image helpImage = null;
                try {
                    helpImage = Image.createImage("/result.png");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                g.drawImage(helpImage, 0, 0, g.TOP | g.LEFT);
                g.setColor(120, 240, 60);
                g.drawString("本机目前最准确的记录为:",30,100,g.LEFT|g.TOP);
                g.drawString(String.valueOf(recordTime), 100, 130, g.LEFT | g.TOP);
                g.drawString("(毫秒)", 100, 150, g.LEFT | g.TOP);
            }
            if (state == 3) {
                removeCommand(replay);//去除replay Command;
                addCommand(start); //加入start Command;
                counter = 0;
                flag = 0;
                enable = 0; 
                width = getWidth();
                height = getHeight();
                g.drawImage(backImage, 0, 0, g.TOP | g.LEFT);
                int r = 5;
                g.setColor(0, 255, 0);
                try {
                    centerImage = Image.createImage("/00.png");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                g.drawImage(centerImage, 120, 130, g.VCENTER | g.HCENTER);
                startNum = Math.abs((new Random()).nextInt() % 12);
                switch (startNum) {
                case 0:
                    g.drawArc(120 - r, 56 - r, 10, 10, 0, 360);
                    g.fillArc(120 - r, 56 - r, 10, 10, 0, 360);
                    break;
                case 1:
                    g.drawArc(156 - r, 66 - r, 10, 10, 0, 360);
                    g.fillArc(156 - r, 66 - r, 10, 10, 0, 360);
                    break;
                case 2:
                    g.drawArc(182 - r, 93 - r, 10, 10, 0, 360);
                    g.fillArc(182 - r, 93 - r, 10, 10, 0, 360);
                    break;
                case 3:
                    g.drawArc(191 - r, 130 - r, 10, 10, 0, 360);
                    g.fillArc(191 - r, 130 - r, 10, 10, 0, 360);
                    break;
                case 4:
                    g.drawArc(182 - r, 164 - r, 10, 10, 0, 360);
                    g.fillArc(182 - r, 164 - r, 10, 10, 0, 360);
                    break;
                case 5:
                    g.drawArc(155 - r, 191 - r, 10, 10, 0, 360);
                    g.fillArc(155 - r, 191 - r, 10, 10, 0, 360);
                    break;
                case 6:
                    g.drawArc(120 - r, 200 - r, 10, 10, 0, 360);
                    g.fillArc(120 - r, 200 - r, 10, 10, 0, 360);
                    break;
                case 7:
                    g.drawArc(83 - r, 190 - r, 10, 10, 0, 360);
                    g.fillArc(83 - r, 190 - r, 10, 10, 0, 360);
                    break;
                case 8:
                    g.drawArc(56 - r, 162 - r, 10, 10, 0, 360);
                    g.fillArc(56 - r, 162 - r, 10, 10, 0, 360);
                    break;
                case 9:
                    g.drawArc(46 - r, 130 - r, 10, 10, 0, 360);
                    g.fillArc(46 - r, 130 - r, 10, 10, 0, 360);
                    break;
                case 10:
                    g.drawArc(56 - r, 93 - r, 10, 10, 0, 360);
                    g.fillArc(56 - r, 93 - r, 10, 10, 0, 360);
                    break;
                case 11:
                    g.drawArc(83 - r, 66 - r, 10, 10, 0, 360);
                    g.fillArc(83 - r, 66 - r, 10, 10, 0, 360);
                    break;
                default:
                    ;
                }
                switch (startNum % 12) {
                case 0:
                    try {
                        centerImage = Image.createImage("/00.png");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    g.drawImage(centerImage, 120, 130, g.VCENTER | g.HCENTER);
                    g.fillArc(120 - r, 56 - r, 10, 10, 0, 360);
                    break;
                case 1:
                    try {
                        centerImage = Image.createImage("/01.png");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    g.drawImage(centerImage, 120, 130, g.VCENTER | g.HCENTER);
                    g.fillArc(156 - r, 66 - r, 10, 10, 0, 360);
                    break;
                case 2:
                    try {
                        centerImage = Image.createImage("/02.png");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    g.drawImage(centerImage, 120, 130, g.VCENTER | g.HCENTER);
                    g.fillArc(182 - r, 93 - r, 10, 10, 0, 360);
                    break;
                case 3:
                    try {
                        centerImage = Image.createImage("/03.png");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    g.drawImage(centerImage, 120, 130, g.VCENTER | g.HCENTER);
                    g.fillArc(191 - r, 130 - r, 10, 10, 0, 360);
                    break;
                case 4:
                    try {
                        centerImage = Image.createImage("/04.png");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    g.drawImage(centerImage, 120, 130, g.VCENTER | g.HCENTER);
                    g.fillArc(182 - r, 164 - r, 10, 10, 0, 360);
                    break;
                case 5:
                    try {
                        centerImage = Image.createImage("/05.png");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    g.drawImage(centerImage, 120, 130, g.VCENTER | g.HCENTER);
                    g.fillArc(155 - r, 191 - r, 10, 10, 0, 360);
                    break;
                case 6:
                    try {
                        centerImage = Image.createImage("/06.png");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    g.drawImage(centerImage, 120, 130, g.VCENTER | g.HCENTER);
                    g.fillArc(120 - r, 200 - r, 10, 10, 0, 360);
                    break;
                case 7:
                    try {

⌨️ 快捷键说明

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