Skocz do zawartości

random() i geometria


magda111

Rekomendowane odpowiedzi

Chcę napisać program, który będzie mi rysował trójkąt a w nim punkt(obojętnie gdzie byle w trójkącie). Potem ma rysować linie od tego punktu do wylosowanego wierzchołka trójkąta. I dokladnie w polowie tej linii ma pojwiać się nowy punkt. Następnie z tego punktu ma być linia do nowo wylosowanego wierzcholka trojkata, w połowie znów punkt i tak milion razy. To chyba za pomocą funkcji Random tylko ja nie wiem za bardzo jak się jej używa ;/ wiem, że ma wylosować liczbe od 1-3 i ma przypisac wynikowi odpowiednią rzecz (w tym przeypadku współrzędne wierzchołków trójkąta). Czy ktoś miał z tym styczność, bo podobno daje fajny efekt. Mam taki kod, ale nie wiem co y tzmi bledami..

procedure TForm1.Button1Click(Sender: TObject);
var
  ax,ay,h,a,n,x,sx,sy,sx1,sy1:integer;
 begin
  ax:=100;
  ay:=100;
  a:=200;
  h:= round(a*sqrt(3)/2);
  sx:=200;
  sy:=200;
  canvas.Polygon([point(ax,ay+h),point(ax+a,ay+h), point(round(ax+a/2),ay) ]);
for n:=1 to 1000000 do
 randomize;
  x:=random(3);
  sx1:=sx;
  sy1:=sy;
 if x:=1 then
   sx1:= round((ax+sx)/2);
   sy1:= round((ay+h+sy)/2);
   canvas.Pixels[sx1,sy1]:=rgb(0,0,0);
 if x:=2 then
  sx1:=round((sx+ax+2)/2);
  sy1:=round((sy+ay+h)/2);
  canvas.Pixels[sx1,sy1]:=rgb(0,0,0);
 if x:=3 then
  sx1:=round((sx+round(ax+a/2))/2);
  sy1:=round((sy+ay)/2);
  canvas.Pixels[sx1,sy1]:=rgb(0,0,0);
end;

Odnośnik do komentarza
Udostępnij na innych stronach

random(3) zrobi ci liczby: 0,1,2 (często 0.123, 1.123 itp) bo random robi losowa liczbe, nie calkowita, losową od 0 do podanego argumentu ;), a zawsze mniejszą od podanego argumentu (czyli np. random(4) zrobi liczby (tez po przecinku) od 0 do 3)

 

Więc jeżeli x ma się równać 1,2 lub 3 napisz

GML
x = round(random(3))+1

a nie x = random(3) ;)

Odnośnik do komentarza
Udostępnij na innych stronach

ok dzięki, chociaż coś. Ja to robię w delphi :)

 

a jeszcze mam pytanie, bo wychodzi mi błąd z Boolean, o co chodzi?

 

Proszę o korzystanie z magicznego przycisku edycji zamiast pisania drugiego posta z rzędu.

Woock

 

Mam takie pytanie do Was. Co oznacza błąd [Error] Unit1.pas(41): Missing operator or semicolon przy czym podkreśla mi

sx1:=sx;

sy1:=sy;

 

Ignorowanie uwag moderatora na temat doublepostów. Warn.

Woock

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...