个性化阅读
专注于IT技术分析

井字游戏的例子

在此示例中, 我们将看到井字游戏的示例(也称为0和x(叉号))。

它只能通过AWT API开发, 但是我们在这里使用的是swing框架。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class TTT1 extends JFrame implements ItemListener, ActionListener{
int i, j, ii, jj, x, y, yesnull; 
int a[][]={{10, 1, 2, 3, 11}, {10, 1, 4, 7, 11}, {10, 1, 5, 9, 11}, {10, 2, 5, 8, 11}, {10, 3, 5, 7, 11}, {10, 3, 6, 9, 11}, {10, 4, 5, 6, 11}, {10, 7, 8, 9, 11} };
int a1[][]={{10, 1, 2, 3, 11}, {10, 1, 4, 7, 11}, {10, 1, 5, 9, 11}, {10, 2, 5, 8, 11}, {10, 3, 5, 7, 11}, {10, 3, 6, 9, 11}, {10, 4, 5, 6, 11}, {10, 7, 8, 9, 11} };
				
boolean state, type, set;

Icon ic1, ic2, icon, ic11, ic22;
Checkbox c1, c2;
JLabel l1, l2;
JButton b[]=new JButton[9];
JButton reset;

public void showButton(){

x=10; y=10;j=0;
for(i=0;i<=8;i++, x+=100, j++){
 b[i]=new JButton();
if(j==3)
{j=0; y+=100; x=10;}
 b[i].setBounds(x, y, 100, 100);
add(b[i]);
b[i].addActionListener(this);
}//eof for

reset=new JButton("RESET");
reset.setBounds(100, 350, 100, 50);
add(reset);
reset.addActionListener(this);

}//eof showButton

/*********************************************************/
public  void check(int num1){
for(ii=0;ii<=7;ii++){
   for(jj=1;jj<=3;jj++){
        if(a[ii][jj]==num1){ a[ii][4]=11;  }

   }//eof for jj

}//eof for ii
}//eof check
/**********************************************************/

/*********************************************************/

public void complogic(int num){

 for(i=0;i<=7;i++){
   for(j=1;j<=3;j++){
      if(a[i][j]==num){  a[i][0]=11; a[i][4]=10;    }
	  }
  }
   for(i=0;i<=7;i++){              // for 1
     set=true;  		   
   if(a[i][4]==10){               //if 1 
       int count=0;
       for(j=1;j<=3;j++){         //for 2 
           if(b[(a[i][j]-1)].getIcon()!=null){ //if 2
             count++;
               }                        //eof if 2
            else{ yesnull=a[i][j]; }
        }                               //eof for 2
      if(count==2){                     //if 2
         b[yesnull-1].setIcon(ic2); 
         this.check(yesnull); set=false;break;
         }                                  //eof if 2
      }                                     //eof if 1
      else
	  if(a[i][0]==10){
                for(j=1;j<=3;j++){         //for2
                    if(b[(a[i][j]-1)].getIcon()==null){ //if 1
                      b[(a[i][j]-1)].setIcon(ic2);
                        this.check(a[i][j]);
                         set=false;
						 break;
                    }                         //eof if1
                }                             //eof for 2
                if(set==false)
                      break;                                                       
            }//eof elseif

    if(set==false)
         break;    
 }//eof for 1


}//eof complogic


/*********************************************************/

TTT1(){
super("tic tac toe by ashwani");

CheckboxGroup cbg=new CheckboxGroup();
c1=new Checkbox("vs computer", cbg, false);
c2=new Checkbox("vs friend", cbg, false);
c1.setBounds(120, 80, 100, 40);
c2.setBounds(120, 150, 100, 40);
add(c1); add(c2);
c1.addItemListener(this);
c2.addItemListener(this);


state=true;type=true;set=true;
ic1=new ImageIcon("ic1.jpg");
ic2=new ImageIcon("ic2.jpg");
ic11=new ImageIcon("ic11.jpg");
ic22=new ImageIcon("ic22.jpg");

setLayout(null);
setSize(330, 450);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}//eof constructor

/*************************************************************/
public void itemStateChanged(ItemEvent e){
 if(c1.getState())
  { 
 type=false;
 }

 else if(c2.getState())
  { type=true;
  }
remove(c1);remove(c2);
 repaint(0, 0, 330, 450);
 showButton();
}//eof itemstate
/************************************************************/

public void actionPerformed(ActionEvent e){
/********************************/
if(type==true)//logicfriend
{
if(e.getSource()==reset){
 for(i=0;i<=8;i++){
   b[i].setIcon(null);
  }//eof for  
}
else{ 
  for(i=0;i<=8;i++){
      if(e.getSource()==b[i]){
       
           if(b[i].getIcon()==null){
              if(state==true){ icon=ic2;         
               state=false;} else{ icon=ic1; state=true; }
            b[i].setIcon(icon);
            }
       } 
  }//eof for
}//eof else
}//eof logicfriend
else if(type==false){                           //  complogic
      if(e.getSource()==reset){
          for(i=0;i<=8;i++){
            b[i].setIcon(null);
          }//eof for 
       for(i=0;i<=7;i++)
        for(j=0;j<=4;j++)
		a[i][j]=a1[i][j];   //again initialsing array
        }
        else{  //complogic
            for(i=0;i<=8;i++){
               if(e.getSource()==b[i]){
                  if(b[i].getIcon()==null){ 
                           b[i].setIcon(ic1);  
                            if(b[4].getIcon()==null){
						      b[4].setIcon(ic2);
							  this.check(5);
							  } else{
						         this.complogic(i);
								 }
                    }
                 }
             }//eof for
        }
    }//eof complogic

for(i=0;i<=7;i++){
  
  Icon icon1=b[(a[i][1]-1)].getIcon();
  Icon icon2=b[(a[i][2]-1)].getIcon();
  Icon icon3=b[(a[i][3]-1)].getIcon();
     if((icon1==icon2)&&(icon2==icon3)&&(icon1!=null)){
               if(icon1==ic1){ 
                 b[(a[i][1]-1)].setIcon(ic11);
                 b[(a[i][2]-1)].setIcon(ic11); 
                 b[(a[i][3]-1)].setIcon(ic11);
	JOptionPane.showMessageDialog(TTT1.this, "!!!YOU won!!! click reset");	
		 break;
                   }
             else if(icon1==ic2){ 
             b[(a[i][1]-1)].setIcon(ic22);
             b[(a[i][2]-1)].setIcon(ic22);
             b[(a[i][3]-1)].setIcon(ic22); 
               JOptionPane.showMessageDialog(TTT1.this, "won! click reset");
                break;			 
               }
         }
    }  


}//eof actionperformed
/************************************************************/

public static void main(String []args){
new TTT1();
}//eof main
}//eof class
赞(0)
未经允许不得转载:srcmini » 井字游戏的例子

评论 抢沙发

评论前必须登录!