From ce250f638da301f21e1e89ffb39c9ad0c6b9be0f Mon Sep 17 00:00:00 2001 From: Seraina Date: Fri, 25 Mar 2022 17:25:05 +0100 Subject: [PATCH] Added an array full of Passengers, set them all to human by default --- .../dbis/cs108/Klassenstruktur/Passenger.java | 10 +++++- .../dbis/cs108/Spiellogikentwurf/Game.java | 22 +++++++++++-- .../Spiellogikentwurf/GameFunctions.java | 33 ++++++++++++++++++- .../dbis/cs108/Spiellogikentwurf/Train.java | 10 +++++- 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java index ccc4a51..14a6dbd 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java @@ -5,7 +5,7 @@ import ch.unibas.dmi.dbis.cs108.Multiplayer.Server.ClientHandler; import java.net.Socket; public class Passenger { - protected int position; //the player's Cabin number (1 to 6) + protected int position; //the player's Cabin number (0 to 5) protected String name; //the player's Name protected Boolean isGhost; //boolean regarding if the player is a ghost. Could probably be removed since ghost is a subclass but I'm keeping it in. protected Boolean isPlayer; //same here @@ -20,6 +20,14 @@ public class Passenger { //todo: send protocol message to the respective client OR process messages for NPCS } + /** + * sets the Position of this passenger + * @param position the position of this passenger + */ + public void setPosition(int position) { + this.position = position; + } + /** * sets the name of this passenger. * @param name the new name for this passenger. diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/Game.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/Game.java index 49ebb8f..bc6bd11 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/Game.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/Game.java @@ -9,21 +9,37 @@ public class Game { protected int nrOfPlayers; //sets the length of the train protected int nrOfGhosts; // sets how many Ghosts we start witch protected int nrOfUsers; // safes how many clients are active in this Game - Train train; // safes who sits where ToDo: Figure out who and where and if this needs to be changed i.e. when a client looses connection. (Schon gelöst mit timer?) + protected GameFunctions gameFunctions; + /** - * Constructs a Game instance where + * Constructs a Game instance where: * @param nrOfPlayers is the length of the Train * @param nrOfGhosts is the number of OG Ghosts you want to start with and * @param nrOfUsers is the number of active users at the time (non NPC's) */ - Game (int nrOfPlayers, int nrOfGhosts, int nrOfUsers) { + Game (int nrOfPlayers, int nrOfGhosts, int nrOfUsers) throws TrainOverflow { //ToDo: Who handles Exception how and where this.nrOfPlayers = nrOfPlayers; this.nrOfGhosts = nrOfGhosts; this.nrOfUsers = nrOfUsers; + this.gameFunctions = new GameFunctions(nrOfPlayers,nrOfGhosts,nrOfUsers); } + public static void main(String[] args) { + try{ + Game game1 = new Game(6,1,1); + for(int j = 0; j< game1.nrOfPlayers; j++) { + System.out.println(game1.gameFunctions.passengerTrain[j].getPosition()); + } + + } catch (TrainOverflow e) { + System.out.println(e.getMessage()); + } + + } + + diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/GameFunctions.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/GameFunctions.java index e70e8ab..702e10c 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/GameFunctions.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/GameFunctions.java @@ -1,15 +1,35 @@ package ch.unibas.dmi.dbis.cs108.Spiellogikentwurf; +import ch.unibas.dmi.dbis.cs108.Klassenstruktur.Ghost; +import ch.unibas.dmi.dbis.cs108.Klassenstruktur.Human; +import ch.unibas.dmi.dbis.cs108.Klassenstruktur.Passenger; + public class GameFunctions { /**Can be extended for optional Game-settings**/ int nrOfPlayers; //sets the length of the train int nrOfGhosts; // sets how many Ghosts we start witch int nrOfUsers; // safes how many clients are active in this Game + Train train; // safes who sits where + Passenger[] passengerTrain; - GameFunctions (int nrOfPlayers, int nrOfGhosts, int nrOfUsers) { + /** + * Constructs a GameFunctions instance where nrOfPlayers >= nrOfUsers. Fills passengerTrain with only humans + * @param nrOfPlayers is the length of the Train + * @param nrOfGhosts is the number of OG Ghosts you want to start with and + * @param nrOfUsers is the number of active users at the time (non NPC's) + * @throws TrainOverflow if nrOfPlayers < nrOfUsers + */ + GameFunctions (int nrOfPlayers, int nrOfGhosts, int nrOfUsers) throws TrainOverflow { //ToDo: where will Exception be handeled? this.nrOfPlayers = nrOfPlayers; this.nrOfGhosts = nrOfGhosts; this.nrOfUsers = nrOfUsers; + this.train = new Train(nrOfPlayers,nrOfUsers); + Passenger[] passengerTrain = new Passenger[nrOfPlayers]; //Creates an array with Passengers with correlation positions (Train) + for(int i = 0; i < nrOfPlayers;i++) { + Human h = new Human(); + h.setPosition(train.orderOfTrain[i]); + passengerTrain[i] = h; + } } public int getNrOfGhosts() { @@ -24,5 +44,16 @@ public class GameFunctions { return nrOfUsers; } + public void ghostyfy(int position) { + + } + + public Passenger voteEval(){ + return new Passenger(); + } + + + + } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/Train.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/Train.java index 0144e28..4606464 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/Train.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Spiellogikentwurf/Train.java @@ -6,9 +6,11 @@ import java.util.Arrays; public class Train { int[] orderOfTrain; //gives the random order in which the passengers enter the train + int positionOfGhost; /** - * Constructs a Train with orderOfTrain of the size nrOfPlayers, filled with a Random order of the numbers 0-5 + * Constructs a Train with orderOfTrain of the size nrOfPlayers, filled with a Random order of the numbers 0-5. + * Puts the ghost approx in the middle of this order. * @param nrOfPlayers sets how many Players fit in the Train * @param nrOfUsers sets how many of the Players are Users (vs NPC's) * @throws TrainOverflow if you want to play with to many users (Train is to small) @@ -39,6 +41,7 @@ public class Train { } this.orderOfTrain = userTrain; + this.positionOfGhost = (int) (nrOfPlayers/2); } /** @@ -64,6 +67,11 @@ public class Train { //Test try { Train t = new Train(6,1); + for(int i = 0; i < 6; i++) { + System.out.print("|" + t.orderOfTrain[i] + "|"); + } + System.out.println(" Ghost:" + t.positionOfGhost); + } catch (TrainOverflow e) { System.out.println(e.getMessage()); }