folgendes:
----------
n bekomme ich vom benutzer übergeben
sprich ich habe eine radiogroup, in der festgelegt ist, das
wenn der benutzer den radiobutton an indexstelle 0 anklickt
case n.ItemIndex of
(n beduetet anzahl der knoten!)
0: n:=2; m_max:=2; min_m:=1;
1: n:=3; min_m:=2; m_max:=5;
2: n:=4; min_m:=4; m_max:=7;
3: n:=5; min_m:=5; m_max:=8;
4: n:=6; min_m:=6; m_max:=11;
5: n:=7; min_m:=7; m_max:=12;
6: n:=8; min_m:=8; m_max:=14;
daher bekomme ich das n her! (später soll es wenn der benutzer
den erstenlevel (2knotiger graph) erfolgreich bestanden hat automatisch sich erhöhen (level um level).)
Delphi-Quellcode:
(*-----Bestimmen--von--m-----------------------------*)
function m_bestimmen(min_m:integer; m_max:integer):integer;
var local:integer;
begin
repeat
local:=random(m_max+1);
until local>=min_m;
result:=local;
end;
hier bestimme ich die pfeildaten:
NUR das problem ich produziere ständig eine endlosschleife an dieser stelle
siehe folgenden quelltextausschnitt!
Kann mir jemand bei diesem problem helfen ?
freue mich auf eure antwort!
Delphi-Quellcode:
procedure a_b_Pfeilnur1mal(a,b:TPfeil;var a1,b1:integer);
var locali:integer;
notOK:boolean;
begin
notok:=false;
repeat
repeat
a1:=random(n)+1;
b1:=random(n)+1;
until a1<>b1; // Neuen Vektor finden
for locali:= 1 to m do
begin
NotOK:=((a1 = a[locali]) and (b1 = b[locali])) or // V1 = V[I] oder
((b1 = a[locali]) and (a1 = b[locali])); // V1 = -V[I]
if NotOK then break;
// Wenn NotOK, also der Vektor schon vorhanden ist,
// dann Abbruch der FOR-Schleife.
end;
until not(NotOK);
// Wenn die FOR-Schleife ganz durchlaufen wird und immer gilt:
// NotOK = false ( Razz ), dann ist der neue Vektor noch nicht vorhanden.
// Also: Ende bei not(NotOK);
end;
und hier soll er rein:
Delphi-Quellcode:
procedure TfrmUebung.Button1Click(Sender: TObject);
var
x1,y1,x2,y2:integer;
locali,localj:integer;
a1,b1:integer;
px1,px2:integer;
Gewichtung:string;
begin
m:=m_bestimmen(min_m,m_max); //anzahl der Pfeile wird festgestellt
//wertelegen(Anf,Ende,Kosten);
for locali:= 1 to m do
begin
a_b_Pfeilnur1mal(Anf,Ende,a1,b1);
Anf[locali]:=(a1);
Ende[locali]:=(b1);
Kosten[locali]:=Kosten_bestimmen;
end;
{Eingaben}
for locali:=1 to m do
begin
px1:=Anf[locali];
px2:=Ende[locali];
Gewichtung:=inttostr(Kosten[locali]);
with imgGraph,imgGraph.Canvas do
begin
Font.Name := 'Arial';
Font.Height := 30;
// ** Einzelner Pfeil
X1 := (Kx[px1]);
Y1 := (Ky[px1]);
X2 := (Kx[px2]);
Y2 := (Ky[px2]);
setzeKnoten(Canvas,Kx,Ky,KRadius,Startknoten);
Brush.Color := clBlack;
ZeichneVerbindungspfeil(Canvas,x1,y1,x2,y2,KRadius,Offset);
pfeilbewertung (x1,y1,x2,y2,KRadius,Offset,Gewichtung,Canvas);
end;
end;
end;