2017-01-21 23 views
-1

私はAPコンピュータサイエンスの学生です。私はそのクラスの授業に援助が必要です。私の任命は、Eclipseを使用して簡単なGUIまたはゲームを作成することです。シンプルなプレイヤーとプレイヤーのチック・タック・トゥー・ゲームを作りましたが、自分のGUI用の「リセット」ボタンの作成方法はわかりません。私は何度も試してみましたが、それを私のGUI上で動作させたり表示したりすることはできません。私は機能リセットボタンを実装する方法についてのいくつかの指摘に感謝したいので、GUIを何度も終了して再度再生を開始する必要はありません。これまでに書いたコードはここにあります。GUIのリセットボタンを実装するにはどうすればよいですか?

package gui; 

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

public class TicTacToeGUI implements ActionListener 
{ 
    JFrame window = new JFrame("Tic-Tac-Toe"); 
    JButton[] button; 
    JButton reset = new JButton("Reset"); 
    String letter = ""; 
    public int count = 0; 
    public boolean win = false; 

    public TicTacToeGUI() 
    { 
     button = new JButton[9]; 
     window.setSize(300,300); 
     window.setLayout(new GridLayout(3,3)); 
     JButton dummy = new JButton(""); 
     Font font = dummy.getFont(); 
     Font bigFont = font.deriveFont(font.getSize2D() * 5.0f); 
     JButton reset = new JButton("Reset"); 
     for(int i = 0; i < 9; i++) 
     { 
      button[i] = new JButton(""); 
      button[i].setFont(bigFont); 
      button[i].addActionListener(this); 
      window.add(button[i]); 
     } 
     window.setVisible(true); 
    } 

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

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

     Object but = a.getSource(); 

     for(int i = 0; i < 9; i++) 
     { 
      if(but == button[i]) 
      { 
       button[i].setText(letter); 
       button[i].setEnabled(false); 
       break; 
      } 
     } 

     if(button[0].getText() == button[1].getText() && button[1].getText() == button[2].getText() && button[0].getText() != "") 
     { 
      win = true; 
     } 
     else if(button[3].getText() == button[4].getText() && button[4].getText() == button[5].getText() && button[3].getText() != "") 
     { 
      win = true; 
     } 
     else if(button[6].getText() == button[7].getText() && button[7].getText() == button[8].getText() && button[6].getText() != "") 
     { 
      win = true; 
     } 
     else if(button[0].getText() == button[3].getText() && button[3].getText() == button[6].getText() && button[0].getText() != "") 
     { 
      win = true; 
     } 
     else if(button[1].getText() == button[4].getText() && button[4].getText() == button[7].getText() && button[1].getText() != "") 
     { 
      win = true; 
     } 
     else if(button[2].getText() == button[5].getText() && button[5].getText() == button[8].getText() && button[2].getText() != "") 
     { 
      win = true; 
     } 
     else if(button[0].getText() == button[4].getText() && button[4].getText() == button[8].getText() && button[0].getText() != "") 
     { 
      win = true; 
     } 
     else if(button[2].getText() == button[4].getText() && button[4].getText() == button[6].getText() && button[2].getText() != "") 
     { 
      win = true; 
     } 
     else 
     { 
      win = false; 
     } 

     if(win == true) 
     { 
      JOptionPane.showMessageDialog(null, letter + " WINS!"); 
     } 
     else if(count == 9 && win == false) 
     { 
      JOptionPane.showMessageDialog(null, "Tie Game!"); 
     } 
    } 

    public static void main(String[] args) 
    { 
     new TicTacToeGUI(); 
    } 
} 

答えて

0

あなたはこれをしようとする場合があります:もちろん

window.setLayout(new BorderLayout()); 
    JPanel panel = new JPanel(new GridLayout(3, 3)); 
    window.add(panel, BorderLayout.CENTER); // add panel to window center 
    window.add(reset, BorderLayout.SOUTH); // add reset button to window bottom 

を、あなたはないwindowに、今panelにあなたの9つのボタンを追加する必要があります。

しかし、ゲーム終了時にユーザーがダイアログを確認した後に自動的にリセットするのはなぜですか?

0

ネクタイまたは勝利後にボードをリセットします。リセット方法の例。それ以外の場合は、これを行うためのボタンを保持するためにフレーム上に空き領域を確保する必要があります。

if(win == true) 
{ 
    JOptionPane.showMessageDialog(null, letter + " WINS!"); 
    ResetBoard(); 
} 
else if(count == 9 && win == false) 
{ 
    JOptionPane.showMessageDialog(null, "Tie Game!"); 
    ResetBoard(); 
} 
:チェックはプレイヤーが勝ったか、ゲームが以下のように引き分けで終わるかどうかを確認するために行われたとき

private void ResetBoard() { 
    for(int i = 0; i < 9; i++) { 
    button[i].setText(""); 
    button[i].setEnabled(true); 
    count = 0; 
    } 
} 

そして、この方法を使用します

関連する問題