Ich möchte 5 unterschiedliche Zufallszahlen erzeugen und in einem Array die Variablen dessen Index der zuvor erstellten Zufallszahl von :=false nach :=true ändern.
also ich habe bisher das folgende:
Code: Alles auswählen
procedure TForm1.ScheisselosbuttonClick(Sender: TObject);
var Kuhposition:array [1..25]of boolean;
var Index:integer;
var Kuh:array [1..5] of integer;
var Index2:integer;
var Index_aus1:integer;
var Index_aus2:integer;
begin
for Index :=1 to 25 do
begin
Kuhposition [Index]:=false;
end;
for Index2 :=1 to 5 do
begin
Kuh[Index2]:=0;
end;
Kuh [1]:=random(25)+1;
Kuh [2]:=random(25)+1;
Kuh [3]:=random(25)+1;
Kuh [4]:=random(25)+1;
Kuh [5]:=random(25)+1;
//Kuhpositionen gegenseitig ausschliessen
for Index_aus1:12 to 5 do
begin
for Kuh [Index_aus1]:= Kuh[Index_aus2] to
//Kuh [1] in Kuhposition schreiben
if Kuh [1]=1 then
begin
Kuhposition [1]:=true;
end;
if Kuh [1]=2 then
begin
Kuhposition [2]:=true;
end;
.
.
.
.
if Kuh [1]=25 then
begin
Kuhposition [25]:=true;
end;
//Kuh [2] in Kuhposition schreiben
if Kuh [2]=1 then
begin
Kuhposition [1]:=true;
end;
.
.
.
.
if Kuh [2]=25 then
begin
Kuhposition [25]:=true;
end;
//Kuh [3] in Kuhposition schreiben
if Kuh [3]=1 then
begin
Kuhposition [1]:=true;
end;
.
.
.
.
if Kuh [3]=25 then
begin
Kuhposition [25]:=true;
end;
//Kuh [4] in Kuhposition schreiben
if Kuh [4]=1 then
begin
Kuhposition [1]:=true;
end;
.
.
.
.
if Kuh [4]=25 then
begin
Kuhposition [25]:=true;
end;
//kuh[5] in Kuhposition schreiben
if Kuh [5]=1 then
begin
Kuhposition [1]:=true;
end;
.
.
.
.
if Kuh [5]=25 then
begin
Kuhposition [25]:=true;
end;
//Kühe platzieren
Kuh1.Visible:=Kuhposition[1];
Kuh2.Visible:=Kuhposition[2];
Kuh3.Visible:=Kuhposition[3];
Kuh4.Visible:=Kuhposition[4];
Kuh5.Visible:=Kuhposition[5];
Kuh6.Visible:=Kuhposition[6];
Kuh7.Visible:=Kuhposition[7];
Kuh8.Visible:=Kuhposition[8];
Kuh9.Visible:=Kuhposition[9];
Kuh10.Visible:=Kuhposition[10];
Kuh11.Visible:=Kuhposition[11];
Kuh12.Visible:=Kuhposition[12];
Kuh13.Visible:=Kuhposition[13];
Kuh14.Visible:=Kuhposition[14];
Kuh15.Visible:=Kuhposition[15];
Kuh16.Visible:=Kuhposition[16];
Kuh17.Visible:=Kuhposition[17];
Kuh18.Visible:=Kuhposition[18];
Kuh19.Visible:=Kuhposition[19];
Kuh20.Visible:=Kuhposition[20];
Kuh21.Visible:=Kuhposition[21];
Kuh22.Visible:=Kuhposition[22];
Kuh23.Visible:=Kuhposition[23];
Kuh24.Visible:=Kuhposition[24];
Kuh25.Visible:=Kuhposition[25];
Ausgabefenster1.Lines.Add('Die Kühe sitzen auf:'+inttostr(Kuh [1])+'; '+inttostr(Kuh [2])+'; '+inttostr(Kuh [3])+'; '+inttostr(Kuh [4])+'; '+inttostr(Kuh [5]));
end;
der Teil
//Kuhpositionen gegenseitig ausschliessen
ist wie ihr seht sehr unvollständig, da ich ab da nicht weiter wusste. Am einfachsten währe es wenn man beim erzeugen der Randomzahl nicht nur Minimum und Maimum setzen könnte, sondern gleich Zahlen ausschliessen könnte. Aber eine solche Funktion ist mir nicht bekannt.
Ich weiss ziemlich viel Programmtest und ich bin mir sicher dass sich dieser ganz einfach reduzieren ließe, aber ich bin im Moment froh dass es jetzt einigermaßen Funktioniert und die 5 Kühe ordentlich über die Wiese verteilt werden.
Bitte nicht übe die namen der Variablen wundern, ich programmiere ein Spiel in dem es darum geht dass Kühe an verschiedenen Positionen auf eine Wiese "koten" und man vorher auf die Position setzen kann. (klingt doof, ist aber ganz lusitg...)
Hoffentlich könnt ihr mir helfen.
Gruß
Thomebau