Hallo Leute!
Ich habe ein kleines Ablaufproblem.
Ich baue ein kleines Spiel nach, bei dem Rennautos auf einem Spielfeld Feld für Feld sich bewegen.
Wenn das eine Auto nun eine 6 würfelt, soll es 6  Felder nach vorne, aber bei jedem Feld überprüfen, ob vor dem Auto jemand ist. Deshalb habe ich es rekursiv programmiert.
												| 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:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
 100:
 101:
 102:
 103:
 104:
 105:
 106:
 107:
 108:
 109:
 110:
 111:
 112:
 113:
 114:
 115:
 116:
 
 | procedure TBrett.setzen(spielerid,anzahl:integer);      var nochzusetzen,nextfeld,i:integer;begin
 nochzusetzen:=anzahl;
 
 
 
 
 sleep(1000); stats;
 if nochzusetzen > 0 then
 
 begin
 nextfeld:=Spieler[spielerid].feld+1;
 sleep(50); stats;
 if rundenfelder = Spieler[spielerid].feld then nextfeld:=1;
 case Feld[nextfeld].besetzt of
 
 0:                            begin
 dec(Feld[Spieler[spielerid].feld].besetzt);
 inc(Spieler[spielerid].feld);
 if Spieler[spielerid].feld = (rundenfelder+1) then  begin
 inc(Spieler[spielerid].runde);
 Spieler[Spielerid].feld:=Spieler[Spielerid].feld-rundenfelder;
 end;
 inc(Feld[Spieler[spielerid].feld].besetzt);
 
 if Spieler[spielerid].runde > runden then
 begin
 finish(spielerid);
 end else                        setzen(spielerid,nochzusetzen-1)
 end;
 1:                           begin
 dec(Feld[Spieler[spielerid].feld].besetzt);
 inc(Spieler[spielerid].feld);
 if Spieler[spielerid].feld > (rundenfelder) then  begin
 inc(Spieler[spielerid].runde);
 Spieler[Spielerid].feld:=Spieler[Spielerid].feld-rundenfelder;
 end;
 inc(Feld[Spieler[spielerid].feld].besetzt);
 if Spieler[spielerid].runde > runden then
 begin
 finish(spielerid);
 end;
 
 if Spieler[spielerid].outofrace = 0 then begin wurftyp:=1;verteidigerwurf:=0;angreiferwurf:=0; end;
 
 for i:=1 to 4 do begin
 if (Spieler[i].feld = Spieler[spielerid].feld) and (Spieler[i].id <> Spieler[spielerid].id)
 then begin
 angreifer:=spielerid;
 verteidiger:=i;
 showmessage('DUELL * AngreiferID' + IntToStr(angreifer) + '* VerteidigerID ' + IntToStr(verteidiger));
 end;
 
 end;
 end;
 2:  begin
 showmessage('musst leider stehenbleiben');
 setzen(spielerid,0);
 end;
 
 end
 
 end else
 begin
 case Feld[Spieler[spielerid].feld].typ of
 Normal:   begin end;
 Benzin:   begin
 showmessage('- 1x Benzin');
 dec(Spieler[spielerid].benzin);
 if  Spieler[spielerid].benzin < 1 then ausfall(spielerid);
 end;
 Benzin2:  begin
 showmessage('- 2x Benzin');
 dec(Spieler[spielerid].benzin);
 dec(Spieler[spielerid].benzin);
 if  Spieler[spielerid].benzin < 1 then ausfall(spielerid);
 end;
 VIP:      begin
 showmessage('VIP-Feld');
 wurftyp:=6;
 VIPfahrerID:=spielerID;
 end;
 SafetyCar:begin
 safetycarspielerid:=spielerid;
 showmessage('SafetyCar? Bei 9-12');
 wurftyp:=3;
 
 end;
 Unfall:   begin
 showmessage('Unfall?');
 wurftyp:=5;
 unfallfahrerID:=spielerID;
 end;
 Kurve:    begin
 showmessage('Hochgeschwindigkeitskurve');
 kurvenfahrerID:=spielerid;
 wurftyp:=4;
 end;
 Regenfeld:begin
 regen:=1;
 showmessage('Regen');
 end;
 
 end;
 end;
 end;
 | 
		
	  
Bisher war es so, dass das Auto halt auf seine entsprechende Entpositon direkt sprang. Aber nun, da ich den Grafikmodus programmiere, sollte man die einzelnen Feldsprünge auch sehen.
Also hab ich ziemlich an den Anfang "sleep(100); stats" eingefügt, wobei stats die Bildpositionen der Autos aktualisiert. Jedoch ist es so, dass bei 10 Feldern z.B. das Programm nun 1 Minute wartet und dann alles auf einmal macht, so wie es ja gerade nicht sein sollte.
Wenn ich an der selben Stelle ein "showmessage" zusätzlich noch einbinde, kommt das Messagefeld und ich sehe, dass die Autos sich wirklich bewegen. Aber ohne nicht! 
Ich bin ratlos und über jeden Rat erfreut
Moderiert von  Gausi: Code- durch Delphi-Tags ersetzt.
Gausi: Code- durch Delphi-Tags ersetzt.