Added comments
This commit is contained in:
parent
a339a6724b
commit
75a2d24210
21
JavaFX.iml
21
JavaFX.iml
|
@ -32,26 +32,5 @@
|
|||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-io:commons-io:1.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: de.codecentric.centerdevice:javafxsvg:1.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-parser:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: xalan:xalan:2.7.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-xml:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.3.04" level="project" />
|
||||
<orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-io:commons-io:1.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
|
||||
</component>
|
||||
</module>
|
|
@ -1,2 +1,11 @@
|
|||
# Leendert
|
||||
Het spectaculaire tuinavontuur
|
||||
|
||||
## Gemaakt door
|
||||
* Mette Lejeune (afbeeldingen)
|
||||
* Julius de Jeu (programmeren)
|
||||
* Jelle Miltenburg (muziek)
|
||||
* Marleen Peeters (afbeeldingen)
|
||||
* Jesper de Wilde (programmeren en afbeeldingen)
|
||||
* Nathan van der Kamp (programmeren)
|
||||
|
||||
|
|
35
pom.xml
35
pom.xml
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
@ -13,12 +13,41 @@
|
|||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>RELEASE</version>
|
||||
<version>3.6.1</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>2.4.1</version>
|
||||
<configuration>
|
||||
<!-- get all project dependencies -->
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
<!-- MainClass in mainfest make a executable jar -->
|
||||
<archive>
|
||||
<manifest>
|
||||
<mainClass>nl.minkema.leendert.Main</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>make-assembly</id>
|
||||
<!-- bind to the packaging phase -->
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
|
|
@ -25,11 +25,19 @@ public class Dice extends Group {
|
|||
private Group dotPattern6 = new Group();
|
||||
private Group klaver = new Group();
|
||||
|
||||
/**
|
||||
* Dit is de constructor van onze dobbelsteen
|
||||
* De dobbelsteen is helemaal gemaakt met basisvormen door Nathan, daarna een beetje aangepast door Julius
|
||||
*
|
||||
* @param x de x-coördinaat van de dobbelsteen
|
||||
* @param y de y-coördinaat van de dobbelsteen
|
||||
*/
|
||||
public Dice(int x, int y) {
|
||||
this.r = new Random(System.currentTimeMillis());
|
||||
this.setTranslateX(x);
|
||||
this.setTranslateY(y);
|
||||
|
||||
|
||||
Ellipse mainEll = new Ellipse(50, 50, 40, 50);
|
||||
mainEll.setFill(Color.DARKRED);
|
||||
Ellipse headEll1 = new Ellipse(34, 11, 6, 4);
|
||||
|
@ -136,13 +144,21 @@ public class Dice extends Group {
|
|||
roll();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Dit is de functie die het rollen van de dobbelsteen op zich neemt.
|
||||
*/
|
||||
public int roll() {
|
||||
//We willen een getal tussen 0 en 6
|
||||
int roll = r.nextInt(6);
|
||||
//We maken eerst de groep leeg
|
||||
this.getChildren().clear();
|
||||
//Als er 3 uit de roll komt, en we dus 4 zeggen, willen we een klavertje 4 laten zien
|
||||
if (roll == 3) {
|
||||
this.getChildren().add(klaver);
|
||||
} else {
|
||||
//Maar anders gaan we voor een lieveheersbeestje
|
||||
this.getChildren().add(ladybah);
|
||||
//Dit zijn alle afzonderlijke patronen
|
||||
switch (roll) {
|
||||
case 0:
|
||||
this.getChildren().add(dotPattern1);
|
||||
|
@ -159,10 +175,12 @@ public class Dice extends Group {
|
|||
case 5:
|
||||
this.getChildren().add(dotPattern6);
|
||||
break;
|
||||
//Dit zou wel heel bijzonder zijn
|
||||
default:
|
||||
System.out.println("Error drawing die");
|
||||
}
|
||||
}
|
||||
//En aan het eind nemen we de roll en tellen we er één bij op.
|
||||
return roll + 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,11 +5,12 @@ import javafx.scene.control.Label;
|
|||
import javafx.scene.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.input.MouseEvent;
|
||||
import javafx.scene.layout.Background;
|
||||
import javafx.scene.layout.BackgroundFill;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.media.Media;
|
||||
import javafx.scene.media.MediaPlayer;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.scene.shape.Circle;
|
||||
import javafx.scene.text.Text;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -27,23 +28,31 @@ public class Game extends Pane {
|
|||
public static int[][] locations;
|
||||
public static ArrayList<Player> players = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* De constructor voor de game
|
||||
*/
|
||||
public Game() {
|
||||
//We willen dat de volgorde van de spelers willekeurig is.
|
||||
Collections.shuffle(players);
|
||||
Image bord = new Image("/images/KLAAR.png");
|
||||
//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);
|
||||
view.setX(0);
|
||||
view.setY(0);
|
||||
this.getChildren().add(view);
|
||||
|
||||
//Dit zorgt voor de nummers in de vakjes
|
||||
for (int i = 0, locationsLength = locations.length; i < locationsLength; i++) {
|
||||
int[] k = locations[i];
|
||||
getChildren().add(new Circle(k[0], k[1], 5, Color.RED));
|
||||
getChildren().add(new Text(k[0], k[1], String.valueOf(i)));
|
||||
//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);
|
||||
}
|
||||
|
||||
//Dit was om de locaties van de vakjes te bepalen.
|
||||
this.setOnMouseClicked(new EventHandler<MouseEvent>() {
|
||||
int i = 0;
|
||||
|
||||
|
@ -52,12 +61,14 @@ public class Game extends Pane {
|
|||
//System.out.printf("%d: %d,%d%n", i++, (int) event.getSceneX(), (int) event.getSceneY());
|
||||
}
|
||||
});
|
||||
//Dit is de afbeelding van de speler die mag gooien
|
||||
ImageView playerTurn = new ImageView();
|
||||
playerTurn.setX(1000);
|
||||
playerTurn.setY(50);
|
||||
playerTurn.setPreserveRatio(true);
|
||||
playerTurn.setFitHeight(400);
|
||||
|
||||
//Hier staat de naam van het karaker in.
|
||||
Label l = new Label();
|
||||
l.setTranslateX(965);
|
||||
l.setTranslateY(370);
|
||||
|
@ -66,19 +77,31 @@ public class Game extends Pane {
|
|||
this.getChildren().add(playerTurn);
|
||||
this.getChildren().addAll(l);
|
||||
|
||||
//Dit is onze dobbelsteen
|
||||
Dice dice = new Dice(1100, 700);
|
||||
this.getChildren().add(dice);
|
||||
//Dit is de knop van de dobbelsteen.
|
||||
this.getChildren().add(Menu.createButton("Gooi", 1100, 650, e -> {
|
||||
//We kijken wie de volgende speler is
|
||||
Player p = players.get(Player.getNextActive());
|
||||
//En rollen een dobbelsteen
|
||||
int roll = dice.roll();
|
||||
//Dan verplaatsen we de speler
|
||||
p.move(roll);
|
||||
//Als de speler 4 gooit mag hij/zij nog een keer
|
||||
if (roll == 4) Player.four();
|
||||
//We zoeken uit wie er hier na mag
|
||||
int next = players.get(Player.getNextActive()).getCh();
|
||||
//Zetten die afbeelding als de speler die mag gooien
|
||||
playerTurn.setImage(Menu.images[next]);
|
||||
//En doen hetzelfde met de naam van de speler
|
||||
l.setText(Menu.names[next] + " is aan de beurt!");
|
||||
//En zetten het weer terug naar de vorige speler
|
||||
Player.four();
|
||||
}));
|
||||
//this.setBackground(new Background(new BackgroundFill(Color.RED, null, null)));
|
||||
//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());
|
||||
}
|
||||
|
@ -86,6 +109,7 @@ public class Game extends Pane {
|
|||
playerTurn.setImage(Menu.images[players.get(1).getCh()]);
|
||||
l.setText(Menu.names[players.get(1).getCh()] + " is aan de beurt!");
|
||||
|
||||
//En hier is de achtergrondmuziek, die het soms wel en soms niet doet...
|
||||
String loc = this.getClass().getResource("/music/game.mp3").toString();
|
||||
Media music = new Media(loc);
|
||||
MediaPlayer menuplayer = new MediaPlayer(music);
|
||||
|
|
|
@ -14,13 +14,10 @@ import java.util.Properties;
|
|||
public class Main extends Application {
|
||||
public static Scene scene;
|
||||
|
||||
public static boolean memes = false;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
for (String s : args) {
|
||||
if (s.equals("-memes")) memes = true;
|
||||
}
|
||||
|
||||
//Je kan properties best goed gebruiken om simpele lijsten in te laden
|
||||
Properties properties = new Properties();
|
||||
properties.load(Main.class.getResourceAsStream("/text/locations.properties"));
|
||||
Game.locations = new int[properties.size()][2];
|
||||
|
|
|
@ -37,32 +37,42 @@ public class Menu extends Group {
|
|||
|
||||
private ArrayList<Integer> chosen = new ArrayList<>();
|
||||
|
||||
|
||||
/**
|
||||
* De constructor voor het menu
|
||||
*
|
||||
* @throws URISyntaxException als de achtergrondmuziek niet gevonden kan worden.
|
||||
* @throws MalformedURLException gebeurt hopelijk niet...
|
||||
*/
|
||||
public Menu() throws URISyntaxException, MalformedURLException {
|
||||
ArrayList<Node> nodes = new ArrayList<>();
|
||||
Image bg = new Image(ModLoader.getFile("/images/background.png"));
|
||||
//achtergrondafbeelding
|
||||
Image bg = new Image("/images/background.png");
|
||||
ImageView view = new ImageView(bg);
|
||||
|
||||
//zet de x en y naar de linker bovenhoek
|
||||
view.setX(0);
|
||||
view.setY(0);
|
||||
//dit is om te zorgen dat de afbeelding past
|
||||
view.setFitHeight(850);
|
||||
view.setPreserveRatio(false);
|
||||
view.setFitWidth(1250);
|
||||
nodes.add(view);
|
||||
|
||||
|
||||
//De achtergrondmuziek
|
||||
String loc = this.getClass().getResource("/music/menu.mp4").toString();
|
||||
//loc = new File("menu.mp4").toURI().toURL().toString();
|
||||
//loc = ModLoader.getFile("/music/menu.mp4");
|
||||
Media music = new Media(loc);
|
||||
MediaPlayer menuplayer = new MediaPlayer(music);
|
||||
menuplayer.setCycleCount(Integer.MAX_VALUE);
|
||||
menuplayer.setVolume(0.6f);
|
||||
//Dit deel is om te garanderen dat de muziek start, hoewel het soms toch niet werkt, iets met codecs enzo
|
||||
menuplayer.setAutoPlay(true);
|
||||
menuplayer.play();
|
||||
menuplayer.play();
|
||||
|
||||
nodes.add(view);
|
||||
|
||||
|
||||
//De breedte van de afbeelding
|
||||
int imagewidth = 100;
|
||||
//Een array met speler afbeeldingen
|
||||
images = new Image[]{
|
||||
new Image("/svg/p1.svg", imagewidth, 0, true, false),
|
||||
new Image("/svg/p2.svg", imagewidth, 0, true, false),
|
||||
|
@ -70,36 +80,50 @@ public class Menu extends Group {
|
|||
new Image("/svg/p4.svg", imagewidth, 0, true, false),
|
||||
new Image("/svg/p5.svg", imagewidth, 0, true, false)};
|
||||
|
||||
//De namen van de karakters
|
||||
names = new String[]{"Paulus", "Pinkeltje", "Petunia", "Kwebbel", "Stuart"};
|
||||
int x = 0, y = 0;
|
||||
//Voor elke afbeelding wordt dit uitgevoerd
|
||||
for (int i1 = 0; i1 < images.length; i1++) {
|
||||
//We maken van de afbeelding een ImageView, zodat het zichtbaar gemaakt kan worden
|
||||
Image i = images[i1];
|
||||
ImageView iv = new ImageView(i);
|
||||
iv.setX(750 + x);
|
||||
iv.setY(400 + y);
|
||||
//En geven het een tooltip met de naam van de Kabouter
|
||||
Tooltip.install(iv, new Tooltip(names[i1]));
|
||||
x += i.getRequestedWidth();
|
||||
//Als we te ver gaan op de x as, gaan we door op een volgende regel
|
||||
if (x > 200) {
|
||||
y += 150;
|
||||
x = -70;
|
||||
}
|
||||
final int ch = i1;
|
||||
//Wat er gebeurt als je op een kabouter klikt
|
||||
iv.setOnMouseClicked(e -> {
|
||||
//Eerst controleren of het karakter al is gekozen.
|
||||
if (chosen.contains(ch)) {
|
||||
new Alert(Alert.AlertType.ERROR, "Sorry, dit karakter is al door iemand anders gekozen...").show();
|
||||
return;
|
||||
}
|
||||
//Als er nog geen hoeveelheid is gekozen kan dat ook best een probleempje opleveren.
|
||||
if (hoeveel < 0) {
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR, "Je moet eerst kiezen hoe veel spelers je wilt!\nDruk links op de juiste hoeveelheid kaboutertjes!", ButtonType.OK);
|
||||
alert.show();
|
||||
} else {
|
||||
//Maar verder kunnen we gewoon de karakters vinden
|
||||
Image image = new Image(i.impl_getUrl(), 0, 50, true, false);
|
||||
//Toevoegen aan de lijst van spelers
|
||||
Game.players.add(new Player(image, ch));
|
||||
//De hoeveelheid benodigde spelers met één verlagen
|
||||
hoeveel--;
|
||||
//En controleren of iedereen er een gekozen heeft
|
||||
if (hoeveel == 0) {
|
||||
//Zo ja: we stoppen het muziekje en starten het spel!
|
||||
menuplayer.stop();
|
||||
Main.scene.setRoot(new Game());
|
||||
} else {
|
||||
//Maar anders laten we mensen nog kiezen.
|
||||
String een = "Er moet nog 1 persoon kiezen!";
|
||||
String meer = String.format("Er moeten nog %d mensen kiezen!", hoeveel);
|
||||
Alert alert = new Alert(Alert.AlertType.NONE, hoeveel > 1 ? meer : een, ButtonType.OK);
|
||||
|
@ -110,22 +134,24 @@ public class Menu extends Group {
|
|||
}
|
||||
|
||||
});
|
||||
//Maar we moeten wel het karakter zichtbaar maken.
|
||||
nodes.add(iv);
|
||||
}
|
||||
|
||||
int x2 = 30, y2 = 50;
|
||||
|
||||
//Dit zijn de knoppen voor de hoeveelheid spelers
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (i == 0) continue;
|
||||
int number = 1 + i;
|
||||
int locy = y2 + 150 * i + 10;
|
||||
int locy = y2 + 155 * i + 10;
|
||||
for (int e = 0; e < number; e++) {
|
||||
ImageView view1 = new ImageView(new Image("/svg/p1.svg", 75, 0, true, false));
|
||||
view1.setX(x2 + 85 * e + 10 * e);
|
||||
view1.setY(locy);
|
||||
nodes.add(view1);
|
||||
}
|
||||
Rectangle clickable = new Rectangle(x2 - 10, locy + 125, 95 + i * 95, 150);
|
||||
Rectangle clickable = new Rectangle(x2 - 10, locy + 125, 95 + i * 95, 152);
|
||||
clickable.setFill(Color.TRANSPARENT);
|
||||
clickable.setStroke(Color.BLACK);
|
||||
clickable.setArcHeight(50);
|
||||
|
@ -143,6 +169,14 @@ public class Menu extends Group {
|
|||
getChildren().addAll(nodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Maakt een knop op een plek, met een willekeurige kleur.
|
||||
* @param string de tekst van de knop
|
||||
* @param x de x coördinaat van de knop
|
||||
* @param y de y coördinaat van de knop
|
||||
* @param onClick een {@link EventHandler} die wordt uitgevoerd als de knop is ingedrukt
|
||||
* @return een stackpane met daarin een knop
|
||||
*/
|
||||
public static StackPane createButton(String string, double x, double y, EventHandler<MouseEvent> onClick) {
|
||||
Text text = createText(string);
|
||||
Rectangle rectangle = rectangulate(text);
|
||||
|
@ -153,6 +187,11 @@ public class Menu extends Group {
|
|||
return pane;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maakt een text object
|
||||
* @param string de tekst van het object
|
||||
* @return een object met de tekst
|
||||
*/
|
||||
private static Text createText(String string) {
|
||||
Text text = new Text(string);
|
||||
text.setBoundsType(TextBoundsType.VISUAL);
|
||||
|
@ -165,6 +204,11 @@ public class Menu extends Group {
|
|||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maakt een rechthoek precies passend om de tekst heen.
|
||||
* @param text een {@link Text} object
|
||||
* @return een rechthoek met daar in de tekst
|
||||
*/
|
||||
private static Rectangle rectangulate(Text text) {
|
||||
Rectangle rectangle = new Rectangle();
|
||||
rectangle.setFill(getRandomColor());
|
||||
|
@ -176,6 +220,11 @@ public class Menu extends Group {
|
|||
return rectangle;
|
||||
}
|
||||
|
||||
/**
|
||||
* methode die de breedte van een {@link Text} object opvraagt
|
||||
* @param text het object
|
||||
* @return de breedte van het object
|
||||
*/
|
||||
private static double getWidth(Text text) {
|
||||
new Scene(new Group(text));
|
||||
text.applyCss();
|
||||
|
@ -183,6 +232,11 @@ public class Menu extends Group {
|
|||
return text.getLayoutBounds().getWidth();
|
||||
}
|
||||
|
||||
/**
|
||||
* methode die de hoogte van een {@link Text} object opvraagt
|
||||
* @param text het object
|
||||
* @return de hoogte van het object
|
||||
*/
|
||||
private static double getHeight(Text text) {
|
||||
new Scene(new Group(text));
|
||||
text.applyCss();
|
||||
|
@ -190,6 +244,10 @@ public class Menu extends Group {
|
|||
return text.getLayoutBounds().getHeight();
|
||||
}
|
||||
|
||||
/**
|
||||
* maakt een willekeurige kleur
|
||||
* @return een willekeurige kleur.
|
||||
*/
|
||||
public static Color getRandomColor() {
|
||||
|
||||
return Color.hsb(random.nextInt(360), 0.8, 0.8);
|
||||
|
|
|
@ -8,6 +8,12 @@ import java.io.File;
|
|||
*/
|
||||
public class ModLoader {
|
||||
|
||||
/**
|
||||
* Dit was een leuk idee, maar het werkte 9/10 keer niet goed
|
||||
*
|
||||
* @param file de naam van het bestand
|
||||
* @return het pad, danwel in het .jar bestand of als absoluut bestand
|
||||
*/
|
||||
public static String getFile(String file) {
|
||||
File f = new File("mods" + file);
|
||||
if (f.exists()) {
|
||||
|
|
|
@ -23,18 +23,28 @@ public class Player {
|
|||
private int plaats = 0;
|
||||
private int[] coords = Game.locations[plaats];
|
||||
|
||||
|
||||
/**
|
||||
* De constructor voor een speler
|
||||
*
|
||||
* @param image de afbeelding die bij de speler hoort
|
||||
* @param ch het hoeveelste karakter de speler is.
|
||||
*/
|
||||
public Player(Image image, int ch) {
|
||||
this.ch = ch;
|
||||
Random r = new Random(System.currentTimeMillis());
|
||||
this.image = image;
|
||||
this.view = new ImageView(this.image);
|
||||
//Elke speler staat niet precies op het zelfde punt, ziet er wat leuker uit
|
||||
this.add = new int[]{r.nextInt(10) - 5 - image.widthProperty().intValue() / 2, r.nextInt(10) - 5 - image.heightProperty().intValue() / 2};// new int[]{r.nextInt(10) - 5, r.nextInt(10) - 5};
|
||||
coords = new int[]{coords[0] + add[0], coords[1] + add[1]};
|
||||
getImageView().setTranslateX(coords[0]);
|
||||
getImageView().setTranslateY(coords[1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Een methode om de volgende speler te verkrijgen
|
||||
* @return het nummer van de volgende speler, niet verwarren met het character id.
|
||||
*/
|
||||
public static int getNextActive() {
|
||||
who++;
|
||||
if (who >= Game.players.size()) {
|
||||
|
@ -44,10 +54,12 @@ public class Player {
|
|||
return who;
|
||||
}
|
||||
|
||||
//Dit zorgt dat de vorige speler geselecteerd wordt
|
||||
public static void four() {
|
||||
who -= 1;
|
||||
}
|
||||
|
||||
//Dit is de afbeelding die bij de speler hoort
|
||||
public ImageView getImageView() {
|
||||
return view;
|
||||
}
|
||||
|
@ -56,20 +68,27 @@ public class Player {
|
|||
return ch;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dit is de methode die wordt gebruikt om de speler te verplaatsen
|
||||
* @param roll de hoeveelheid die is gegeooid.
|
||||
*/
|
||||
public void move(int roll) {
|
||||
//De standaard tekst
|
||||
Alert alert = new Alert(Alert.AlertType.NONE, "Je hebt " + roll + " gegooid!", ButtonType.OK);
|
||||
//Als er 4 is gegooid mag je nog een keer, dus passen we de tekst aan
|
||||
if (roll == 4)
|
||||
alert.contentTextProperty().setValue("Je hebt " + roll + " gegooid!\nKlavertje 4! Je mag dus nog een keer!");
|
||||
//We willen geen titel
|
||||
alert.titleProperty().setValue("");
|
||||
if (plaats + roll == 69 && Main.memes) {
|
||||
alert.contentTextProperty().setValue("heheheh 69 icksdie\n" + alert.getContentText());
|
||||
}
|
||||
//Zolang er geen waterval of klimop is laten we het zien
|
||||
if (!Game.specials.containsKey(plaats + roll))
|
||||
alert.show();
|
||||
//We gaan alleen niet over 100 heen...
|
||||
if (roll + plaats > 100) {
|
||||
|
||||
return;
|
||||
}
|
||||
//We gebruiken een TranslateTransition om de speler te verplaatsen
|
||||
TranslateTransition tt = new TranslateTransition(Duration.millis(200), getImageView());
|
||||
tt.setFromX(coords[0]);
|
||||
tt.setFromY(coords[1]);
|
||||
|
@ -77,16 +96,19 @@ public class Player {
|
|||
tt.setToY(coords[1] = Game.locations[plaats + 1][1] + add[1]);
|
||||
TranslateTransition last = tt;
|
||||
|
||||
//Dit is voor alles hoger dan 1
|
||||
for (int i = plaats + 2; i < roll + plaats + 1; i++) {
|
||||
TranslateTransition tl = new TranslateTransition(Duration.millis(200), getImageView());
|
||||
tl.setFromX(coords[0]);
|
||||
tl.setFromY(coords[1]);
|
||||
tl.setToX(coords[0] = Game.locations[i][0] + add[0]);
|
||||
tl.setToY(coords[1] = Game.locations[i][1] + add[1]);
|
||||
//Als we meer dan 1 beweging willen moet dat er na afgespeeld worden, anders gaan ze tegelijk
|
||||
last.setOnFinished(e -> tl.play());
|
||||
last = tl;
|
||||
}
|
||||
plaats += roll;
|
||||
//Als er een waterval of klimop is
|
||||
if (Game.specials.containsKey(plaats)) {
|
||||
TranslateTransition tl = new TranslateTransition(Duration.millis(200), getImageView());
|
||||
tl.setFromX(coords[0]);
|
||||
|
@ -96,21 +118,23 @@ public class Player {
|
|||
last.setOnFinished(e -> tl.play());
|
||||
|
||||
String text;
|
||||
//We passen de tekst aan
|
||||
if (plaats < Game.specials.get(plaats)) {
|
||||
text = alert.getContentText() + "\n\nRoltrappen!\nJe mag " + (Game.specials.get(plaats) - plaats) + " plaatsen vooruit!";
|
||||
text = alert.getContentText() + "\n\nKlimop!\nJe mag " + (Game.specials.get(plaats) - plaats) + " plaatsen vooruit!";
|
||||
} else {
|
||||
text = alert.getContentText() + "\n\nSlangen!\nJe moet " + (plaats - Game.specials.get(plaats)) + " plaatsen terug!";
|
||||
text = alert.getContentText() + "\n\nWaterval!\nJe moet " + (plaats - Game.specials.get(plaats)) + " plaatsen terug!";
|
||||
|
||||
}
|
||||
Alert alert1 = new Alert(Alert.AlertType.NONE, text, ButtonType.OK);
|
||||
alert1.show();
|
||||
|
||||
//Laten we de plaats van de speler ook even aanpassen
|
||||
plaats = Game.specials.get(plaats);
|
||||
}
|
||||
|
||||
tt.play();
|
||||
|
||||
|
||||
//Bij 100 heeft er iemand gewonnen!
|
||||
if (plaats == 100) {
|
||||
System.out.println("Een speler heeft gewonnen!");
|
||||
Alert alert2 = new Alert(Alert.AlertType.WARNING, "Speler " + Menu.names[getCh()], ButtonType.OK);
|
||||
|
|
BIN
src/main/resources/images/bord.png
Normal file
BIN
src/main/resources/images/bord.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1 MiB |
|
@ -1,102 +1,101 @@
|
|||
#format: nummer:x,y
|
||||
0:438,52
|
||||
1:496,53
|
||||
2:548,53
|
||||
3:609,52
|
||||
4:664,53
|
||||
5:704,111
|
||||
6:639,109
|
||||
7:583,110
|
||||
8:529,110
|
||||
9:472,107
|
||||
10:418,105
|
||||
11:381,166
|
||||
12:446,173
|
||||
13:499,168
|
||||
14:554,169
|
||||
15:605,168
|
||||
16:670,167
|
||||
17:721,168
|
||||
18:758,220
|
||||
19:704,228
|
||||
20:635,226
|
||||
21:578,223
|
||||
22:521,223
|
||||
23:451,222
|
||||
24:413,222
|
||||
25:346,224
|
||||
26:323,281
|
||||
27:379,281
|
||||
28:434,281
|
||||
29:490,281
|
||||
30:545,281
|
||||
31:603,280
|
||||
32:665,281
|
||||
33:720,280
|
||||
34:782,280
|
||||
35:809,330
|
||||
36:755,335
|
||||
37:703,336
|
||||
38:646,337
|
||||
39:588,337
|
||||
40:527,338
|
||||
41:470,339
|
||||
42:408,336
|
||||
43:361,336
|
||||
44:289,339
|
||||
45:265,399
|
||||
46:322,397
|
||||
47:372,395
|
||||
48:439,395
|
||||
49:500,393
|
||||
50:554,393
|
||||
51:606,396
|
||||
52:675,396
|
||||
53:721,396
|
||||
54:792,396
|
||||
55:835,397
|
||||
56:817,452
|
||||
57:755,455
|
||||
58:695,457
|
||||
59:648,457
|
||||
60:581,455
|
||||
61:528,454
|
||||
62:467,454
|
||||
63:401,454
|
||||
64:358,452
|
||||
65:302,453
|
||||
66:320,511
|
||||
67:378,515
|
||||
68:442,513
|
||||
69:486,512
|
||||
70:551,513
|
||||
71:607,514
|
||||
72:671,515
|
||||
73:732,515
|
||||
74:782,514
|
||||
75:758,572
|
||||
76:687,573
|
||||
77:633,572
|
||||
78:575,573
|
||||
79:533,574
|
||||
80:471,572
|
||||
81:407,570
|
||||
82:357,570
|
||||
83:382,639
|
||||
84:437,636
|
||||
85:503,633
|
||||
86:548,631
|
||||
87:605,630
|
||||
88:660,627
|
||||
89:733,628
|
||||
90:695,681
|
||||
91:648,681
|
||||
92:582,682
|
||||
93:526,682
|
||||
94:479,682
|
||||
95:411,683
|
||||
96:444,736
|
||||
97:497,751
|
||||
98:549,749
|
||||
99:607,748
|
||||
100:674,746
|
||||
0=711,718
|
||||
1=658,716
|
||||
2=602,713
|
||||
3=555,713
|
||||
4=506,711
|
||||
5=475,656
|
||||
6=528,663
|
||||
7=577,663
|
||||
8=627,665
|
||||
9=677,666
|
||||
10=737,661
|
||||
11=762,619
|
||||
12=707,614
|
||||
13=653,608
|
||||
14=610,608
|
||||
15=561,608
|
||||
16=499,607
|
||||
17=444,606
|
||||
18=428,558
|
||||
19=474,557
|
||||
20=522,557
|
||||
21=582,559
|
||||
22=632,562
|
||||
23=682,558
|
||||
24=730,557
|
||||
25=786,559
|
||||
26=812,505
|
||||
27=751,505
|
||||
28=705,508
|
||||
29=655,508
|
||||
30=607,508
|
||||
31=554,509
|
||||
32=499,508
|
||||
33=453,506
|
||||
34=402,508
|
||||
35=376,460
|
||||
36=424,457
|
||||
37=477,459
|
||||
38=529,457
|
||||
39=581,458
|
||||
40=628,458
|
||||
41=678,458
|
||||
42=730,455
|
||||
43=784,456
|
||||
44=831,457
|
||||
45=859,410
|
||||
46=807,409
|
||||
47=756,408
|
||||
48=706,407
|
||||
49=655,406
|
||||
50=601,406
|
||||
51=554,406
|
||||
52=503,406
|
||||
53=452,406
|
||||
54=400,406
|
||||
55=345,406
|
||||
56=373,351
|
||||
57=424,349
|
||||
58=474,352
|
||||
59=525,356
|
||||
60=577,357
|
||||
61=629,356
|
||||
62=684,357
|
||||
63=733,358
|
||||
64=781,359
|
||||
65=835,355
|
||||
66=809,307
|
||||
67=758,304
|
||||
68=709,304
|
||||
69=656,303
|
||||
70=606,303
|
||||
71=551,303
|
||||
72=507,301
|
||||
73=454,303
|
||||
74=401,303
|
||||
75=427,253
|
||||
76=478,253
|
||||
77=528,254
|
||||
78=580,252
|
||||
79=630,252
|
||||
80=680,255
|
||||
81=731,255
|
||||
82=781,255
|
||||
83=757,204
|
||||
84=706,204
|
||||
85=655,204
|
||||
86=604,203
|
||||
87=553,202
|
||||
88=503,202
|
||||
89=451,203
|
||||
90=477,152
|
||||
91=529,151
|
||||
92=581,151
|
||||
93=630,152
|
||||
94=678,153
|
||||
95=732,154
|
||||
96=709,99
|
||||
97=657,99
|
||||
98=604,102
|
||||
99=552,102
|
||||
100=500,102
|
|
@ -1,14 +1,12 @@
|
|||
5=10
|
||||
7=4
|
||||
18=13
|
||||
20=27
|
||||
30=24
|
||||
42=88
|
||||
50=43
|
||||
57=65
|
||||
63=52
|
||||
71=62
|
||||
80=82
|
||||
88=87
|
||||
92=97
|
||||
98=90
|
||||
1=27
|
||||
17=32
|
||||
21=4
|
||||
22=30
|
||||
47=68
|
||||
52=59
|
||||
61=39
|
||||
70=79
|
||||
74=53
|
||||
76=91
|
||||
81=64
|
||||
92=71
|
Loading…
Reference in a new issue