Question: Hello, I need help with a program im doing with JavaFX on Netbeans. It's a Tic-Tac-Toe game with two phases, where it starts with a

Hello, I need help with a program im doing with JavaFX on Netbeans.

It's a Tic-Tac-Toe game with two phases, where it starts with a screen that allows you to name both players and have a start button.

Then in the second window, it will have the game board on the left side and on the right side, it should show the players names that were inputted from the start screen and their name should change to red whenever it is their turn.

Then finally, whoever wins, a popup shows up saying that player won.

I have the basics of it down, but I need help with bringing the players names inputted into the first screen to show up next to the board and how to make their name light up whenever it is their turn.

I gave the code below, Thank you

Main

TicTacToe.java

package TicTacToe;

import javafx.application.Application; import javafx.stage.Stage;

public class TicTacToe extends Application { @Override public void start(Stage pstage) throws Exception { pstage.setWidth(400); pstage.setMaxWidth(400); pstage.setHeight(250); pstage.setMaxHeight(250); pstage.show(); pstage.centerOnScreen(); pstage.setTitle("TicTacToe"); First.welcomePlayers(pstage); }

public static void main(String[] args) { Application.launch(args); } }

GameBoard.Java

package TicTacToe;

import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.stage.Stage;

public class GameBoard { private boolean aTurn = false; private Button[] but = new Button[9]; private int cot = 0; private final Stage st; private final Scene sce;

public GameBoard(Stage stage) { ActionToButtons(but); GridPane GP = new GridPane(); GP.setPadding(new Insets(20)); int x=0; for (int y=0;y<3;y++){ for (int j=0;j<3;j++) { if (x > 8) { break; } GP.add(but[x], y, j); x++; } } sce = new Scene(GP, 230, 230); stage.setScene(sce); stage.show(); stage.setResizable(false); this.st = stage; }

private void ActionToButtons(Button[] bt) { for (int i = 0; i < 9; i++) { Button b = new Button(); bt[i] = b; b.setPrefWidth(80); b.setMaxWidth(80); b.setPrefHeight(80); b.setMaxHeight(80); Turn(b); } } public Button[] getButtons(){ return but; }

private void Turn(Button button) { button.setOnAction((ActionEvent arg0) -> { String win = ""; if (button.getText().isEmpty()) { if (!aTurn) { button.setText("X"); aTurn = true; } else { button.setText("O"); aTurn = false; } win = button.getText(); cot++; } if(but[0].getText().equals(win) && but[1].getText().equals(win) && but[2].getText().equals(win) || but[3].getText().equals(win) && but[4].getText().equals(win) && but[5].getText().equals(win) || but[6].getText().equals(win) && but[7].getText().equals(win) && but[8].getText().equals(win) || but[0].getText().equals(win) && but[3].getText().equals(win) && but[6].getText().equals(win) || but[1].getText().equals(win) && but[4].getText().equals(win) && but[7].getText().equals(win) || but[2].getText().equals(win) && but[5].getText().equals(win) && but[8].getText().equals(win) || but[0].getText().equals(win) && but[4].getText().equals(win) && but[8].getText().equals(win) || but[2].getText().equals(win) && but[4].getText().equals(win) && but[6].getText().equals(win)) {

showUp p = new showUp(st); p.setMessage(win + " Wins!"); } else if (cot >= 9){ showUp p= new showUp(st);

p.setMessage("Draw"); } } ); } }

Welcome.java

package TicTacToe;

import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.input.KeyEvent; import javafx.scene.layout.GridPane; import javafx.stage.Stage;

public abstract class Welcome {

public static void welcomePlayers(Stage primaryStage) { GridPane GD = new GridPane(); Pos alignment = null; GD.setAlignment(alignment); GD.setPadding(new Insets(20));

Label Fname = new Label("Player 1"); TextField Ftext = new TextField(); Label Sname = new Label("Player 2"); TextField Stext = new TextField(); Label Err = new Label("");

Button letsPlayBtn = new Button("Start"); GridPane.setMargin(Fname, new Insets(10)); GridPane.setMargin(Ftext, new Insets(10)); GridPane.setMargin(Sname, new Insets(10)); GridPane.setMargin(Stext, new Insets(10)); GridPane.setMargin(letsPlayBtn, new Insets(10)); GridPane.setMargin(Err, new Insets(10));

GD.add(Fname, 0, 0); GD.add(Ftext, 1, 0); GD.add(Sname, 0, 1); GD.add(Stext, 1, 1); GD.add(Err, 0, 2); GD.add(letsPlayBtn, 0, 3); GridPane.setColumnSpan(Err, 2); GridPane.setColumnSpan(letsPlayBtn, 2);

Scene Fscene = new Scene(GD); primaryStage.setScene(Fscene);

letsPlayBtn.setOnAction(new EventHandler() { @Override public void handle(ActionEvent arg0) { if (Ftext.getText().isEmpty() || Stext.getText().isEmpty()) { Err.setText("Players have not finished naming themselves"); Err.setStyle("-fx-text-fill: red"); Ftext.requestFocus(); return; } Board board = new Board(primaryStage); } }); Ftext.setOnKeyPressed((KeyEvent arg0) -> { Err.setText(""); }); Stext.setOnKeyPressed((KeyEvent arg0) -> { Err.setText(""); }); } }

Player.java

package TicTacToe;

public enum Player { Fname("-fx-text-fill: darkred;"), Sname("-fx-text-fill: darkblue;");

private final String style; Player(String st) { this.style = st; }

public String getStyle() { return style; } }

showUp.java

package ttt2;

import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.stage.Stage;

public class showUp {

private final Label show; private final Button Quit; private final Button CButton; private final Scene sc; private final VBox lay;

public showUp(Stage st) { show = new Label(); show.setStyle("-fx-font-color:red"); Quit = new Button("Quit"); CButton = new Button("Play Again"); lay = new VBox(); lay.setAlignment(Pos.CENTER); VBox.setMargin(show, new Insets(10)); VBox.setMargin(Quit, new Insets(10)); VBox.setMargin(CButton, new Insets(10)); lay.getChildren().add(show); lay.getChildren().add(Quit); lay.getChildren().add(CButton); sc = new Scene(lay); st.setScene(sc);

Quit.setOnAction((ActionEvent arg0) -> { st.close(); }); CButton.setOnAction((ActionEvent arg0) -> { GameBoard gameboard = new GameBoard(st); }); }

public void setMessage(String message) { this.show.setText(message); } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!