Erstellen von Würfel-Spiel in java mit Multithreading
Möchte ich die Implementierung eines 4-Spieler-Würfel-Spiel, in dem jeder Spieler implementiert ist als ein thread . Jeder Spieler bekommt eine chance, die Würfel zu werfen, in der Reihenfolge der Spieler-Anzahl . jeder Wurf stirbt return eine Zahl von 1 bis 6 nur . das Spiel beenden, wenn jeder Spieler 25 Punkt oder mehr drucken Sieger-player .
Ich bin am überlegen erstellen von Klassen
Würfel für die Handhabung Würfel
Board Für den Umgang mit allen Threads und Spieler Score
TheGame für den Start Spiel
Meiner Klasse Würfel
import java.util.Random;
public class Dice {
Random dice;
public Dice()
{
dice=new Random();
}
public int throwDice()
{
int a= dice.nextInt(70);
a=a/10;
if (a==0)
return 1;
else return a;
}
}
Meine Spieler-Klasse
public class Player extends Thread {
Board board;
int num;
public Player(Board b,int n)
{
board=b;
num=n;
}
public void run()
{
System.out.println("Player "+num+" is started, playing game...");
while(board.flag)
{
board.play(num);
}
}
}
Klasse Spiel
public class TheGame {
public static void main(String[] args) {
System.out.println("Initializing board...");
Board b=new Board(); //Creating object of class board
System.out.println("Initializing players...");
Player p1=new Player(b,1); //Every player is Thread
Player p2=new Player(b,2);
Player p3=new Player(b,3);
Player p4=new Player(b,4);
p1.start(); //Starting Thread
p3.start();
p2.start();
p4.start();
}
}
Ich bin nicht in der Lage, zu denken, Logik oder entscheiden, wo Sie starten in der Klasse Board.
Bitte Helfen Sie mir mit dem Board-code
Dies ist keine Abtretung oder Hausaufgaben .
Ich will, es zu tun selbst, aber habe keine Tiefe Ahnung von Synchronisation in Threading
Ich versuche zu code bin ich nicht gefragt komplette tutorials bin ich nur zu Fragen, wie setze ich um, wenn Spieler 1(thread) bekommen ausführen, nachdem Spieler 1 getan haben, seine chance.
- Während ich denke, dass das Experimentieren und lernen mit Gewinde ist eine gute Idee, ich will einfach nur, um sicherzustellen, dass Sie sind sich bewusst, dass Sie das nicht implementieren sollte ein Würfel-Spiel dieser Art, mit Gewinde für Produktions-code.
- Danke, ich will einfach nur, um zu Graben, im Durchzug , aber mein tutor hat mir einmal erzählt threading verwenden meist machen Spiel wie diesem . also ich denke von der Umsetzung dieser
- Wenn Ihr tutor Ihnen die Verwendung von multithreading in einem text-basierten Würfel-Spiel würde ich einen neuen tutor.
- Ich möchte nur einen Versuch geben mit dass .Bitte, wenn Sie helfen, dass nicht, wäre toll
- Es ist relativ schwierig, eine vollständige threading tutorial eine Antwort. Ich schlage vor das Oracle-tutorial und Fragen, wenn Sie eine konkrete Frage haben.
- Ich habe wissen über thread erstellen . Ganz einfach ich möchte wissen, welche Logik implementiere ich auf dieser .
- Sie müssen die Synchronisierung Logik. Lesen Sie mehr im tutorial oder formulieren Sie Ihre Frage genauer zu sein.
- Die Abstimmung zu schließen, Frage als zu breit. Sind Sie wirklich Fragen, für eine vollständige tutorial hier, und es gibt tutorials, die bereits für Ihre Bewertung. Sie müssen es nur tun.
- ich bearbeitet meine Frage.ich denke, das wäre hilfreich .
- Ich code Hinzugefügt und Weitere Details zu Meiner Frage, Hoffe es wird wieder Geöffnet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nur um zu zeigen Sie in die richtige Richtung. Sie müssen viel Lesen, mehr als ich jemals hier schreiben. Dann brauchen Sie, um zu lösen alle Arten von seltsamen und irreproducable bugs. Aber Sie hat Fragen...
Ich denke, es ist viel einfacher und interessanter, wenn alle 4 Spieler werfen auf einmal. (Obwohl Sie möglicherweise mehr als einen Gewinner.) Zu tun:
Erstellen Globale Monitore und Feld (Vielleicht in der Game-Klasse):
Erstellen Sie dann eine Spieler-Klasse mit run-Methode. (Spieler können erweitern Thread, oder es erweitern zu können, Ausführbar und man kann Sie zu einem neuen Thread.) Etwa so:
Dann werden Sie wollen-control-code (in der Game-Klasse?):
Sollten Sie auf einen start. Studieren bis auf die Synchronisation, volatile, wait () und notifyAll(). Wenn Sie nicht finden können gute Beispiele überall, überprüfen hier (für die Grundlagen).
Beim starten, drucken, viele debugging-Meldungen. Threads werden immer ausgeführt wird, wenn Sie nicht erwarten, dass Sie. Sie sind wirst überrascht sein.
Haben die Spieler Rollen ein zu einer Zeit, ich denke, Sie würde wollen, mehrere turn-Monitore. Können Sie teilen nur einen wartenden thread zu einem Zeitpunkt, aber Sie können nicht kontrollieren die thread informiert wird, so versucht man den richtigen thread aus einem monitor schwierig werden würde.