Kleines Spiel realisieren - wie?

Trunk

Mitglied
Hallo,

ich stehe zurzeit vor folgendem Problem und weiß nicht so recht wie ich es realisieren könnte..

In einer kleinen "Restaurant-Simulation" bestellen Gäste bei einem Kellner zB einen Kaffee, dieser gibt den Auftrag an die Küche weiter usw...
Nun bestellt der Gast etwas über eine Methode, und in der Methode "Bestellung aufnehmen" des Kellners bekommt dieser den Auftrag und gibt ihn weiter.

Nun das Problem :

Ich möchte dass der Kellner eine gewisse Zeit für das Übergeben benötigt, und wollte dies erst mit einem sleep() umsetzten, da jedoch mehrere Kellner gleichzeitig verschiedene Gäste bedienen sollen geht das aber nicht...

Von Threads habe ich schon etwas gehört, nur verstehe ich nicht wie ich diese hier anweden kann (die Kellner Klasse "extends Thread"?!) und frage mich ob es nicht eine einfachere Lösung gibt...

Die Klasse Gast:

Java:
public class Gast
{
    public int Tischnummer;
    public boolean bestellung_erhalten=false;
    public CoffeShop c;

    public Gast(CoffeShop cs, Integer t)
    {
        c = cs;
        Tischnummer = t+1;
    }

    public Integer getTischnummer()
    {
        return Tischnummer;
    }


    public void kellnerRufen (String Artikel, Integer Menge)
    {
        Kellner bedienung = c.getKellner();

        Bestellung order = new Bestellung(this);

        if (Artikel.equals("Kaffee"))
        {
            order.bestellungErweitern("Kaffe",Menge);
            System.out.println("Ein Gast (Tisch "+Tischnummer+") hat kaffe bei " + bedienung.getName() + " bestellt");
        }

        bedienung.bestellungEntgegennehmen(order);
    }

}

Die Klasse Kellner:

Java:
public class Kellner {

    public String Name;
    public boolean Beschaeftigt = false;
    public Bestellung AktuelleBestellung;
    public CoffeShop c;

    public Kellner(CoffeShop cs, String n)
    {
        c = cs;
        Name = n;
    }

    public String getName()
    {
        return Name;
    }

    public boolean istBeschaeftigt()
    {
        return Beschaeftigt;
    }


    public void bestellungEntgegennehmen(Bestellung b)
    {
        AktuelleBestellung = b;
        Beschaeftigt= true;


        System.out.println(Name + " nimmt Bestellung entgegen...");

//Hier soll er eine gewisse Zeit warten(/brauchen)


        System.out.println(Name + " hat die Bestellung erhalten...");

//Hier ebenfalls

        c.bestellungHinzufügen(b);
        System.out.println(Name + " hat die Bestellung weitergeleitet");

//Hier ebenfalls

        Beschaeftigt = false;


    }
}

Ich hoffe jemand kann mir hierbei weiterhelfen..
Liebe Grüße
 
M

Marcinek

Gast
Stichwort:

Threads

Thread.currentThread().sleep();

generell sleep();

Aber da muss man genau hinschauen, da Kellner und Gast ein anderer Thread sein muss.
 

Tain

Mitglied
Hier kleines Beispiel
(Wäre besser wen main in einer anderen Klasse ist)

Java:
public class MyThread extends Thread{
	
	private String message;

	public MyThread(String message) {
		this.message = message;
	}
	
	@Override
	public void run () {
		for (int i = 0; i < 10 ; i++) {
			System.out.println(message);
			try {
				Thread.sleep((long)(Math.random() * 1000)  ); // sleep in zufallslänge
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
public static void main(String[] args) throws Exception{
		
		MyThread eins= new MyThread("eins!");
		MyThread zwei= new MyThread("zwei!");
		MyThread drei= new MyThread("drei!");
		MyThread vier= new MyThread("vier!");
		
		eins.start();
		zwei.start();
		drei.start();
		drei.join();	// wartet bis drei fertig ist bevor nächstes kommt
		vier.start();

	}

}
 

Trunk

Mitglied
Stichwort:

Threads

Thread.currentThread().sleep();

generell sleep();

Aber da muss man genau hinschauen, da Kellner und Gast ein anderer Thread sein muss.


Okay, dachte ich mir schon, nur wie kann ich das umsetzen? Hab mir schon einiges darüber durchgelsen aber ich weiß nicht wie ich das mit der "run()" methode auf zB den Kellner anwenden soll..


Hier kleines Beispiel
(Wäre besser wen main in einer anderen Klasse ist)

Java:
public class MyThread extends Thread{
	
	private String message;

	public MyThread(String message) {
		this.message = message;
	}
	
	@Override
	public void run () {
		for (int i = 0; i < 10 ; i++) {
			System.out.println(message);
			try {
				Thread.sleep((long)(Math.random() * 1000)  ); // sleep in zufallslänge
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
public static void main(String[] args) throws Exception{
		
		MyThread eins= new MyThread("eins!");
		MyThread zwei= new MyThread("zwei!");
		MyThread drei= new MyThread("drei!");
		MyThread vier= new MyThread("vier!");
		
		eins.start();
		zwei.start();
		drei.start();
		drei.join();	// wartet bis drei fertig ist bevor nächstes kommt
		vier.start();

	}

}

Das habe ich verstanden, aber ich verstehe nicht wie ich das auf mein Beispiel anwenden kann? Der Kellner zB soll ja mehr dinge als nur "run" können?!
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Wie bereits geschrieben worden ist, müsstest du den Thread zum steuern des Kellerns benutzen.

Oder des Kellners und des Kunden.

Der Thread macht in der run() methode

Gast.gibtBestellung()

sleep(1000) // 1 Sekunde

Kellner.gibtBestellunganKüche();

Gruß,

Martin
 

Ein Keks

Bekanntes Mitglied
Die run-methode der Kellner könnte zum Bleistift so aussehen:
Java:
@Override
public void run(){
	while(coffeShop.isOpen()) {
        Queue<Task> taskList = coffeShop.getTaskList();
		if(!taskList.isEmpty()) { //guck obs was zu tun gibt
			task = taskList.poll(); //hol nen neuen auftrag aus der Queue
			task.execute(Waiter.this); //mach das und sleep entsprechend lange
		} else {
			sleep(100); // mach ein nickerchen bis was zu tun ist
		}
	}
}}

Wenn ein Gast eine Bestellung aufgibt oder bezahlen will, wird diese als Task in einer Queue gespeichert und die Kellner gucken einfach immer obs grad was zu tun gibt, wenn ja machen sie dass und brauchen dafür ne bestimmte zeit ansosnten pennen sie ne runde

Fehlt nur noch die Klasse Task, aber ich muss jetzt arbeiten vllt. nachher ;)

edit:
Tasks könnte man dann so darstellen:
Java:
interface Task {
	
	int getDuration();
	void execute();
}

class Order implements Task {
	
	private int duration;
	private String name;
	
	public Order(Guest guest, String name, int duration) {
		this.name = name;
		this.duration = duration;
	}
	
	public int getDuration() {
		return duration;
	}
	
	public execute(Waiter w) {
		w.bringOrderToKitchen(name, guest);
		sleep(duration);
	}
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
U Bitte Helfen kleines Spiel Java Basics - Anfänger-Themen 9
K Kleines Spiel / Daten speichern Java Basics - Anfänger-Themen 8
C Kleines 2D Spiel. Problem. Java Basics - Anfänger-Themen 5
R kleines spiel Java Basics - Anfänger-Themen 11
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
J Kleines Rechenprogramm Java Basics - Anfänger-Themen 13
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
B Input/Output Kleines Netzwerkproblem Java Basics - Anfänger-Themen 2
J OOP Kleines Schülerverwaltungsprogramm Java Basics - Anfänger-Themen 9
F Methoden Kleines Problem mit meinem Glücksrad... Java Basics - Anfänger-Themen 9
N ein kleines GUI mit einem hauch XML Java Basics - Anfänger-Themen 5
T erstes kleines Programm Java Basics - Anfänger-Themen 17
S Kleines Quiz Programm Java Basics - Anfänger-Themen 4
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
K Ein kleines Rätsel Java Basics - Anfänger-Themen 2
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
A Best Practice Ideen für kleines Anfängerschulprojekt gesucht Java Basics - Anfänger-Themen 4
J kleines Karteikartenprogramm Java Basics - Anfänger-Themen 3
S Kleines Zeichen berechnen Java Basics - Anfänger-Themen 5
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
H Kleines Prob Java Basics - Anfänger-Themen 5
J Vererbung Kleines Problem bei Vererbung! Java Basics - Anfänger-Themen 2
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
J Flaechen vergleichen/kleines Fehler? Java Basics - Anfänger-Themen 23
H Kleines Problem bei den Schleifen Java Basics - Anfänger-Themen 5
M Kleines Problem mit der Rekursion Java Basics - Anfänger-Themen 20
K Kleines Projekt Java Basics - Anfänger-Themen 2
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
J Mal wieder ein kleines Toleranzproblem Java Basics - Anfänger-Themen 20
T kleines problem mit switch case Java Basics - Anfänger-Themen 11
R Kleines Programm, benötige Hilfe! Java Basics - Anfänger-Themen 6
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
R Login mit Datenbankabfrage: Kleines Problem! Java Basics - Anfänger-Themen 6
K Kleines Anfänger Problem bei der Abfrage Java Basics - Anfänger-Themen 8
X Kleines JMenuBar Problem Java Basics - Anfänger-Themen 8
D Kleines Abfrageproblem Java Basics - Anfänger-Themen 3
K kleines Rekursionsproblem Java Basics - Anfänger-Themen 7
P RSA Verschlüsselung kleines Problem Java Basics - Anfänger-Themen 5
B Suche kleines Java-Applet Java Basics - Anfänger-Themen 6
P Kleines Problemm mit einer NullPointerException Java Basics - Anfänger-Themen 2
R kleines Kunstprogramm "mkbox" perfektionieren Java Basics - Anfänger-Themen 13
P wahrscheinlich ein kleines Problem Java Basics - Anfänger-Themen 7
P Kleines Projekt -> Große Überlegungen Java Basics - Anfänger-Themen 2
H Kleines Problem mit der Polymorphie Java Basics - Anfänger-Themen 2
S "Kleines" Problem mit dem Timer Java Basics - Anfänger-Themen 4
K kleines Array-Problem Java Basics - Anfänger-Themen 6
T Kleines Verständnissproblem mit Regex Java Basics - Anfänger-Themen 4
U Kleines Problem mit Konstruktor^^ Java Basics - Anfänger-Themen 7
S Kleines Kartenspiel mit Java Java Basics - Anfänger-Themen 2
D kleines Eclipse-Problem ! Java Basics - Anfänger-Themen 2
I Kleines Program, fehler? Java Basics - Anfänger-Themen 2
S kleines Würfelspiel Java Basics - Anfänger-Themen 10
0 Frage zu Architektur: Server eines kleines Spiels Java Basics - Anfänger-Themen 4
F kleines Programm für ungerade oder gerade Zahl. Java Basics - Anfänger-Themen 18
C kleines Menü erzeugen und anzeigen Java Basics - Anfänger-Themen 11
S Kleines TickTackTou Java Basics - Anfänger-Themen 10
O Kleines Problem mit Konstruktor mit Parametern aus generischer Klasse...oder so ;) Java Basics - Anfänger-Themen 2
M Kleines Problem mit Threads (synchronized) Java Basics - Anfänger-Themen 3
J Java, kleines denkproblem. :) Java Basics - Anfänger-Themen 4
N Kleines Problemchen mit ButtonGroup Java Basics - Anfänger-Themen 2
W ein kleines Projekt! Aber wie beginnen Java Basics - Anfänger-Themen 4
S Kleines Problem... NaN, Infinity? Java Basics - Anfänger-Themen 9
B Drag and Drop fähige Trackliste..nurnoch ein kleines Problem Java Basics - Anfänger-Themen 16
G Kleines Problem mit File Java Basics - Anfänger-Themen 7
O Neuen Blackberry 8800 oder Curve gegen kleines Programm Java Basics - Anfänger-Themen 9
Z kleines projekt Java Basics - Anfänger-Themen 3
G ein kleines java prog - hat aber einen fehler-bitte um hilfe Java Basics - Anfänger-Themen 5
GambaJo Brauche Bewertung + Tipps für mein kleines Projekt Java Basics - Anfänger-Themen 4
N Nur ein kleines Installationsproblem . Java Basics - Anfänger-Themen 5
G Kleines Problem mit Nimmspiel Java Basics - Anfänger-Themen 8
U kleines problem bei ner aufgabe :( Java Basics - Anfänger-Themen 8
G Kleines Problem mit Array Java Basics - Anfänger-Themen 14
S Kleines Programm mit ArrayList Java Basics - Anfänger-Themen 7
M Kleines Programm Java Basics - Anfänger-Themen 5
M DBCP - Kleines Beispiel Java Basics - Anfänger-Themen 3
R Unicode-Wert in Binär und Dezimal umformen - kleines Problem Java Basics - Anfänger-Themen 1
G Kleines Problem Java Basics - Anfänger-Themen 3
D kleines script abhaengig von Ordner Bilder kopieren Java Basics - Anfänger-Themen 11
G Kleines Grundsatzproblem Java Basics - Anfänger-Themen 5
S Ich habe ein kleines Problem mit meinem Übungsprogramm Java Basics - Anfänger-Themen 7
S Hab ein kleines Problem :) Java Basics - Anfänger-Themen 4
K kleines bild ausgeben Java Basics - Anfänger-Themen 4
D noch ein kleines Problem Java Basics - Anfänger-Themen 4
M kleines generics problem Java Basics - Anfänger-Themen 15
B Kleines? Jedenfalls Problem mit Borland-Together! Java Basics - Anfänger-Themen 4
M kleines Java Programm (Verwaltung) Java Basics - Anfänger-Themen 16
K Kleines Programm zur Stapelverarbeitung schreiben, aber wie? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben