|
Posledná zmena: 8.10.2002
|
podmienky a procedúry
|
Korytnačky kreslia pomocou procedúr
- vo všetkých úlohách predpokladáme,
že v globálna premenná k typu
TKor je už inicializovaná, t.j. korytnačka
už existuje niekde v ploche
- v úlohách môžete predpokladať,
že existuje "preddefinovaná" procedúra
poly s tromi parametrami: počet opakovaní,
dĺžka kroku a uhol
šesťuholníky
|
napíšte procedúru
ule(n:integer; a:real); nakreslí vedľa seba n
šesťuholníkov so stranou a
|
var
k:TKor;
procedure poly(n:integer; d,u:real);
begin
while n>0 do begin
k.Dopredu(d);
k.Vpravo(u);
dec(n);
end;
end;
procedure ule(n:integer; a:real);
begin
while n>0 do begin
poly(10,a,60);
k.Vpravo(120);
dec(n);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
k:=TKor.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
zmaz; k.PresunXY(50,200);
ule(10,30);
end;
|
slnko
|
procedúra slnko(n:integer;
d,s:real); nakreslí slnko s n
lúčmi, pričom dĺžka lúča
je d a dĺžka oblúka
(dĺžka strany n-uholníka)
je s
|
procedure slnko(n:integer; d,s:real);
var
i:integer;
begin
for i:=1 to n do begin
k.Dopredu(s);
k.Vlavo(90-180/n);
k.Dopredu(d); k.Dopredu(-d);
k.Vpravo(90+180/n);
end;
end;
|
štvorce
|
procedúra stvorce(n:integer;
a:real); nakreslí n prekrývajúch
sa štvorcov veľkosti a, pričom
sa navzájom prekrývajú
v 1/3 strany
|
procedure stvorce(n:integer; a:real);
var
i:integer;
begin
for i:=1 to n do begin
k.Vlavo(90); k.Dopredu(a/3);
k.Vpravo(90); k.Dopredu(a*2/3);
end;
for i:=1 to n do begin
k.Dopredu(a/3); k.Vpravo(90);
k.Dopredu(a); k.Vpravo(90);
k.Dopredu(a); k.Vpravo(90);
k.Dopredu(a*2/3); k.Vpravo(90);
end;
end;
|
schody
|
procedúra schody(n:integer;
a:real); nakreslí z rôzne veľkých
obdĺžnikov
|
procedure schody(n:integer; a:real);
var
i,j:integer;
begin
for i:=n downto 1 do
for j:=1 to 2 do begin
k.Dopredu(i*a); k.Vpravo(90);
k.Dopredu((n-i+1)*a); k.Vpravo(90);
end;
end;
|
Náhodné prechádzky
mesiac
|
metódou stráženej
náhodnej prechádzky zabezpečte,
aby korytnačka nevyšla z oblasti "mesiac": -
musí byť v prvej kružnici
s polomerom 50 a stredom (250,200) -
nesmie byť v druhej kružnici
s polomerom 50 a stredom (300,200)
|
begin
zmaz; k.PresunXY(250,200);
while true do begin
k.Vpravo(random(360)); k.Dopredu(5);
if (k.Vzd(250,200)>50) or (k.Vzd(300,200)<50) then
k.Dopredu(-5);
cakaj(1);
end;
end;
|
farebné sústredné
kruhy
|
metódou stráženej
náhodnej prechádzky vyfarbite
dva sústredné kruhy: -
vnútorný žltou - polomer
30 - vonkajší červenou - polomer
50
|
begin
zmaz; k.PresunXY(250,200);
while true do begin
k.Vpravo(random(360)); k.Dopredu(5);
if k.Vzd(250,200)<30 then k.FP:=clYellow
else if k.Vzd(250,200)<50 then k.FP:=clRed
else k.Dopredu(-5);
cakaj(1);
end;
end;
|
farebný mesiac
|
metódou stráženej
náhodnej prechádzky vyfarbite
mesiac žltou, prienik kruhov tmavomodrou
- celé na čiernom pozadí -
musí byť v prvej kružnici
s polomerom 50 a stredom (250,200) -
nesmie byť v druhej kružnici
s polomerom 50 a stredom (300,200)
|
begin
zmaz(clBlack); k.PresunXY(250,200);
while true do begin
k.Vpravo(random(360)); k.Dopredu(5);
if k.Vzd(250,200)>50 then k.Dopredu(-5)
else if k.Vzd(300,200)>50 then k.FP:=clYellow
else k.FP:=clNavy;
cakaj(1);
end;
end;
|
zemeguľa
|
Naprogramujte náhodnú prechádzku 3 korytnačiek, ktoré sú vytvorené v strede
plochy s chránenou oblasťou kruhom s polomerom 50, pričom každá korytnačka má
hrubé pero s farbami žltá, modrá a zelená a pohybuje sa krokom 5.
|
var
k1,k2,k3:TKor;
x,y:real;
begin
k1:=Tkor.Create; k1.FP:=clBlue; k1.HP:=4;
k2:=Tkor.Create; k2.FP:=clGreen; k2.HP:=4;
k3:=Tkor.Create; k3.FP:=clYellow; k3.HP:=4;
x:=k1.X; y:=k1.Y;
while true do begin
k1.vpravo(random(360)); k1.Dopredu(5);
k2.vpravo(random(360)); k2.Dopredu(5);
k3.vpravo(random(360)); k3.Dopredu(5);
if k1.vzd(x,y)>50 then k1.Dopredu(-5);
if k2.vzd(x,y)>50 then k2.Dopredu(-5);
if k3.vzd(x,y)>50 then k3.Dopredu(-5);
cakaj(1);
end;
end;
|
Korytnačky sa navzájom "vidia"
sínus
|
Nakreslite graf funkcie f(x)=sin(x)
nasledujúcim spôsobom: -
jedna korytnačka sa bude hýbať
po kružnici, - druhá korytnačka bude rovnomerne
zväčšovaľ svoju x-ovú súradnicu
a y-ovú súradnicu bude
mať totožnú s y-ovou súradnicou
prvej korytnačky.
|
var
k1,k2:TKor;
begin
k1:=TKor.Create(150,200);
k2:=TKor.Create(160,200);
while k2.X<sirka do begin
k1.Dopredu(2); k1.Vlavo(3);
k2.ZmenXY(k2.X+1,k1.Y);
cakaj(1);
end;
end;
|
|
© 2002 AB, KVI blaho@fmph.uniba.sk
|