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 }

时间: 2024-10-23 09:30:36

18.6的相关文章

互测六 题解 9.18 圆润的多边形&amp;Takuji与信徒

圆润的多边形: 我们可将所求图形划分如下: 绿色部分是一凸多边形,红色部分为若干个长方形,蓝色部分为若干个扇形. 易证:1.蓝色部分的总和是一个半径为r的整圆:2.红色部分的总和=凸多边形周长*r. 那么现在就只剩下如何计算的问题. 1.对于前12.5%数据,r=0且点坐标成顺时针排列,那么直接作为凸多边形来计算即可: 2.对于前50%数据,点坐标成顺时针排列,这个部分分的做法...我也没想出来... 这是为什么呢...因为这个题,是我受了洛谷P1513的启发而脑补出来的,这道题中有"点坐标成顺

中国VR人才需求占全球18%排名第二,UE4技术美术人才万金难求

虚拟现实持续火爆,行业市场规模也随之水涨船高,未来医疗.娱乐.房地产.教育.旅游等领域还将继续拓展VR技术的应用.资本的入局和技术的发展已经相对稳定,VR行业必将迎来更为迅猛的发展阶段. VR在中国的快速发展有目共睹,短短两年时间已经形成了较为完善的产业链,令人惊叹.而与产业链的快速发展形成鲜明对比的,却是人才的远远落后.近期,全球最大的职场社交平台领英针对全球VR人才进行了一次全面扫描.数据显示,美国VR人才占全球40%,需求占比48%,而中国人才仅为2%,需求却占全球18%,人才短缺现象十分

编译安装Apache(httpd-2.4.18)

httpd有rpm和源码编译的方法,下面介绍一下源码编译安装的方法: 操作系统版本: # cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) 软件版本:httpd-2.4.18.tar.bz2 下载地址:http://apache.fayea.com/httpd/ 因为2.4版本的http的依赖apr-util.apr和pcre,所以还需要分别安装 软件版本:apr-1.5.2.tar.gz

实例:编译Linux内核3.18.25概要

前提: 将CentOS 7上3.10.0-229.el7.x86_64重新编译一个3.18.25内核 自编译安装,按照自己的硬件平台架构编译,能最适合硬件主机的性能 且按照需要编译模块,可以选择自己需要的包编译 [[email protected] tmp]# uname  -a 一.编译前准备工作 1.宿主机系统 本次编译宿主机:VMware Workstation Pro12 上的CentOS 7.0操作系统 2.开发环境(开发工具,开发库),头文件 [[email protected] y

【美妆讨论】化妆有术!让你重返18岁!

年龄永远是女人的大忌,想要留住年轻,不再为被问到年龄而感到尴尬,来跟小M学习化妆技巧啊,保证让你天天18岁! 技巧一:把皮肤彻底清洁干净 化妆前,一定要用洁面乳清洁皮肤,这是非常关键的一步,对化妆效果有很棒的辅助作用.清洁皮肤主要是为了去除油脂增加皮肤的张力,使化妆品更好地与皮肤贴合,这样妆容不易花掉,而且看起来更加清新通透自然. 技巧二:选择淡黄色粉底液 粉底液有很好的遮瑕效果.深色粉底液少量运用可以使五官看起来更加立体,但不可大面积使用:亚洲人一般的肤色无法驾驭较浅的粉底液,不推荐使用.最佳

MongoDB { code: 18, ok: 0.0, errmsg: "auth fails" } 原因

MongoDB出现 { code: 18, ok: 0.0, errmsg: "auth fails" }  错误的原因: 1.账号密码错误 2.账号不属于该数据库 MongoDB { code: 18, ok: 0.0, errmsg: "auth fails" } 原因,布布扣,bubuko.com

益计算Shprotification.v6.8.15.22+Heat.Balance.v6.12.27.36+Cold.Balance.v2.6.14.18

热增益计算Shprotification.v6.8.15.22+Heat.Balance.v6.12.27.36+Cold.Balance.v2.6.14.18 Andrey.Shirshov.Shprotification.v6.8.15.22 Andrey.Shirshov.Heat.Balance.v6.12.27.36 Andrey.Shirshov.Cold.Balance.v2.6.14.18   "现代ASHRAE标准参考数据用于从人.设备.确定热输入的人工照明,半透明的击剑系数(

7月18晚9点公众号日吸几万粉技巧

财神免费分享课来啦:很久没有做公开课了,这次应粉丝们的要求在7月18号晚上9点,免费分享公众号日吸几万粉技巧,同时有其他问题的还可以现场分享.有兴趣的朋友赶快关注我公众号:caishen780 或扫描下面二维码后回复"听课"按指示进群就行了,名额只有500名,先到先得.迟来进不了的就要等下次了. 作者:互传财神  原文地址:http://www.huchuan6.com/caishen/3693.html  微信公众号:caishen580

Linux下MySQL5.7.18二进制包安装(无默认配置文件my_default.cnf)

本文出处:http://www.cnblogs.com/wy123/p/6815049.html 最新在学习MySQL,纯新手,对Linux了解的也不多,因为是下载的最新版的MySQL(MySQL5.7.18)二进制包,CentOS7.2下测试安装,方便以后折腾.大概步骤如下,安装删除反复折腾了几遍,按照以下步骤,应该没啥问题了.也没有想象中的复杂,大部分步骤都是参考网上的,照做就是了,出错的话,多尝试,多查资料. 操作系统版本 创建mysql组和用户 下载最新版的MySQL 5.7.18二进制

从之江实验室出发,18岁的阿里要做基础科研生力军

1999年9月9日,阿里巴巴成立了.2017年9月8日,阿里巴巴迎来了自己的18周年庆,数万名阿里员工从全球各地汇集到9月8日晚的杭州黄龙体育中心参加2017集团年会,包括来自21个国家的800多名外籍员工. 然而,阿里巴巴为自己准备的18周岁成年礼,却从半年前就已经开始.2017年3月9日,阿里巴巴首开杭州召开首届技术大会,动员公司两万多名技术人员投身"NASA"新技术战略:面向未来20年组建强大的独立研发部门,为服务20亿人的新经济体储备核心科技. 半年后的2017年9月6日,由浙