[Java] Java小游戏 扫雷 →→→→→进入此内容的聊天室

来自 , 2020-11-11, 写在 Java, 查看 125 次.
URL http://www.code666.cn/view/e17184bc
  1. <p></p>
  2. <p>/*
  3.  * To change this template, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */</p>
  6. <p>/**
  7.  *
  8.  * @author Zerob13
  9.  <em>/ import java.awt.</em>;
  10. import java.awt.event.<em>; import javax.swing.</em>;
  11. class Mineb extends JButton {
  12.     private boolean ismine;
  13.     int x, y;
  14.     int num;
  15.     public boolean isMine() {
  16.         return ismine;
  17.     }
  18.     public void setMine(boolean a) {
  19.         ismine = a;
  20.     }
  21.     Mineb(String a, int i, int j) {
  22.         super.setText(a);
  23.         x = i;
  24.         y = j;
  25.         ismine = false;
  26.     }
  27. }
  28. public class Deom extends JFrame implements MouseListener {
  29.     /**
  30.      * @param args
  31.      */
  32.     Mineb[][] b;
  33.     JLabel state;
  34.     int last;
  35.     JMenuBar mb;
  36.     int elas;
  37.     class node {
  38.         int x, y;
  39.     }
  40.     int[][] dir = { { 0, 1 }, { 1, 0 }, { 1, 1 }, { -1, 1 }, { -1, -1 },
  41.             { 1, -1 }, { -1, 0 }, { 0, -1 } };
  42.     private void gen() {
  43.         int co = 0;
  44.         elas = 81 - 9;
  45.         last = 9;
  46.         int[] hash = new int[81];
  47.         for (int i = 0; i < 9; i++) {
  48.             for (int j = 0; j < 9; j++) {
  49.                 b[i][j].setText(“”);
  50.                 b[i][j].setEnabled(true);
  51.                 b[i][j].setMine(false);
  52.             }
  53.         }
  54.         for (int i = 0; i < 81; i++) {
  55.             hash[i] = 0;
  56.         }
  57.         for (; co < 9;) {
  58.             int X = (int) (Math.random() * 81);
  59.             if (hash[X] == 0) {
  60.                 hash[X] = 1;
  61.                 co++;
  62.             }
  63.         }
  64.         for (int i = 0; i < 81; i++) {
  65.             if (hash[i] == 1) {
  66.                 int x = i / 10, y = i % 10;
  67.                 if (x >= 9)
  68.                     x = 8;
  69.                 if (y >= 9)
  70.                     y = 8;
  71.                 b[x][y].setMine(true);
  72.             }
  73.         }
  74.         for (int i = 0; i < 9; i++) {
  75.             for (int j = 0; j < 9; j++) {
  76.                 b[i][j].num = count(i, j);
  77.             }
  78.         }
  79.         state.setText(9);
  80.     }
  81.     Deom() {
  82.         mb = new JMenuBar();
  83.         setJMenuBar(mb);
  84.         state = new JLabel(“”);
  85.         JMenu start = new JMenu(“Start”);
  86.         JMenu http = new JMenu(“http://zerob13.com”);
  87.         mb.add(start);
  88.         mb.add(http);
  89.         JMenuItem s = new JMenuItem(“Start!!);
  90.         start.add(s);
  91.         ActionListener st = new ActionListener() {
  92.             @Override
  93.             public void actionPerformed(ActionEvent e) {
  94.                 gen();
  95.             }
  96.         };
  97.         s.addActionListener(st);
  98.         setLayout(new GridLayout(10, 9, 0, 0));
  99.         b = new Mineb[9][9];
  100.         for (int i = 0; i < 9; i++) {
  101.             for (int j = 0; j < 9; j++) {
  102.                 b[i][j] = new Mineb(“”, i, j);
  103.                 b[i][j].setSize(10, 10);
  104.                 b[i][j].addMouseListener(this);
  105.                 add(b[i][j]);
  106.             }
  107.         }
  108.         add(state);
  109.         state.setText(String.valueOf(this.last));
  110.         setSize(500, 500);
  111.         setVisible(true);
  112.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  113.         gen();
  114.     }
  115.     public static void main(String[] args) {
  116.         // TODO Auto-generated method stub
  117.         Deom frame = new Deom();
  118.     }
  119.     int count(int x, int y) {
  120.         int i;
  121.         int k = 0;
  122.         for (i = 0; i < 8; i++) {
  123.             int w = x + dir[i][0];
  124.             int z = y + dir[i][1];
  125.             if (w < 0 || z < 0 || w >= 9 || z >= 9)
  126.                 continue;
  127.             if (b[w][z].isMine()) {
  128.                 k++;
  129.             }
  130.         }
  131.         return k;
  132.     }
  133.     void showall() {
  134.         int i, j;</p>
  135. <pre><code>    for (i = 0; i < 9; i++) {
  136.         for (j = 0; j < 9; j++) {
  137.             if (b[i][j].isEnabled()) {
  138.                 if (b[i][j].isMine()) {
  139.                     if (b[i][j].getText() == "P")
  140.                         b[i][j].setText("R");
  141.                     else
  142.                         b[i][j].setText("@");
  143.                     b[i][j].setEnabled(false);
  144.                 } else {
  145.                     if (b[i][j].num == 0) {
  146.                         if (b[i][j].getText() == "P") {
  147.                             b[i][j].setText("X");
  148.                         } else
  149.                             b[i][j].setText("-");
  150.                     } else{
  151.                         if (b[i][j].getText() == "P") {
  152.                             b[i][j].setText("X");
  153.                         }else
  154.                         b[i][j].setText(String.valueOf(b[i][j].num));}
  155.                     b[i][j].setEnabled(false);
  156.                 }
  157.             }
  158.         }
  159.     }
  160. }
  161. void showsame(int x, int y) {
  162.     int i, j, k;
  163.     node[] queue = new node[81];
  164.     boolean[][] hash = new boolean[9][9];
  165.     for (i = 0; i < 9; i++) {
  166.         for (j = 0; j < 9; j++) {
  167.             hash[i][j] = false;
  168.         }
  169.     }
  170.     node head = new node();
  171.     node p = new node();
  172.     head.x = x;
  173.     head.y = y;
  174.     int top = 0;
  175.     int tail = 0;
  176.     queue[tail] = new node();
  177.     queue[tail].x = head.x;
  178.     queue[tail].y = head.y;
  179.     tail++;
  180.     while (tail > top) {
  181.         head = queue[top];
  182.         top++;
  183.         for (i = 0; i < 8; i++) {
  184.             int w = head.x + dir[i][0];
  185.             int z = head.y + dir[i][1];
  186.             if (w < 0 || z < 0 || w >= 9 || z >= 9)
  187.                 continue;
  188.             if(b[w][z].getText()!="")
  189.                 continue;
  190.             if (b[w][z].isMine())
  191.                 continue;
  192.             if (hash[w][z])
  193.                 continue;
  194.             hash[w][z] = true;
  195.             if (b[w][z].num == 0) {
  196.                 queue[tail] = new node();
  197.                 queue[tail].x = w;
  198.                 queue[tail].y = z;
  199.                 tail++;
  200.                 if (b[w][z].isEnabled()) {
  201.                     b[w][z].setEnabled(false);
  202.                     elas--;
  203.                 }
  204.                 b[w][z].setText("-");
  205.             }
  206.         }
  207.     }
  208.     if (elas == 0) {
  209.         showall();
  210.                     JOptionPane.showMessageDialog(null, "YOU WIN!", "YOU WIN!", JOptionPane.DEFAULT_OPTION);
  211.         state.setText("WIN");
  212.     }
  213. }
  214. @Override
  215. public void mouseClicked(MouseEvent e) {
  216.     Mineb temp = (Mineb) e.getSource();
  217.     if (e.getButton() == MouseEvent.BUTTON1) {
  218.         if (temp.getText() == "P" || temp.getText() == "?") {
  219.         } else {
  220.             if (temp.isMine()) {
  221.                 showall();
  222.                                     state.setText("LOSE");
  223.                                      JOptionPane.showMessageDialog(null, "YOU LOSE!", "YOU LOSE!", JOptionPane.DEFAULT_OPTION);
  224.             } else {
  225.                 if (temp.num == 0) {
  226.                     showsame(temp.x, temp.y);
  227.                     temp.setText("-");
  228.                 } else {
  229.                     temp.setText(String.valueOf(temp.num));
  230.                 }
  231.             }
  232.             if (temp.isEnabled()) {
  233.                 temp.setEnabled(false);
  234.                 elas--;
  235.             }
  236.             if (elas == 0) {
  237.                 showall();
  238.                 state.setText("WIN");
  239.                                      JOptionPane.showMessageDialog(null, "YOU WIN!", "YOU WIN!", JOptionPane.DEFAULT_OPTION);
  240.             }
  241.         }
  242.     } else if (e.getButton() == MouseEvent.BUTTON3) {
  243.         if (temp.getText() == "P" || this.last == 0) {
  244.             if (temp.getText() == "P")
  245.                 this.last++;
  246.             temp.setText("?");
  247.         } else if (temp.getText() == "?") {
  248.             temp.setText("");
  249.         } else {
  250.             temp.setText("P");
  251.             this.last--;
  252.         }
  253.         state.setText(String.valueOf(this.last));
  254.     }
  255. }
  256. @Override
  257. public void mouseEntered(MouseEvent e) {
  258.     // TODO Auto-generated method stub
  259. }
  260. @Override
  261. public void mouseExited(MouseEvent e) {
  262.     // TODO Auto-generated method stub
  263. }
  264. @Override
  265. public void mousePressed(MouseEvent e) {
  266.     // TODO Auto-generated method stub
  267. }
  268. @Override
  269. public void mouseReleased(MouseEvent e) {
  270.     // TODO Auto-generated method stub
  271. }
  272. </code>//源代码片段来自云代码http://yuncode.net
  273.                        

回复 "Java小游戏 扫雷"

这儿你可以回复上面这条便签

captcha