W 
		
				
				
			
		Wolverine566561
Gast
Hallo zusammen!
Ich habe ein grundsätzliches Problem, bei dem ich Hilfe bräuchte:
Ich habe 1-4 Spieler. Diese Spieler führen nacheinander eine Tätigkeit aus, für die es Punkte gibt. Ist eine gewisse Punktzahl erreicht, hat derjenige Spieler gewonnen.
Soweit das Problem. Jetzt zur Umsetzung in einer Android-App:
Mein erster Versuch sah so aus, dass ich eine Methode geschrieben habe, in der eine WHILE-Schleife ein Flag "spielGewonnen" geprüft hat. Innerhalb dieser Schleife war als nächstes eine FOR-Schleife, die über das Spieler-Array gelaufen ist. Darin wiederum eine WHILE-Schleife, die ein Flag "naechsterSpieler" geprüft hat. In dieser Schleife war dann alles enthalten, was gebraucht wurde: Eingabe des Ergebnisses, Prüfung ob das eingegebene Ergebnis beim aktuellen Spieler zu einer Veränderung des SpielGewonnen-Flags führt, Änderung des "naechsterSpieler"-Flags. Das sah in etwa so aus:
	
	
	
		
Das eigentliche Problem ist nun, dass in dieser Methode auf UI-Controls zugegriffen werden muss. Das führt - wie ich feststellen musste - zum einfrieren des UI. Nach einigen Google-Stunden, war ich schlauer: Die Methode in einen eigenen Thread auslagern!
Leider helfen mir die Beiträge die ich durchgelesen - und auch größtenteils verstanden habe - nicht so richtig weiter. Meist wird davon ausgegangen, dass irgendwas im Hintergrund ausgeführt wird und der Fortschritt zum Beispiel in einem ProgressDialog dargestellt wird. Das ist aber nicht, was ich möchte. Ich möchte, dass die Activity quasi darauf wartet, dass eine Eingabe erfolgt. Diese Eingabe dann für den betreffenden Spieler verarbeitet wird und dann der nächste Spieler an der Reihe ist. Dies soll sich solange wiederholen, bis einer der Spieler gewonnen hat.
Soweit ich es bis hierhin verstanden habe, muss ich von dem Thread aus aber wieder auf die UI zugreifen.
Ich wäre sehr dankbar, wenn mir hier jemand etwas genauere Denkanstöße geben könnte - auch gerne per Mail oder Chat, denn ich habe von paralleler Programmierung und grafischen Benutzeroberflächen nicht viel Ahnung. (Ich weiß, dass das keine guten Vorausstzungen sind, aber es ist nun mal so und ich erwarte keine Lösungen in Form von fertigem Code, sondern lediglich Denkanstöße oder ggf. hilfreiche Webseiten, die das Problem etwas genauer behandeln.)
Ich danke auf jeden Fall schon mal ;-)
Grüße
				
			Ich habe ein grundsätzliches Problem, bei dem ich Hilfe bräuchte:
Ich habe 1-4 Spieler. Diese Spieler führen nacheinander eine Tätigkeit aus, für die es Punkte gibt. Ist eine gewisse Punktzahl erreicht, hat derjenige Spieler gewonnen.
Soweit das Problem. Jetzt zur Umsetzung in einer Android-App:
Mein erster Versuch sah so aus, dass ich eine Methode geschrieben habe, in der eine WHILE-Schleife ein Flag "spielGewonnen" geprüft hat. Innerhalb dieser Schleife war als nächstes eine FOR-Schleife, die über das Spieler-Array gelaufen ist. Darin wiederum eine WHILE-Schleife, die ein Flag "naechsterSpieler" geprüft hat. In dieser Schleife war dann alles enthalten, was gebraucht wurde: Eingabe des Ergebnisses, Prüfung ob das eingegebene Ergebnis beim aktuellen Spieler zu einer Veränderung des SpielGewonnen-Flags führt, Änderung des "naechsterSpieler"-Flags. Das sah in etwa so aus:
		Code:
	
	boolean spielGewonnen = false;
void methode(){
   while(spielGewonnen != true) {
      for(int i = 0; i < spielerArray.length; i++) {
         while(naechsterSpieler != true) {
            // ... Code
         }
      }
   }
}
	Das eigentliche Problem ist nun, dass in dieser Methode auf UI-Controls zugegriffen werden muss. Das führt - wie ich feststellen musste - zum einfrieren des UI. Nach einigen Google-Stunden, war ich schlauer: Die Methode in einen eigenen Thread auslagern!
Leider helfen mir die Beiträge die ich durchgelesen - und auch größtenteils verstanden habe - nicht so richtig weiter. Meist wird davon ausgegangen, dass irgendwas im Hintergrund ausgeführt wird und der Fortschritt zum Beispiel in einem ProgressDialog dargestellt wird. Das ist aber nicht, was ich möchte. Ich möchte, dass die Activity quasi darauf wartet, dass eine Eingabe erfolgt. Diese Eingabe dann für den betreffenden Spieler verarbeitet wird und dann der nächste Spieler an der Reihe ist. Dies soll sich solange wiederholen, bis einer der Spieler gewonnen hat.
Soweit ich es bis hierhin verstanden habe, muss ich von dem Thread aus aber wieder auf die UI zugreifen.
Ich wäre sehr dankbar, wenn mir hier jemand etwas genauere Denkanstöße geben könnte - auch gerne per Mail oder Chat, denn ich habe von paralleler Programmierung und grafischen Benutzeroberflächen nicht viel Ahnung. (Ich weiß, dass das keine guten Vorausstzungen sind, aber es ist nun mal so und ich erwarte keine Lösungen in Form von fertigem Code, sondern lediglich Denkanstöße oder ggf. hilfreiche Webseiten, die das Problem etwas genauer behandeln.)
Ich danke auf jeden Fall schon mal ;-)
Grüße