用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

Java小游戏 扫雷

2015-01-11 作者: java源代码大全举报

[java]代码库

<p></p>
<p>/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */</p>
<p>/**
 *
 * @author Zerob13
 <em>/ import java.awt.</em>;
import java.awt.event.<em>; import javax.swing.</em>;
class Mineb extends JButton {
    private boolean ismine;
    int x, y;
    int num;
    public boolean isMine() {
        return ismine;
    }
    public void setMine(boolean a) {
        ismine = a;
    }
    Mineb(String a, int i, int j) {
        super.setText(a);
        x = i;
        y = j;
        ismine = false;
    }
}
public class Deom extends JFrame implements MouseListener {
    /**
     * @param args
     */
    Mineb[][] b;
    JLabel state;
    int last;
    JMenuBar mb;
    int elas;
    class node {
        int x, y;
    }
    int[][] dir = { { 0, 1 }, { 1, 0 }, { 1, 1 }, { -1, 1 }, { -1, -1 },
            { 1, -1 }, { -1, 0 }, { 0, -1 } };
    private void gen() {
        int co = 0;
        elas = 81 - 9;
        last = 9;
        int[] hash = new int[81];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                b[i][j].setText(“”);
                b[i][j].setEnabled(true);
                b[i][j].setMine(false);
            }
        }
        for (int i = 0; i < 81; i++) {
            hash[i] = 0;
        }
        for (; co < 9;) {
            int X = (int) (Math.random() * 81);
            if (hash[X] == 0) {
                hash[X] = 1;
                co++;
            }
        }
        for (int i = 0; i < 81; i++) {
            if (hash[i] == 1) {
                int x = i / 10, y = i % 10;
                if (x >= 9)
                    x = 8;
                if (y >= 9)
                    y = 8;
                b[x][y].setMine(true);
            }
        }
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                b[i][j].num = count(i, j);
            }
        }
        state.setText(“9”);
    }
    Deom() {
        mb = new JMenuBar();
        setJMenuBar(mb);
        state = new JLabel(“”);
        JMenu start = new JMenu(“Start”);
        JMenu http = new JMenu(“http://zerob13.com”);
        mb.add(start);
        mb.add(http);
        JMenuItem s = new JMenuItem(“Start!!”);
        start.add(s);
        ActionListener st = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                gen();
            }
        };
        s.addActionListener(st);
        setLayout(new GridLayout(10, 9, 0, 0));
        b = new Mineb[9][9];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                b[i][j] = new Mineb(“”, i, j);
                b[i][j].setSize(10, 10);
                b[i][j].addMouseListener(this);
                add(b[i][j]);
            }
        }
        add(state);
        state.setText(String.valueOf(this.last));
        setSize(500, 500);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gen();
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Deom frame = new Deom();
    }
    int count(int x, int y) {
        int i;
        int k = 0;
        for (i = 0; i < 8; i++) {
            int w = x + dir[i][0];
            int z = y + dir[i][1];
            if (w < 0 || z < 0 || w >= 9 || z >= 9)
                continue;
            if (b[w][z].isMine()) {
                k++;
            }
        }
        return k;
    }
    void showall() {
        int i, j;</p>
<pre><code>    for (i = 0; i < 9; i++) {
        for (j = 0; j < 9; j++) {
            if (b[i][j].isEnabled()) {
                if (b[i][j].isMine()) {
                    if (b[i][j].getText() == "P")
                        b[i][j].setText("R");
                    else
                        b[i][j].setText("@");
                    b[i][j].setEnabled(false);
                } else {
                    if (b[i][j].num == 0) {
                        if (b[i][j].getText() == "P") {
                            b[i][j].setText("X");
                        } else
                            b[i][j].setText("-");
                    } else{
                        if (b[i][j].getText() == "P") {
                            b[i][j].setText("X");
                        }else
                        b[i][j].setText(String.valueOf(b[i][j].num));}
                    b[i][j].setEnabled(false);
                }
            }
        }
    }
}
void showsame(int x, int y) {
    int i, j, k;
    node[] queue = new node[81];
    boolean[][] hash = new boolean[9][9];
    for (i = 0; i < 9; i++) {
        for (j = 0; j < 9; j++) {
            hash[i][j] = false;
        }
    }
    node head = new node();
    node p = new node();
    head.x = x;
    head.y = y;
    int top = 0;
    int tail = 0;
    queue[tail] = new node();
    queue[tail].x = head.x;
    queue[tail].y = head.y;
    tail++;
    while (tail > top) {
        head = queue[top];
        top++;
        for (i = 0; i < 8; i++) {
            int w = head.x + dir[i][0];
            int z = head.y + dir[i][1];
            if (w < 0 || z < 0 || w >= 9 || z >= 9)
                continue;
            if(b[w][z].getText()!="")
                continue;
            if (b[w][z].isMine())
                continue;
            if (hash[w][z])
                continue;
            hash[w][z] = true;
            if (b[w][z].num == 0) {
                queue[tail] = new node();
                queue[tail].x = w;
                queue[tail].y = z;
                tail++;
                if (b[w][z].isEnabled()) {
                    b[w][z].setEnabled(false);
                    elas--;
                }
                b[w][z].setText("-");
            }
        }
    }
    if (elas == 0) {
        showall();
                    JOptionPane.showMessageDialog(null, "YOU WIN!", "YOU WIN!", JOptionPane.DEFAULT_OPTION);
        state.setText("WIN");
    }
}
@Override
public void mouseClicked(MouseEvent e) {
    Mineb temp = (Mineb) e.getSource();
    if (e.getButton() == MouseEvent.BUTTON1) {
        if (temp.getText() == "P" || temp.getText() == "?") {
        } else {
            if (temp.isMine()) {
                showall();
                                    state.setText("LOSE");
                                     JOptionPane.showMessageDialog(null, "YOU LOSE!", "YOU LOSE!", JOptionPane.DEFAULT_OPTION);
            } else {
                if (temp.num == 0) {
                    showsame(temp.x, temp.y);
                    temp.setText("-");
                } else {
                    temp.setText(String.valueOf(temp.num));
                }
            }
            if (temp.isEnabled()) {
                temp.setEnabled(false);
                elas--;
            }
            if (elas == 0) {
                showall();
                state.setText("WIN");
                                     JOptionPane.showMessageDialog(null, "YOU WIN!", "YOU WIN!", JOptionPane.DEFAULT_OPTION);
            }
        }
    } else if (e.getButton() == MouseEvent.BUTTON3) {
        if (temp.getText() == "P" || this.last == 0) {
            if (temp.getText() == "P")
                this.last++;
            temp.setText("?");
        } else if (temp.getText() == "?") {
            temp.setText("");
        } else {
            temp.setText("P");
            this.last--;
        }
        state.setText(String.valueOf(this.last));
    }
}
@Override
public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub
}
</code>//源代码片段来自云代码http://yuncode.net
			


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...