2017-05-22 4 views
1

私は、Javaを初めて使い、簡単なゲームを作成しようとしています。ゲーム自体は完成していますが、タイトル画面の作成には問題があります。私が欲しいのは、実際のゲームの前に開く600 x 600のタイトル画面で、startというボタンがあります。私はこれでどうやって行くのか、私はいくつかの助けを得ることができますか分からない。ゲームチック・タック・トー・ゲームの開始メニュー

私のコードは

package tictactoemain; 

import javax.swing.JFrame; 

/** 
* TicTacToe Assignment 
* @author Ekin 
* 
*/ 
public class TicTacToe 

{ 
    // Creating a (600, 600) window that can stop the game when he window is closed 
    public static void main(String[] args) 
    { 
     JFrame ticTacToe = new TicTacToeFrame(); 
     ticTacToe.setTitle("Ekin's Tic-Tac-Toe Game!"); 
     ticTacToe.setSize(600, 600); 
     ticTacToe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     ticTacToe.setLocationRelativeTo(null); 
     ticTacToe.setVisible(true); 
    } 


}// end of TicTacToe 
package tictactoemain; 

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.border.LineBorder; 
/** 
* JFrame to hold TicTacToe board. 
*/ 
public class TicTacToeFrame extends JFrame 
{ 

    private static final long serialVersionUID = 1L; 

// Indicate whose turn it is 
    private char whoseTurn = 'X'; 
    private boolean gameOver = false; 

    // Create cell grid using an Array 
    private Cell[][] cells = new Cell[3][3]; 

    // Create a status label 
    JLabel jlblStatus = new JLabel("X's turn to play"); 

    /** 
    * No-argument Constructor 
    * @return 
    */ 
    public TicTacToeFrame() 
    { 
     // Panel to hold cells 
     JPanel panel = new JPanel(new GridLayout(3, 3, 0, 0)); 
     for (int i = 0; i < 3; i++) 
      for (int j = 0; j < 3; j++) 
       panel.add(cells[i][j] = new Cell()); 

     panel.setBorder(new LineBorder(Color.red, 1)); 
     jlblStatus.setBorder(new LineBorder(Color.yellow, 1)); 

     add(panel, BorderLayout.CENTER); 
     add(jlblStatus, BorderLayout.SOUTH); 
    } 
    // Determine if it's a tie 
    /** 
    * Determine if game board is full. 
    * @return True, if game board is full. Otherwise, false. 
    */ 
    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; 
    } 
    // Check to see if a player (Token) has won 
    /** 
    * Determines if a given token has won. 
    * @param token Token to test for winning 
    * @return True, if the token has won. Otherwise, false. 
    */ 
    public boolean isWon(char token) 
    { 
     // check rows 
     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; 
      } 

     // check columns 
     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; 
      } 
     // check diagonals 
     if ((cells[0][0].getToken() == token) 
       && (cells[1][1].getToken() == token) 
       && (cells[2][2].getToken() == token)) 
      { 
       return true; 
      } 

     if ((cells[0][2].getToken() == token) 
       && (cells[1][1].getToken() == token) 
       && (cells[2][0].getToken() == token)) 
      { 
       return true; 
      } 

     return false; 
    } 

    /** 
    * Defines a cell in a TicTacToe game board. 
    */ 
    public class Cell extends JPanel 
    { 
     /** 
     * 
     */ 
     private static final long serialVersionUID = 1L; 
    // token of this cell 
     private char token = ' '; 

     /** 
     * Constructor 
     */ 
     public Cell() 
     { 
      setBorder(new LineBorder(Color.black, 1)); 
      addMouseListener(new MyMouseListener()); 
     } 

     /** 
     * Gets the token of the cell. 
     * @return The token value of the cell. 
     */ 
     public char getToken() 
     { 
      return token; 
     } 

     /** 
     * Sets the token of the cell. 
     * @param c Character to use as token value. 
     */ 
     public void setToken(char c) 
     { 
      token = c; 
      repaint(); 
     } 

     @Override 
     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); 
      } 
     } 
     // MouseListener to listen for a click to place a token 
     private class MyMouseListener extends MouseAdapter 
     { 
      @Override 
      public void mouseClicked(MouseEvent e) 
      { 
       if (gameOver) 
        return; 

       // if the cell is empty and the game is not over 
       if (token == ' ' && whoseTurn != ' ') 
        setToken(whoseTurn); 

       // Check game status 
       if (isWon(whoseTurn)) 
       { 
        jlblStatus.setText(whoseTurn + " won! Game over!"); 
        whoseTurn = ' '; 
        gameOver = true; 
       } 
       else if (isFull()) 
       { 
        jlblStatus.setText("Tie game! Game over!"); 
        whoseTurn = ' '; 
        gameOver = true; 
       } 
       else 
       { 
        whoseTurn = (whoseTurn == 'X') ? 'O' : 'X'; 
        jlblStatus.setText(whoseTurn + "'s turn to play."); 
       } 
      } 
     } // End class MyMouseListener 
    } 
} // End class TicTacToeFrame 
+0

https://stackoverflow.com/questions/16134549/how-to-make-a-splash-screen-for-guiまたはJavaチュートリアルを試してみてください[スプラッシュスクリーンを作成する方法](http://docs.oracle.com/javase/tutorial/uiswing/misc/splashscreen.html)... O'Reillyには、[単純な例](http:// examples .oreilly.com/jswing2/code/ch08/SplashScreen.java) –

答えて

0

注怒鳴るです:私は、スタート画面で自分の絵アプリからコードをコピーしていますこのコードをコピー&ペーストしないでください。自分で書く! :)

私は、ボタンにActionListenerを追加し、ボタンをクリックして開始画面を閉じてメイン画面を開くように指示します。ここでのコード例では、(私のペイントアプリから)です:

private class StartListener implements ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     startFrame.setVisible(false); //close start window 
     paintApp.go(); //the go function contains code for opening the 
         //main window 
         //the paintApp is an object that contains both 
         //JFrames, starting and main 
    } 
} 
関連する問題