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

📄 duiduipeng.java~1~

📁 java编写的一个小游戏(对对碰游戏
💻 JAVA~1~
📖 第 1 页 / 共 2 页
字号:
                delete();
                back = false;
            }
            if (back == true) {
                comeback();
            }
            //check();
        }
    }

    public boolean change() { //交换
        if (frist && second) {
            Icon temp;
            temp = jButton[fristx][fristy].getIcon();
            jButton[fristx][fristy].setIcon(jButton[secondx][secondy].
                                            getIcon());
            jButton[secondx][secondy].setIcon(temp);
            jButton[fristx][fristy].setBackground(Color.white);
            frist = false;
            second = false;
            return true;
        } else {
            return false;
        }
    }

    public void comeback() { //返回原来的状态
        Icon temp;
        temp = jButton[fristx][fristy].getIcon();
        jButton[fristx][fristy].setIcon(jButton[secondx][secondy].
                                        getIcon());
        jButton[secondx][secondy].setIcon(temp);
    }

    public int getIconID(int a, int b) { //获得icon的序号
        String s = jButton[a][b].getIcon().toString();
        if (s.equals("images/1.gif")) {
            return 1;
        } else if (s.equals("images/2.gif")) {
            return 2;
        } else if (s.equals("images/3.gif")) {
            return 3;
        } else if (s.equals("images/4.gif")) {
            return 4;
        } else if (s.equals("images/5.gif")) {
            return 5;
        } else if (s.equals("images/6.gif")) {
            return 6;
        } else {
            return 7;
        }
    }

    public boolean waitdel() { //算法的核心,判断当前有没有可以消掉的
        int now; //行或列,用一个int del[][]存储,返回true;
        for (int i = 0; i < 7; i++) { //0-6
            for (int j = 0; j < 7; j++) { //0-6
                now = getIconID(i, j); //now 1-7
                if (i > 0 && i < 6 && now == getIconID(i - 1, j) &&
                    now == getIconID(i + 1, j)) { //先分析横向  1-5
                    insertDel(i - 1, j);
                    insertDel(i, j);
                    insertDel(i + 1, j);
                    int t = i + 1; //t.max=6;
                    while (t < 6 && now == getIconID(t + 1, j)) {
                        insertDel(t + 1, j);
                        t++;
                    }
                }
                if (j > 0 && j < 6 && now == getIconID(i, j - 1) &&
                    now == getIconID(i, j + 1)) { //再分析纵向  1-5
                    insertDel(i, j - 1);
                    insertDel(i, j);
                    insertDel(i, j + 1);
                    int t = j + 1; //t.max=6;
                    while (t < 6 && now == getIconID(i, t + 1)) {
                        insertDel(i, t + 1);
                        t++;
                    }
                }
            }
        }
        if (delnumber > 2) {
            mark += delnumber * 5;
            jTextField1.setText(String.valueOf(mark));
            return true;
        } else {
            return false;
        }
    }

    public void insertDel(int a, int b) {
        if (del[a][b] == 1) {
            del[a][b] = 0;
            delnumber++;
            doblat.setblat(this.getIconID(a, b));
        }
    }

    public void delete() { //删除,并重整界面
        for (int j = 0; j < 7; j++) { //对每一列处理
            for (int i = 6; i > -1; i--) {
                if (del[i][j] == 0) {
                    for (int t = i - 1; t > -2; t--) {
                        if (t == -1) { //新建icon
                            jButton[i][j].setIcon(icon[r.nextInt(7)]);
                            del[i][j] = 1;
                            delnumber--;
                            break;
                        }
                        if (del[t][j] == 1) { //覆盖
                            jButton[i][j].setIcon(jButton[t][j].getIcon());
                            del[i][j] = 1;
                            del[t][j] = 0;
                            break;
                        }
                    }
                }
            }
        }
        for (int i = 0; i < 7; i++) {
            for (int j = 0; j < 7; j++) {
                del[i][j] = 1;
            }
        }
    }

    public void overgame() { //时间到,结束游戏
        soundthread[i - 1].stopthread();
        URL file = getClass().getResource("end.wav");
        AudioClip s = java.applet.Applet.newAudioClip(file);
        s.play();
        int i = JOptionPane.showConfirmDialog(null,
                                              "您的得分是:" + String.valueOf(mark) +
                                              "分\n您想再玩一把吗?", "游戏结束",
                                              JOptionPane.YES_NO_OPTION);
        s.stop();
        if (i == 0) { // yes
            start();
        } else { //no
            System.exit(0);
        }
    }

    /*public boolean check() {
        boolean shuffle = true;
        for (int i = 0; i < 7; i++) { //横向
            for (int j = 0; j < 6; j++) {
                frist = true;
                second = true;
                fristx = i;
                fristy = j;
                secondx = i;
                secondy = j + 1;
                change();
                if (waitdel()) {
                    comeback();
                    shuffle = false;
                }
            }
        }
        for (int j = 0; j < 7; j++) {
            for (int i = 0; i < 6; i++) {
                frist = true;
                second = true;
                fristx = i;
                fristy = j;
                secondx = i + 1;
                secondy = j;
                change();
                if (waitdel()) {
                    comeback();
                    shuffle = false;
                    System.out.print("111111111111");
                }
            }
        }
        if (shuffle) {
            shuffle();
            System.out.print("comehere......");
        }
        return shuffle;
         }*/
}


class duiduipeng_jButton51_actionAdapter implements ActionListener {
    private duiduipeng adaptee;
    duiduipeng_jButton51_actionAdapter(duiduipeng adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.shuffle();
    }
}


class duiduipeng_jButton50_actionAdapter implements ActionListener {
    private duiduipeng adaptee;
    duiduipeng_jButton50_actionAdapter(duiduipeng adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.start();
    }
}


class duiduipeng_jMenuFileExit_ActionAdapter implements ActionListener {
    duiduipeng adaptee;

    duiduipeng_jMenuFileExit_ActionAdapter(duiduipeng adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFileExit_actionPerformed(actionEvent);
    }
}


class duiduipeng_MouseAdapter extends MouseAdapter {
    int i, j;
    duiduipeng f;
    public duiduipeng_MouseAdapter(int a, int b, duiduipeng t) {
        i = a;
        j = b;
        f = t;
    }

    public void mouseClicked(MouseEvent e) {
        try {
            f.clickButton(i, j);
        } catch (Exception error) {
            error.printStackTrace();
        }
    }
}


class TimeThread extends Thread {
    duiduipeng f;
    boolean restart = true;
    public TimeThread(duiduipeng t) {
        f = t;
    }

    public void run() {
        try {
            restart = false;
            int time = 1000;
            f.jTextField2.setText(String.valueOf(time) + "秒");
            f.jButton50.setEnabled(false);
            f.jButton51.setEnabled(false);
            f.jMenuItem2.setEnabled(false);
            for (int i = 0; i < 7; i++) {
                for (int j = 0; j < 7; j++) {
                    f.jButton[i][j].setEnabled(false);
                }
            }
            Thread.sleep(3000);
            f.jButton51.setEnabled(true);
            f.jMenuItem2.setEnabled(true);
            for (int i = 0; i < 7; i++) {
                for (int j = 0; j < 7; j++) {
                    f.jButton[i][j].setEnabled(true);
                }
            }

            f.jButton50.setEnabled(true);
            while (restart == false && time > 0) {
                time--;
                f.jTextField2.setText(String.valueOf(time) + "秒");
                Thread.sleep(1000);
            }
            if (time == 0) {
                f.overgame();
            }
        } catch (Exception e) {}
    }

    public void stopthread() {
        restart = true;
    }
}


class SoundThread extends Thread {
    URL file;
    AudioClip s;
    public SoundThread() {
    }

    public void run() {
        try {
            
            file = getClass().getResource("sound/ready.wav");
            s = java.applet.Applet.newAudioClip(file);
            s.play();
            Thread.sleep(2000);
            file = getClass().getResource("sound/start.wav");
            s = java.applet.Applet.newAudioClip(file);
            s.play();
            file = getClass().getResource("sound/background.mid");
            s = java.applet.Applet.newAudioClip(file);
            s.loop();
            //sequencer = MidiSystem.getSequencer();
            //sequencer.open();
            //myFile = new File("sound/background.mid");
            //myseq = MidiSystem.getSequence(myFile);
            //sequencer.setSequence(myseq);
            //sequencer.start();
        } catch (Exception e) {}
    }

    public void stopthread() {
        try {
            s.stop();
        } catch (Exception e) {}
        //sequencer.stop();
        //sequencer.close();
    }
}


class Doblat { //声效
    int blat = 0;
    URL file;
    AudioClip s;
    public void setblat(int a) {
        if (blat == 0) {
            blat = a;
        }
    }

    public void play() {
        if (blat != 0) {
            file = getClass().getResource("sound/"+blat + ".wav");
            s = java.applet.Applet.newAudioClip(file);
            s.play();
            blat = 0;
        }
    }
}

⌨️ 快捷键说明

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