zoukankan      html  css  js  c++  java
  • 18.6

      1 import java.awt.*;
      2 import java.awt.event.ActionEvent;
      3 import java.awt.event.ActionListener;
      4 import java.awt.event.MouseAdapter;
      5 import java.awt.event.MouseEvent;
      6 
      7 import javax.swing.*;
      8 import javax.swing.border.LineBorder;
      9 
     10 public class Test_18_6 extends JApplet{    
     11     static char whoseTurn = 'X';
     12     private static Cell[][] cells = new Cell[3][3];
     13     static JLabel jlblStatus = new JLabel("X's turn to play");
     14     JButton newGame = new JButton("NEW GAME");
     15     
     16     public Test_18_6(){
     17         JPanel p = new JPanel(new GridLayout(3,3,0,0));
     18         for(int i = 0; i < 3; i++)
     19             for(int j = 0; j < 3; j++)
     20                 p.add(cells[i][j] = new Cell());
     21         
     22         p.setBorder(new LineBorder(Color.red,1));
     23         jlblStatus.setBorder(new LineBorder(Color.yellow,1));
     24         
     25         add(newGame,BorderLayout.NORTH);
     26         add(p,BorderLayout.CENTER);
     27         add(jlblStatus,BorderLayout.SOUTH);
     28         newGame.addActionListener(new ActionListener(){
     29 
     30             @Override
     31             public void actionPerformed(ActionEvent arg0) {
     32                 // TODO Auto-generated method stub
     33                 for(int i = 0; i < 3; i++)
     34                     for(int j = 0; j < 3; j++)
     35                         cells[i][j].setToken(' ');
     36                 whoseTurn = 'X';
     37                 jlblStatus = new JLabel("X's turn to play");
     38             }
     39             
     40         });
     41     }
     42     
     43     public static boolean isFull(){
     44         for(int i = 0; i < 3; i++)
     45             for(int j = 0; j < 3; j++)
     46                 if(cells[i][j].getToken() == ' ')
     47                     return false;
     48         
     49         return true;
     50     }
     51     
     52     public static boolean isWon(char token){
     53         for(int i = 0; i < 3; i++)
     54             if((cells[i][0].getToken() == token) && (cells[i][1].getToken() == token) && (cells[i][2].getToken() == token)){
     55                 return true;
     56             }
     57         
     58         for(int j = 0; j < 3; j++)
     59             if((cells[0][j].getToken() == token) && (cells[1][j].getToken() == token) && (cells[2][j].getToken() == token)){
     60                 return true;
     61             }
     62         
     63         if((cells[0][0].getToken() == token) && (cells[1][1].getToken() == token) && (cells[2][2].getToken() == token)){
     64             return true;
     65         }
     66         
     67         if((cells[0][2].getToken() == token) && (cells[1][1].getToken() == token) && (cells[2][0].getToken() == token)){
     68             return true;
     69         }
     70         return false;
     71     }
     72 }
     73 
     74 class  Cell extends JPanel{
     75     private char token = ' ';
     76     
     77     public Cell(){
     78         setBorder(new LineBorder(Color.black,1));
     79         addMouseListener(new MyMouseListener());
     80     }
     81     
     82     public char getToken(){
     83         return token;
     84     }
     85     
     86     public void setToken(char c){
     87         token = c;
     88         repaint();
     89     }
     90     
     91     protected void paintComponent(Graphics g){
     92         super.paintComponent(g);
     93         
     94         if(token == 'X'){
     95             g.drawLine(10, 10, getWidth() - 10, getHeight() - 10);
     96             g.drawLine(getWidth() - 10, 10, 10, getHeight() - 10);
     97         }
     98         else if(token == 'O'){
     99             g.drawOval(10, 10, getWidth() - 20, getHeight() - 20);
    100         }
    101     }
    102     private class MyMouseListener extends MouseAdapter{
    103         public void mouseClicked(MouseEvent e){
    104             if(token == ' ' && Test_18_6.whoseTurn != ' '){
    105                 setToken(Test_18_6.whoseTurn);
    106                 
    107                 if(Test_18_6.isWon(Test_18_6.whoseTurn)){
    108                     Test_18_6.jlblStatus.setText(Test_18_6.whoseTurn + "won! the game is over");
    109                     Test_18_6.whoseTurn = ' ';
    110                 }
    111                 else if(Test_18_6.isFull()){
    112                     Test_18_6.jlblStatus.setText("Draw! The game is over");
    113                     Test_18_6.whoseTurn = ' ';
    114                 }
    115                 else {
    116                     Test_18_6.whoseTurn = (Test_18_6.whoseTurn == 'X')?'O':'X';
    117                     Test_18_6.jlblStatus.setText(Test_18_6.whoseTurn + "'s turn");
    118                 }
    119             }
    120         }
    121     }
    122 }
    View Code
  • 相关阅读:
    回答自己的提问
    <构建之法>13——17章的读后感
    <构建之法>10,11,12章的读后感
    <构建之法>8,9,10章的读后感
    作业5.2
    【作业报告】作业5 四则运算 测试与封装 5.1 改进版
    作业 5.1
    阅读
    做汉堡
    阅读《构建之法》
  • 原文地址:https://www.cnblogs.com/wanjiang/p/5797087.html
Copyright © 2011-2022 走看看