Hi, ich programmiere gerade ein Client-Server Spielesystem mit graphischer Oberfläche.
Ich bin gerade dabei, die Spielzüge aus der graphischen Oberfläche abzufragen, diese werden dann gesendet.
Das Problem ist.....es funktioniert zwar, aber irgendwann hängt es sich auf. Dies kann beim ersten Zug oder aber auch beim 5. Zug, der übertragen wird, geschehen.
Zum Abfragen der Eingabe aus der Benutzeroberfläche benutze ich ein MouseClicked Event, dass die Position des Cursors abfragt und daraus den Spielzug berechnet. Dieser Spielzug wird in einer Int-Variable gespeichert. Sieht konkret so aus:
die myTurn Variable ist ein boolean Wert, der regelt, dass man nur einen Zug machen darf, wenn man dran ist.
Gleichzeitig schicke ich die Methode, die den Wert zum weiterschicken an den anderen Client braucht, in eine while Schleife. In dieser Schleife stelle ich die Bedingung, dass die Spielzugvariable größer ist als -1 (= ungültiger Wert).
Sieht programmtechnisch so aus:
Hab schon überprüft, an welchen Stellen es hängen bleibt, und es scheint daran zu liegen, dass die Schleife endlos weiterläuft. (woran es auch liegen könnte, dass mein NetBeans nicht mehr reagiert ;])
Wo genau liegt denn jetzt das Problem? Warum blockiert mein Programm und warum tritt es benaihe zufällig auf?
Kann es möglich sein, dass durch die ständige Abfrage der Schleife auf die Spielzugvariable, das MouseClick Event nicht in die Variable schreiben kann, also die Variable blockiert?
Und noch viel wichtiger, wie bekomme ich mein Programm zum Laufen?
Wäre lieb, wenn sich jemand das mal anschauen würde, ich danke auf jeden Fall im Voraus für jeden konstruktiven Vorschlag!
MfG,
Lacyuu
Ich bin gerade dabei, die Spielzüge aus der graphischen Oberfläche abzufragen, diese werden dann gesendet.
Das Problem ist.....es funktioniert zwar, aber irgendwann hängt es sich auf. Dies kann beim ersten Zug oder aber auch beim 5. Zug, der übertragen wird, geschehen.
Zum Abfragen der Eingabe aus der Benutzeroberfläche benutze ich ein MouseClicked Event, dass die Position des Cursors abfragt und daraus den Spielzug berechnet. Dieser Spielzug wird in einer Int-Variable gespeichert. Sieht konkret so aus:
Java:
public void mouseClicked(MouseEvent e) {
int xPos = e.getX();
for(int i = 0; i < columns; i++) {
if(xPos > columnWidth * i && xPos < (columnWidth * i) + columnWidth &&myTurn&&vgewinnt.spalte[i]<columns) {
vgewinnt.spielzug(1, i); //registriert den Spielzug in dem Feld, dem die Darstellung des Spielfeldes zuGrunde liegt
spielzug = i;
myTurn = false;
}
}
}
die myTurn Variable ist ein boolean Wert, der regelt, dass man nur einen Zug machen darf, wenn man dran ist.
Gleichzeitig schicke ich die Methode, die den Wert zum weiterschicken an den anderen Client braucht, in eine while Schleife. In dieser Schleife stelle ich die Bedingung, dass die Spielzugvariable größer ist als -1 (= ungültiger Wert).
Sieht programmtechnisch so aus:
Java:
while(game.fenster.board.myTurn){ //fragt solange ab, wie man am Zug ist
if(game.fenster.board.spielzug>-1){ //überprüft, ob Spielzug gültigen Wert annimmt
spielzug.msg= "0*"+message.absender.name+"*"+game.fenster.board.spielzug; //spielzug ist ein Message Objekt (eigene Klasse)
senden.sendM(spielzug); //Ist die Methode zum Schicken von nachrichten
game.fenster.board.spielzug = -1;
}
}
Hab schon überprüft, an welchen Stellen es hängen bleibt, und es scheint daran zu liegen, dass die Schleife endlos weiterläuft. (woran es auch liegen könnte, dass mein NetBeans nicht mehr reagiert ;])
Wo genau liegt denn jetzt das Problem? Warum blockiert mein Programm und warum tritt es benaihe zufällig auf?
Kann es möglich sein, dass durch die ständige Abfrage der Schleife auf die Spielzugvariable, das MouseClick Event nicht in die Variable schreiben kann, also die Variable blockiert?
Und noch viel wichtiger, wie bekomme ich mein Programm zum Laufen?
Wäre lieb, wenn sich jemand das mal anschauen würde, ich danke auf jeden Fall im Voraus für jeden konstruktiven Vorschlag!
MfG,
Lacyuu