Hallo an alle, ich habe ein kleinen Problem, bin momentan dabei ein Strategiespiel zu programmieren im rahmen des info-unterrichts in der schule, bin also kein profi. Zum besseren Verständnis beschreib ich mal kurz das spiel. Im Prinzip läuft es ab wie "Kampf um Afrika", falls das jemand kennt, nur für Europa. Habe etliche GifImages erstellt und da die einzelnen Länder mit transparentem Hintergrund reingeladen. Das ganze ist ein Rundenbasiertes Spiel, Spieler 1 beginnt mit Deutschland, Spieler 2 mit Russland. nach jeder runder, also wenn jeder einmal dran ist, werden in jedem land, das irgendjemanden gehört neue einheiten generiert, je nach wirtschaftsstärke, die variable habe ich selber festgelegt. die in einem land befindlichen Einheiten können in die Nachbarländer verschoben werden um neutrale Nachhbarländer zu annektieren oder feindliche anzugreifen und gegebenfalls auch zu annektieren. Wo wir beim eigentlichen Problem wären. Ich habe jetz für die Land.click-prozedur folgendes festgelegt:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| procedure TForm1.DeutschlandClick(Sender: TObject); var a,b:byte; begin repeat Land.Text:='Deutschland'; zaehler.text:=floattostr(region[1]); if zugehoerigkeit[1]=1 then Besitzer.Text:='Spieler1' else if zugehoerigkeit[1]=2 then Besitzer.Text:='Spieler2' else Besitzer.Text:='Neutral'; Combobox1.Clear; Combobox1.ClearSelection; combobox1.Items.add('verschieben'); Combobox2.Clear; a:=0; b:=0; case Combobox1.ItemIndex of 0:begin Combobox2.Items.add('Niederlande'); Combobox2.Items.add('Belgien'); Combobox2.Items.add('Frankreich'); Combobox2.Items.add('Schweiz'); Combobox2.Items.add('Österreich'); Combobox2.Items.add('Tschechien'); Combobox2.Items.add('Polen'); a:=1; end; if Combobox2.ItemIndex = 0 then zielland:=12 else if Combobox2.ItemIndex=1 then zielland:=13 else if Combobox2.ItemIndex=2 then zielland:=14 else if Combobox2.ItemIndex=3 then zielland:=18 else if Combobox2.ItemIndex=4 then zielland:=19 else if Combobox2.ItemIndex=5 then zielland:=110 else if Combobox2.ItemIndex=6 then zielland:=113 else Kommentar.text:='Land auswählen'; b:=1; Sleep(10000); until (a=1) and (b=1) |
erreichen wollte ich damit, dass in der ersten Combobox der User auswählt "verschieben", und wenn das so ist erscheinen in der 2. Combobox die Nachbarländer, von denen der User dann eins aussucht, geschieht dies, ändert sich die Variable "zielland" die bestimmt von welchem in welches Land einehiten verschoben werden, also zielland=12 wäre dann von land 1 in land 2, etc. Das problem bei der ganzen Sache ist, dass Delphi diese ganze Prozedur einmal durchläuft wenn man das land anklickt und nichts passiert, weil ja in der ersten combobox nichts ausgewählt ist, und in der zweiten ja logischer weise auch nichts. man kann dann zwar was auswählen, (in der 1.) aber delphi durchläuft ja diese prozedur dann nicht noch einmal. Also habe ich mir gedacht, füge ich die variablen a und b ein, die sich ändern wenn in den comboboxen was ausgewählt wird und lass die prozedur so lange wiederholen bis sich a und b ändern. Das Problem dabei ist nun, dass das Programm sich "aufhängt", qausi ständig diese Prozedur durchläuft ohne dass der user auf der oberfläche etwas anklicken kann. Ich habe versucht das mit dem Sleepbefehl zu steuern, aber das funktioniert auch nicht.
Vielleicht fällt von euch jemandem etwas ein, wie ich dieses Problem lösen kann. danke
gruss KLaus
Moderiert von
Kha: Delphi-Tags hinzugefügtModeriert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 21.01.2009 um 23:21