Hallo,
ich bin gerade dabei ein Kakuro Spiel zu schreiben und irgendwie funktioniert meine Funktion nicht so richtig.
In einer Sume dürfen keine doppelte Zufallszahlen sein.
Hier mal mein Code:
Mein Code funktioniert manchmal, die Schleife hängt sich aber manchmal auf, deshalb habe ich einen weiteren Zähler eingebaut, der die Schleife abbricht, wenn Zaehler > 9 ist.
Kann mir da vll jemand weiterhelfen?
MfG
ich bin gerade dabei ein Kakuro Spiel zu schreiben und irgendwie funktioniert meine Funktion nicht so richtig.
In einer Sume dürfen keine doppelte Zufallszahlen sein.
Hier mal mein Code:
PHP:
var
x,y: integer;
ZaehlerX,ZaehlerY,Zaehler: integer;
Zahl: integer;
Doppelt: integer;
begin
ZaehlerX:=0;
ZaehlerY:=0;
Doppelt:=0;
Zahl:=0;
Zaehler:=0;
for y:=0 to 11 do begin
for x:=0 to 11 do begin
Doppelt := 0;
Zaehler := 0;
Zahl := 0;
if (Spielfeld[x][y].Feld = 'N') then
begin
repeat
Form1.Canvas.Draw(x*36-x,y*36-y,Image1.Picture.Bitmap);
if (Doppelt = 1) then
begin
Spielfeld[x][y].Wert := Zahl;
Doppelt := 0;
end
else begin
Zahl := random(9)+1;
Spielfeld[x][y].Wert := Zahl;
Doppelt := 0;
end;
ZaehlerX := x;
ZaehlerY := y;
while (ZaehlerX > 0) do begin
ZaehlerX := ZaehlerX - 1;
if ((Spielfeld[ZaehlerX][y].Feld = 'M') or (Spielfeld[ZaehlerX][y].Feld = 'S')) then
begin
break;
end;
if (Spielfeld[ZaehlerX][y].Wert = Zahl) then
begin
Doppelt := 1;
break;
end;
end;
while (ZaehlerY > 0) do begin
ZaehlerY := ZaehlerY - 1;
if ((Spielfeld[x][ZaehlerY].Feld = 'M') or (Spielfeld[x][ZaehlerY].Feld = 'S')) then
begin
break;
end;
if (Spielfeld[x][ZaehlerY].Wert = Zahl) then
begin
Doppelt := 1;
break;
end;
end;
if (Doppelt = 1) then
begin
Spielfeld[x][y].Wert := 0;
Zahl := Zahl + 1;
Zaehler := Zaehler + 1;
if (Zaehler > 9) then
begin
break;
end;
if (Zahl > 9) then Zahl := 1;
end;
until Doppelt = 0;
end;
end;
end;
PHP:
Spielfeld[x][y].Feld = 'N' //=Felder, in denen die Zufallszahlen rein sollen
Spielfeld[x][y].Feld = 'M' //=Normaler Block
Spielfeld[x][y].Feld = 'S' // =Sume Block
Mein Code funktioniert manchmal, die Schleife hängt sich aber manchmal auf, deshalb habe ich einen weiteren Zähler eingebaut, der die Schleife abbricht, wenn Zaehler > 9 ist.
Kann mir da vll jemand weiterhelfen?
MfG