Ich erstelle ein textbasiertes "Game of Real Life" -Programm. Ich habe Schwierigkeiten damit, eine effiziente Methode zu finden, mit der man die Anweisungen jeder Spielfliese des Spielplans (lineares Spielbrett mit bestimmten Start-/Zielpunkten) ausführen kann. Jeder Spieler im Spiel wird durch ein Objekt der Klasse "Player" dargestellt, das Variablen für verschiedene Spielstatistiken enthält (einschließlich eines Platzhalterwerts für ihre Position auf dem Spielbrett), und jedes Spielerobjekt ist in einer Hash-Karte enthalten. Ich möchte eine Schleife erstellen, die jedes Spielerobjekt durchläuft und basierend auf dem jeweiligen Platzhalterwert eine bestimmte Methode für diese Kachel des Bretts referenziert.Wie kann ich einem Wert innerhalb einer HashMap eine Klassenmethode zuweisen?
Meine Hauptklasse:
import java.util.Scanner;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
Coin coin = new Coin();
Die die = new Die();
Scanner choice = new Scanner(System.in);
System.out.println("Choose player amount:");
int n = choice.nextInt();
/*This map contains master list of all players and player values*/
HashMap<Integer, Player> playerList = new HashMap<Integer, Player>();
/*This map contains just the true_false value of life for each player*/
HashMap<Integer, Boolean> lifeCheck = new HashMap<Integer, Boolean>();
/*This section defines number/sex/name of each player*/
for (int y = 1; y <= n; y++) {
System.out.println("New player now flips a coin.");
coin.flip();
if (coin.get() == true) {
System.out.println("You flipped heads! You are a man.");
} else {
System.out.println("You flipped tails! You are a woman.");
}
System.out.println("What is your name?");
String user = choice.next();
playerList.put(y, new Player(user));
/*This adds a check functionality to ensure live players still exist*/
lifeCheck.put(y, playerList.get(y).pulse());
}
/*This invokes a new instance of our game board*/
GameSpace gameBoard = new GameSpace();/*Not yet defined*/
/*This do_while loop checks that a live player exists after each turn*/
do {
/*This is where I think I would be putting the majority of
the game code*/
} while (lifeCheck.containsValue(true));
/*This tests to see if my player naming loop works properly*/
/*
int x = 1;
for (int i = 1; i <= n; i++) {
System.out.println("Player number " + x + " is named " + playerList.get(i).name);
x++;
}
*/
choice.close();
}
}
Meine Spielerklasse:
public class Player {
public boolean gender;
public String name;
public int wealthClass;
public double income;
public double wealth;
public double health;
public boolean parent = false;
public boolean disabled = false;
public boolean alive = true;
public double placeHold = 1;
public Player(String playerName) {
name = playerName;
}
public boolean getGender() {
return gender;
}
public String getName() {
return name;
}
public int getCaste() {
return wealthClass;
}
public double getIncome() {
return income;
}
public double getWealth() {
return wealth;
}
public double getHealth() {
return health;
}
public boolean getParent() {
return parent;
}
public boolean getDisabled() {
return disabled;
}
public boolean pulse() {
return alive;
}
public double getPosition() {
return placeHold;
}
public void move() {
Die die1 = new Die();
die1.roll();
placeHold += die1.get();
System.out.println("You moved forward " + die1.get() + " spaces.");
}
public void main(String[] args) {
if (health <= 0) {
alive = false;
}
}
}
Meine Münzklasse:
public class Coin {
private boolean face;
public Coin() {
flip();
}
public void flip() {
double x = (Math.floor(Math.random()*2));
if (x == 0) {
face = true;
} else {
face = false;
}
}
public boolean get() {
return face;
}
}
Wo wäre die logischste Ort, um von hier aus?
Bitte versuchen Sie, ein vollständiges * minimum * Beispiel anzugeben. Der Großteil des Codes scheint mit Ihrem Problem nichts zu tun zu haben, und das Einzige, mit dem wir arbeiten müssen, ist Ihr Titel und der letzte Satz. Es ist unklar, was genau dein Problem ist und warum du etwas mit hashmaps und "Platzhalterwerten" machen willst. – Zong
Ich möchte den placeHold Integer-Wert der Player-Klasse verwenden, um direkt auf einen HashMap-Schlüssel zu verweisen, der eine Methode für die jeweilige Spielkachel aktiviert. Das ist der beste Weg, um mein Ziel zu erreichen, das ich sehen kann, aber ich konnte es nicht erfolgreich umsetzen. – SenorHoward