leendert/src/main/java/nl/minkema/leendert/Game.java

125 lines
4.3 KiB
Java
Raw Normal View History

package nl.minkema.leendert;
2017-03-23 18:16:53 +01:00
import javafx.event.EventHandler;
2017-03-31 14:09:13 +02:00
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
2017-03-23 18:16:53 +01:00
import javafx.scene.input.MouseEvent;
2017-04-14 16:14:20 +02:00
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.Pane;
2017-04-11 12:00:54 +02:00
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import java.util.ArrayList;
import java.util.Collections;
2017-03-05 11:55:30 +01:00
import java.util.HashMap;
/**
* @author J0QUE
* @version 1.0
*/
public class Game extends Pane {
2017-03-05 11:55:30 +01:00
public static final HashMap<Integer, Integer> specials = new HashMap<>();
public static int[][] locations;
public static ArrayList<Player> players = new ArrayList<>();
2017-04-14 16:14:20 +02:00
/**
* De constructor voor de game
*/
public Game() {
2017-04-14 16:14:20 +02:00
//We willen dat de volgorde van de spelers willekeurig is.
Collections.shuffle(players);
2017-04-14 16:14:20 +02:00
//Dit is de achtergrond met het bord er op.
Image bord = new Image("/images/bord.png");
ImageView view = new ImageView(bord);
view.setPreserveRatio(true);
view.setFitHeight(800);
2017-04-14 12:49:26 +02:00
view.setX(0);
view.setY(0);
this.getChildren().add(view);
2017-04-14 16:14:20 +02:00
//Dit zorgt voor de nummers in de vakjes
for (int i = 0, locationsLength = locations.length; i < locationsLength; i++) {
int[] k = locations[i];
2017-04-14 16:14:20 +02:00
//getChildren().add(new Circle(k[0], k[1], 5, Color.RED));
Text text = new Text(k[0] - 5, k[1] - 10, String.valueOf(i));
text.setFill(Color.GREENYELLOW);
getChildren().add(text);
}
2017-03-23 18:16:53 +01:00
2017-04-14 16:14:20 +02:00
//Dit was om de locaties van de vakjes te bepalen.
2017-03-23 18:16:53 +01:00
this.setOnMouseClicked(new EventHandler<MouseEvent>() {
int i = 0;
@Override
public void handle(MouseEvent event) {
//System.out.printf("%d: %d,%d%n", i++, (int) event.getSceneX(), (int) event.getSceneY());
2017-03-23 18:16:53 +01:00
}
});
2017-04-14 16:14:20 +02:00
//Dit is de afbeelding van de speler die mag gooien
ImageView playerTurn = new ImageView();
playerTurn.setX(1000);
playerTurn.setY(50);
playerTurn.setPreserveRatio(true);
2017-03-31 14:09:13 +02:00
playerTurn.setFitHeight(400);
2017-04-14 16:14:20 +02:00
//Hier staat de naam van het karaker in.
2017-03-31 14:09:13 +02:00
Label l = new Label();
2017-04-14 11:09:40 +02:00
l.setTranslateX(965);
2017-03-31 14:09:13 +02:00
l.setTranslateY(370);
2017-03-31 14:09:13 +02:00
this.getChildren().add(playerTurn);
this.getChildren().addAll(l);
2017-04-14 16:14:20 +02:00
//Dit is onze dobbelsteen
Dice dice = new Dice(1100, 700);
this.getChildren().add(dice);
2017-04-14 16:14:20 +02:00
//Dit is de knop van de dobbelsteen.
this.getChildren().add(Menu.createButton("Gooi", 1100, 650, e -> {
2017-04-14 16:14:20 +02:00
//We kijken wie de volgende speler is
Player p = players.get(Player.getNextActive());
2017-04-14 16:14:20 +02:00
//En rollen een dobbelsteen
int roll = dice.roll();
2017-04-14 16:14:20 +02:00
//Dan verplaatsen we de speler
p.move(roll);
2017-04-14 16:14:20 +02:00
//Als de speler 4 gooit mag hij/zij nog een keer
if (roll == 4) Player.four();
2017-04-14 16:14:20 +02:00
//We zoeken uit wie er hier na mag
2017-03-31 14:09:13 +02:00
int next = players.get(Player.getNextActive()).getCh();
2017-04-14 16:14:20 +02:00
//Zetten die afbeelding als de speler die mag gooien
2017-03-31 14:09:13 +02:00
playerTurn.setImage(Menu.images[next]);
2017-04-14 16:14:20 +02:00
//En doen hetzelfde met de naam van de speler
2017-04-14 11:09:40 +02:00
l.setText(Menu.names[next] + " is aan de beurt!");
2017-04-14 16:14:20 +02:00
//En zetten het weer terug naar de vorige speler
Player.four();
}));
2017-04-14 16:14:20 +02:00
//Dit is de achtergrond
this.setBackground(new Background(new BackgroundFill(Color.GREENYELLOW, null, null)));
//Dit zijn alle spelers
for (Player p : players) {
this.getChildren().add(p.getImageView());
}
2017-03-05 11:55:30 +01:00
playerTurn.setImage(Menu.images[players.get(1).getCh()]);
2017-04-14 11:09:40 +02:00
l.setText(Menu.names[players.get(1).getCh()] + " is aan de beurt!");
2017-04-14 16:14:20 +02:00
//En hier is de achtergrondmuziek, die het soms wel en soms niet doet...
2017-04-11 12:00:54 +02:00
String loc = this.getClass().getResource("/music/game.mp3").toString();
Media music = new Media(loc);
MediaPlayer menuplayer = new MediaPlayer(music);
menuplayer.setCycleCount(Integer.MAX_VALUE);
menuplayer.setVolume(0.6f);
menuplayer.setAutoPlay(true);
menuplayer.play();
menuplayer.play();
}
}