Autor Beitrag
yacuzer
Hält's aus hier
Beiträge: 1



BeitragVerfasst: So 01.06.03 16:49 
Hallo

ich versuch das fraktale spiel mit delphi zu programmieren, es handelt sich hier bei um das Sierpinski-Dreieck
In einem Dreieck seien die drei Ecken mit jeweils zwei Ziffern eines Würfels belegt.
Ein beliebiger Ausgangspunkt wird gesetzt.
Es wird gewürfelt und ein Punkt auf der halben Strecke zwischen dem Ausgangspunkt und dem dem Würfelergebnis zugeordneten Punkt wird markiert und als neuer Ausgangspunkt definiert.
ich möchte das so programmieren, das ich die 3 eckpunkte des dreiecks so ausdrücke
die würfelzahlen 1/4 entsprechen den koordinaten in der paintbox left/bottom
2/5 --> right div 2/top
3/6 --> right/bottom

ich hab das alles in einer gezählten schleife laufen
hier ist der quelltext

ausblenden volle Höhe Delphi-Quelltext
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:
procedure TForm1.ButtonxmalClick(Sender: TObject);
var x,y,z,n,err1,i:integer;
begin
val (edit1.text,n,err1);
x:=1;
y:=1;
if (err1=0then
for i:=1 to n do
 begin
  z:= random (6)+1;
 case z of
  1,4:begin
       x:=round((x+paintbox1.canvas.cliprect.left) div 2);
       y:=round((y+paintbox1.canvas.cliprect.bottom) div 2);
       paintbox1.canvas.Pixels[x,y]:=clred;
      end;
  2,5:begin
       x:=round((x+paintbox1.canvas.cliprect.right div 2div 2);
       y:=round((y+paintbox1.canvas.cliprect.top) div 2);
       paintbox1.canvas.Pixels[x,y]:=clblack;
      end;
  3,6:begin
       x:=round((x+paintbox1.canvas.cliprect.right) div 2);
       y:=round((y+paintbox1.canvas.cliprect.bottom) div 2);
       paintbox1.canvas.Pixels[x,y]:=clblue;
      end;
end;
end
else
messagedlg('Überprüfen Sie bitte die Eingabe',mterror,[mbok],0);
end;


doch nun macht das programm auch außerhalb des dreiecks punkte, das liegt daran, das es immer bei x und y vom startpunkt ausgeht und nicht den neu errechneten punkt als startpunkt nimmt
wie kann ich das machen, das er x und y dann ersetzt, geht es durch globale variablen und wenn wie kann ich diese ausdrücken, oder gibt es eine andere lösung für das problem

es wäre sehr cool wenn mir dabei einer helfen könnte :D

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt
Fred Ferkel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Di 03.06.03 17:36 
hi

is doch klar ^^ wenn der punkt außerhalb des dreiecks liegt und entweder zuweit weg ist und/oder die zufällige ecke nicht die gegenüberliegende ist

wenn der anfangspunkt in dem dreieck liegt ist es unmöglich das ein punkt draußen liegt

muss das nicht ein gleichschenkliges dreieck sein?

du solltest lieber extended variablen benutzen um die punkte zu berechnen wenn dus genauer haben willst

statt val würde ich try except end benutzen

du solltest vielleicht auch nen unterschied zwischen dem problem und der umsetzung machen, ich mein random(3) ist absolut ok, weil das ergebnis dassselbe ist

(könntest vielleicht ja auch nen standard wert benutzen für die schleifenzahl wenn im edit keine zahl steht)

cya