标题:一个Applet的小游戏 (三子棋)
只看楼主
wu1011
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-11-18
结帖率:80%
 问题点数:0 回复次数:9 
一个Applet的小游戏 (三子棋)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
public class TicTacToe extends JApplet{
   private char whoseTurn = 'X';
   //类数组  
   private Cell[][] cells = new Cell[3][3];
   //状态栏信息
   private JLabel jlblStatus = new JLabel("X's turn to play");
   //初始化模板
   public TicTacToe(){
      JPanel p = new JPanel(new GridLayout(3,3,0,0));  
      for(int i=0;i<3;i++){
         for(int j=0;j<3;j++){
            p.add(cells[i][j] = new Cell());
         }
      }
      //画边框(红)
      p.setBorder(new LineBorder(Color.red,1));
      //画状态栏边框(黄)
      jlblStatus.setBorder(new LineBorder(Color.yellow,1));
      this.getContentPane().add(p,BorderLayout.CENTER);
      this.getContentPane().add(jlblStatus,BorderLayout.SOUTH);
   }
  //判断9个格是否有空
   public boolean isFull(){
      for(int i=0;i<3;i++)
         for(int j=0;j<3;j++)
             if(cells[i][j].getToken() == '')
                  return false;
            
         return true;
   }
   //判断是否赢了
   public boolean isWon(char token){
      for(int i=0;i<3;i++)
         if((cells[i][0].getToken() == token) && (cells[i][1].getToken() == token) && (cells[i][2].getToken() == token)){
            return true;
         }
        
      for(int j=0;j<3;j++)  
         if((cells[0][j].getToken() == token) && (cells[1][j].getToken() == token) && (cells[2][j].getToken() == token)){
           return true;
        }
      if((cells[0][2].getToken() == token) && (cells[1][1].getToken == token) && (cells[2][0].getToken() == token)){
         return true;
      }
      
      if((cells[0][0].getToken() == token) && (cells[1][1].getToken == token) && (cells[2][2].getToken() == token)){
         return true;
      }
   
      return false;
  }
//cell 类
  public class Cell extends JPanel implements MouseListener{
      private char token = '';
      
      public Cell(){
         //画每个格子的边框
         setBorder(new LineBorder(Color.black,1));
         addMouseListener(this);
     }
     
     public char getToken(){
         return token;
     }
   
     public void setToken(char c){
         token = c;
         repaint();
     }
    //画图
     protected void paintComponent(Graphics g){
         super.paintComponent(g);
         if(token == 'X'){
            g.drawLine(10,10,getWidth()-10,getHeight()-10);
            g.drawLine(getWidth()-10,10,10,getHeight()-10);
         }
         else if(token == 'O'){
            g.drawOval(10,10,getWidth()-20,getHeight()-20);
         }
     }
     public void mouseClicked(MouseEvent e){
        if(token == '' && whoseTurn != ''){
            setToken(whoseTurn);
        
        if(isWon(whoseTurn)){
             jlblStatus.setText(whoseTurn + " won! The game is over");
             whoseTurn ='';
        }
      
        else if(isFull()){
             jlblStatus.setText("Draw! The game is over");
             whoseTurn = '';
        }
         
        else{
             whoseTurn = (whoseTurn == 'X') ? 'O':'X';
            jlblStatus.setText(whoseTurn +" 's turn");
            }
       }
   }
   
     public void mousePressed(MouseEvent e){
     }
     public void mouseReleased(MouseEvent e){
     }
     public void mouseEntered(MouseEvent e){
     }
     public void mouseExited(MouseEvent e){
     }
  }
}




<html>
<head>
</head>
<body>
<applet code="TicTacToe.class" width=300 height=300>
</applet>
</body>
</html>
搜索更多相关主题的帖子: Applet 三子 小游戏 
2007-11-25 21:56
canyue
Rank: 1
等 级:新手上路
威 望:1
帖 子:159
专家分:0
注 册:2007-10-4
得分:0 
啥是“三子棋”?
别笑我,我确实不知道,我只知道五子棋。

别看我现在只有这么亮,总有一天会月圆的!
2007-11-25 23:40
netstriker
Rank: 1
等 级:新手上路
威 望:1
帖 子:257
专家分:0
注 册:2007-3-24
得分:0 
好,有创意。。。。三子棋!
2007-11-26 00:30
loveme10086
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-11-26
得分:0 
hao
you有意思阿
2007-11-26 21:10
幸福天堂
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-10-31
得分:0 
三子棋?怎么玩的?

去海南滑雪,去撒哈拉游泳......人生惬意~
2007-11-27 00:46
akakk520
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-11-27
得分:0 
2007-11-27 14:29
wu1011
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-11-18
得分:0 
就是 X O那种
2007-12-06 17:52
我是
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-9-9
得分:0 
不懂!嘿嘿
2008-09-13 14:14
iorivsmu
Rank: 1
等 级:新手上路
帖 子:59
专家分:5
注 册:2008-9-4
得分:0 
楼主~~~你的这个程序的判断是做的.为什么只要四个判断就够了?
我把它改成8*8的方格的五子期该怎么判断输赢?
2008-09-17 16:07
huangwei89
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2008-10-17
得分:0 
学习一下
2008-12-11 20:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-188353-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.068292 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved