回 帖 发 新 帖 刷新版面

主题:求助~寻求Java枪手

寻求枪手编一份小型的Java扫雷程序(大二期末作业用),程序比较小,有同学一天就弄完。

价格再议
联系方式:
qq:121876343
e-mail:lincheney2002@gmail.com

回复列表 (共4个回复)

沙发

这些时网上搜下来的较粗糙的代码,建议自己再完善完善,如加个“重新开始”,“计时”等

package ly.java.game;

import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

class ExtendButton extends JButton {
    private int Button_Pos;

    private boolean Button_Status;

    private boolean Button_Visited;

    public int SetPostion(int pos) {
        this.Button_Pos = (pos >= 0 && pos <= 81) ? pos : 0;
        return this.Button_Pos;
    }

    public int GetPostion() {
        return this.Button_Pos;
    }

    public boolean SetStatus(boolean sta) {
        this.Button_Status = sta;
        return this.Button_Status;
    }

    public boolean GetStatus() {
        return this.Button_Status;
    }

    public boolean Visited() {
        return this.Button_Visited;
    }

    public boolean SetVisited(boolean vis) {
        this.Button_Visited = vis;
        return this.Button_Visited;
    }
}

public class Game extends JFrame implements ActionListener {
    private Container myContainer;

    private GridLayout myLayout;

    ExtendButton[] myButton = new ExtendButton[81];

    private Game() {
        this.setTitle("Game");
        this.setSize(500, 500);
        this.InitButton();
    }

    private void InitButton() {
        myContainer = getContentPane();
        myLayout = new GridLayout(9, 9, 1, 1);
        myContainer.setLayout(myLayout);
        for (int i = 0; i < 81; i++) {
            myButton[i] = new ExtendButton();
            myButton[i].SetPostion(i);
            myContainer.add(myButton[i]);
            myButton[i].addActionListener(this);
        }
        System.gc();
        this.SetBomb(13);
        show();
    }

板凳

private void SetBomb(int count) {
        int counter = 0;
        int tempint;
        while (counter != count) {
            tempint = (int) (Math.random() * 81);
            if (!myButton[tempint].GetStatus()) {
                myButton[tempint].SetStatus(true);
                counter++;
            }
        }
    }

    private void ShowBomb() {
        for (int i = 0; i < 81; i++) {
            if (myButton[i].GetStatus()) {
                myButton[i].setBackground(new Color(0, 0, 0));
            }
        }
    }

    private void CheckButton(ExtendButton TempButton) {

        if (TempButton.GetStatus()) {
            JOptionPane.showMessageDialog(null, "You Failed!", "Game",
                    JOptionPane.INFORMATION_MESSAGE);
            this.ShowBomb();
            return;
        }
        int[] CircleNum = new int[8];
        int temp = 0;
        if (!TempButton.Visited()) {

            CircleNum[0] = TempButton.GetPostion() - 9;
            CircleNum[0] = (CircleNum[0] < 0) ? -1 : CircleNum[0];
            CircleNum[1] = TempButton.GetPostion() - 8;
            CircleNum[1] = (CircleNum[1] < 0 || CircleNum[1] % 9 == 0) ? -1
                    : CircleNum[1];
            CircleNum[2] = TempButton.GetPostion() + 1;
            CircleNum[2] = (CircleNum[2] % 9 == 0) ? -1 : CircleNum[2];
            CircleNum[3] = TempButton.GetPostion() + 10;
            CircleNum[3] = (CircleNum[3] > 80 || CircleNum[3] % 9 == 0) ? -1
                    : CircleNum[3];
            CircleNum[4] = TempButton.GetPostion() + 9;
            CircleNum[4] = (CircleNum[4] > 80) ? -1 : CircleNum[4];
            CircleNum[5] = TempButton.GetPostion() + 8;
            CircleNum[5] = (CircleNum[5] > 80 || CircleNum[5] % 8 == 0) ? -1
                    : CircleNum[5];
            CircleNum[6] = TempButton.GetPostion() - 1;
            CircleNum[6] = (CircleNum[6] % 8 == 0) ? -1 : CircleNum[6];
            CircleNum[7] = TempButton.GetPostion() - 10;
            CircleNum[7] = (CircleNum[7] < 0 || CircleNum[7] % 8 == 0) ? -1
                    : CircleNum[7];
            for (int i = 0; i < 8; i++) {
                if (CircleNum[i] != -1) {
                    if (myButton[CircleNum[i]].GetStatus()
                            && !myButton[CircleNum[i]].Visited())
                        temp++;
                }
            }
            if (temp > 0) {
                TempButton.SetVisited(true);
                TempButton.setText(String.valueOf(temp));
                temp = 0;
            } else if (temp == 0) {
                TempButton.SetVisited(true);
                TempButton.setBackground(new Color(125, 152, 0));
                for (int i = 0; i < 8; i++) {
                    if (CircleNum[i] != -1 && !myButton[CircleNum[i]].Visited()) {
                        CheckButton(myButton[CircleNum[i]]);
                    }
                }
            }
        }
    }

    public void actionPerformed(ActionEvent e) {
        CheckButton((ExtendButton) e.getSource());
    }

    public static void main(String[] args) {
        Game newGame = new Game();
        newGame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

3 楼


谢谢高手!不过我想如果运用的话会被检测程序检测出来是网上的资源。

4 楼

我不是高手

这是提供做个参考,理解了,就能写出自己的了

我来回复

您尚未登录,请登录后再回复。点此登录或注册