I have never been so lost in a program in my life.
How in the world do I make the following appear? keep in mind this is a project for my university so I am not allowed to use SceneBuilder.
First I need to place buttons when distributing the Cards (Made a button to distribute the cards). I make an object of the My Game class and it distributes by calling the constructor.
Here is the Constructor
public Game(ArrayList<Player> players)//9.2 description
{
this.deck = new ArrayList<Card>();
this.players = new ArrayList<Player>();
this.players = players;
this.currentDrawn = 0;
buildDeck();
distribute();
discardPile.add(deck.remove(deck.size() - 1));
}
after it calls I add 7 new buttons (The method distribute(); distributes for each player 7 cards)
when this happens it shows the button as a reference to the object, not the name, I Override ToString Method but it just won't work.
I also cannot figure out how to make those new buttons have an effect when I click them, considering they are not declared like I usually declare them.
Here is the part for adding the cards in JavaFX
//Cards
Button distributeCards = new Button("distribute cards");
Button playerCards = new Button();
String name = username.getText();
this.userCards = players.get(0).getHand();
Label player1Name = new Label(username.getText());
Label player2Name = new Label("Player 2");
Label player3Name = new Label("Player 3");
Label player4Name = new Label("Player 4");
HBox rootForgameScene = new HBox(distributeCards);
rootForgameScene.getChildren().add(player1Name);
this.gameScene = new Scene(rootForgameScene);
player2Name.setAlignment(Pos.CENTER_LEFT);
player3Name.setAlignment(Pos.CENTER_RIGHT);
player4Name.setAlignment(Pos.TOP_CENTER);
distributeCards.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
//new Game(players).distribute();
distributeCards.setVisible(false);
Game game = new Game(players);
game.getLatestDiscard();
Label discardPileLabel = new Label(game.getLatestDiscard().toString());
rootForgameScene.getChildren().add(new Label(game.getLatestDiscard().toString()));
rootForgameScene.setPadding(new Insets(10));
System.out.println(discardPileLabel.getText());
if (players.size() == 2)
player2Name.setAlignment(Pos.CENTER_LEFT);
else if(players.size() == 3) {
player2Name.setAlignment(Pos.CENTER_LEFT);
player3Name.setAlignment(Pos.CENTER_RIGHT);
}
else if(players.size() == 4) {
player4Name.setAlignment(Pos.TOP_CENTER);
player3Name.setAlignment(Pos.CENTER_RIGHT);
}
for(int i = 0; i < players.get(0).getHand().size(); i++){
rootForgameScene.getChildren().add(new Button(((userCards).toString())));
discardPileLabel.setAlignment(Pos.CENTER);
System.out.println(playerCards);
}
Button discardPileButton = new Button(game.getLatestDiscard().toString());
discardPileLabel.setAlignment(Pos.CENTER);
Button EndTurn = new Button("End Turn");
EndTurn.setAlignment(Pos.BOTTOM_CENTER);
rootForgameScene.getChildren().add(discardPileButton);
rootForgameScene.getChildren().add(EndTurn);
}
});
And here is the ToString Method
public String toString() {
for (int i = 0; i < userCards.size(); i++){
if(userCards.get(i) instanceof NumberCard){
if (userCards.get(i).getColor().equals(Color.BLUE))
return "BLUE " + ((NumberCard) userCards.get(i)).getNumber();
else if(userCards.get(i).getColor().equals(Color.RED))
return "RED " + ((NumberCard) userCards.get(i)).getNumber();
else if(userCards.get(i).getColor().equals(Color.GREEN))
return "GREEN " + ((NumberCard) userCards.get(i)).getNumber();
else if (userCards.get(i).getColor().equals(Color.YELLOW))
return "YELLOW " + ((NumberCard) userCards.get(i)).getNumber();
}
else if (userCards.get(i) instanceof ChangeCard)
return "WildCard Type\nChange Card";
else if(userCards.get(i) instanceof HitAndChangeCard)
return "WildCArd Type\n Hit & ChangeCard";
else if(userCards.get(i) instanceof SkipCard){
if(userCards.get(i).getColor().equals(Color.BLUE))
return "BLUE Skip Card";
else if(userCards.get(i).getColor().equals(Color.GREEN))
return "GREEN Skip Card";
else if(userCards.get(i).getColor().equals(Color.RED))
return "RED Skip Card";
else if(userCards.get(i).getColor().equals(Color.YELLOW))
return "Yellow Skip Card";
}
else if(userCards.get(i) instanceof HitCard){
if(userCards.get(i).getColor().equals(Color.BLUE))
return "HitCard Skip Card";
else if(userCards.get(i).getColor().equals(Color.GREEN))
return "HitCard Skip Card";
else if(userCards.get(i).getColor().equals(Color.RED))
return "HitCard Skip Card";
else if(userCards.get(i).getColor().equals(Color.YELLOW))
return "HitCard Skip Card";
}
}
return "???";
}
I apologize if its a lot of code to look through but I can't find any other solution and I need to submit this in 5 hours
Thank you!