2013-04-20 98 views
-3

这里是java中的tic tac toe游戏,有人可以解释如何保存X多少次以及O多少次到文本文件中,我看过类似的线程,但是我不知道如何使它在这个案件。对不起,重复,不知道如何更新最后一个问题。如何将结果保存到文本文件中?

package xo2; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class XO2 implements ActionListener { 
private int[][] winningCombination = new int[][] { 
     {0, 1, 2}, 
        {3, 4, 5}, 
        {6, 7, 8}, 
     {0, 3, 6}, 
        {1, 4, 7}, 
        {2, 5, 8}, 
     {0, 4, 8}, 
        {3, 4, 6}    
}; 
private JFrame window = new JFrame("Tic Tac Toe"); 
private JButton buttons[] = new JButton[9]; 
private int count = 0; 
private String letter = ""; 
private boolean win = false; 

public XO2(){ 

    window.setSize(300,300); 
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    window.setLayout(new GridLayout(3,3)); 


    for(int i=0; i<9; i++){ 
     buttons[i] = new JButton(); 
     window.add(buttons[i]); 
     buttons[i].addActionListener(this); 
    } 


    window.setVisible(true); 
} 


public void actionPerformed(ActionEvent a) { 
    count++; 


    if(count % 2 == 0){ 
     letter = "O"; 
    } 
    else { 
     letter = "X"; 
    } 


    JButton pressedButton = (JButton)a.getSource(); 
    pressedButton.setText(letter); 
    pressedButton.setEnabled(false); 


    for(int i=0; i<8; i++){ 
     if(buttons[winningCombination[i][0]].getText().equals(buttons[winningCombination[i][1]].getText()) && 
       buttons[winningCombination[i][1]].getText().equals(buttons[winningCombination[i][2]].getText()) && 
       !buttons[winningCombination[i][0]].getText().equals("")){ 
      win = true; 
     } 
    } 


    if(win == true){ 
     JOptionPane.showMessageDialog(null, letter + " Won!"); 
     System.exit(0); 
    } else if(count == 9 && win == false){ 
     JOptionPane.showMessageDialog(null, "Draw!"); 
     System.exit(0); 
    } 
} 

public static void main(String[] args){ 
    XO2 starter = new XO2(); 
} 

}

+0

我希望有一个按钮:100000000000%重复。 – Maroun 2013-04-20 16:06:24

+0

抱歉maroun maroun,im在这个论坛新 – user2302407 2013-04-20 16:54:00

回答

0

更改代码这个

编辑的代码3

import java.awt.*; 
import java.awt.event.*; 
import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.StringWriter; 

import javax.swing.*; 

     public class XO2 implements ActionListener { 
     private int[][] winningCombination = new int[][] { 
       {0, 1, 2}, 
          {3, 4, 5}, 
          {6, 7, 8}, 
       {0, 3, 6}, 
          {1, 4, 7}, 
          {2, 5, 8}, 
       {0, 4, 8}, 
          {3, 4, 6}    
     }; 
     private JFrame window = new JFrame("Tic Tac Toe"); 
     private JButton buttons[] = new JButton[9]; 
     private int count = 0; 
     private String letter = ""; 
     private boolean win = false; 

     public XO2(){ 

      window.setSize(300,300); 
      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      window.setLayout(new GridLayout(3,3)); 


      for(int i=0; i<9; i++){ 
       buttons[i] = new JButton(); 
       window.add(buttons[i]); 
       buttons[i].addActionListener(this); 
      } 


      window.setVisible(true); 
     } 


     public void actionPerformed(ActionEvent a) { 
      count++; 


      if(count % 2 == 0){ 
       letter = "O"; 
      } 
      else { 
       letter = "X"; 
      } 


      JButton pressedButton = (JButton)a.getSource(); 
      pressedButton.setText(letter); 
      pressedButton.setEnabled(false); 


      for(int i=0; i<8; i++){ 
       if(buttons[winningCombination[i][0]].getText().equals(buttons[winningCombination[i][1]].getText()) && 
         buttons[winningCombination[i][1]].getText().equals(buttons[winningCombination[i][2]].getText()) && 
         !buttons[winningCombination[i][0]].getText().equals("")){ 
        win = true; 
       } 
      } 


      if(win == true){ 
       JOptionPane.showMessageDialog(null, letter + " Won!"); 
       try { 
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("c:\\calc\\output.txt", true))); 
        out.println(letter + "Won!"); 
        out.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       System.exit(0); 
      } else if(count == 9 && win == false){ 
       JOptionPane.showMessageDialog(null, "Draw!"); 
       try { 
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("c:\\calc\\output.txt", true))); 
        out.println("Draw!"); 
        out.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       System.exit(0); 
      } 
     } 

     public static void main(String[] args){ 
      XO2 starter = new XO2(); 
     } 

} 

并确保你已经加入这个

之前创建要写入文本文件

我添加的代码标有双星号

希望这有助于

+0

你确定你创建的文件,并在程序中添加正确的路径,因为它对我有用 – 2013-04-20 17:27:19

+0

是的我改变了位置desctop和我做output.txt文件 – user2302407 2013-04-20 17:30:17

+0

你在每个文件夹之间添加双反斜杠,就像这个“c:\\ calc \\ output.txt”一样,因为如果你做单曲没有任何反应, – 2013-04-20 17:32:15

相关问题