HW7 Tic Tac Toe CSS 161 Fundamentals of Computing By Hansel
     HW7: Tic Tac Toe CSS 161 Fundamentals of Computing By: Hansel Ong Summary For this last homework of CSS 161, let\'s work on something other than paystubs. Let\'s work on Tic Tac Toe. You will not have to implement the full game functionality, but you need to create a \"TicTacToeBoard\" object that implements some basic logic. Estimated Work Needed This assignment is challenging and requires a lot of thinking/problem solving. Start early and complete this work early so you can focus on studying for the final exam. Skills Expected All the skills from previous Assignment (s) Multi-Dimensional Array Equals and toString overrides Try/Catch Exceptions Switch Statements Assignment Description You are expected to create at least one class representing a Tic Tac Toe board and its corresponding Driver class. However, you are welcome to create additional class objects as you d like. Notes: All properties MUST be private Getters and Setters must be implemented as appropriate Class Design: Tic Tac Toe Board Required Properties: A 3x3 matrix (2D array) where each element contains either an \"O\" or an \"X\" A count of the number of moves executed so far Required Methods A method (or set of methods) that allows user to change an element that is not yet an \"o\" or an \"X\" into either an \"O\" or an \"X\" o f the last move was an \"O\" only allow \"X\" to be placed (and vice versa o Don\'t allow anything other than \"O\" and \"X\" to be placed o Don\'t \"overwrite\" (replace) an existing \"O\" or \"X\" o Game \"ends\" either when user wins (see \"Optional Challenge or when all elements have been filled with either \"O\" or \"X\" 
 
  
  Solution
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

