Gula odrazajuca sa vo vnutri obdlznika

Programovacie jazyky, rady, poradňa...
mudrnudl
Expert
Expert
Používateľov profilový obrázok
Príspevky: 193
Registrovaný: 22 nov 2008, 22:09

Gula odrazajuca sa vo vnutri obdlznika

Príspevok od používateľa mudrnudl »

mam spraveny obdlznik s hodnotami x1,y1,x2,y2
na zaciatku som si podla jedneho prikladu spravil tuto proceduru

Kód: Vybrať všetko

procedure lopta;
    begin
    setcolor (7);
    filledcircle (x,y,20);
    delay (3);
    setcolor (0);
    filledcircle (x,y,20);
    end;
dufam, ze spravne chapem, ze je to prikaz na zobrazenie gule s x a y hodnotami ktore si este zadam a polomerom 20, ktora sa po 3 ms prekryje ciernou (zmaze sa)


no ale co teraz...
poradte mi niekto ako na to s jednoduchymi prikazmi (neovladam label alebo co...) najlepsie len s integerom a jednoduchymi cyklami a podmienkami...
nechcem riesenie, pytam si len radu akym sposobom by som mal pokracovat pri svojich chabych schopnostiach...
vopred dakujem za ochotu to so mnou riesit

//autoeditácia príspevku (01 Máj 2010, 18:34)
nasiel som si tento programik, lenze nechapem jeho podstatu - nemohol by mi niekto vysvetlit ako funguje?

Kód: Vybrať všetko

program lopta2;

uses Crt, Graph;
 
var b,a,x2,y2,x1,y1,x,y,i, Gd, Gm: Integer;
 
 
begin
 randomize;
 Gd := Detect;
 InitGraph(Gd, Gm, '');
 
 if GraphResult <> grOk then
    Halt(1);
 
 x:=random(630);
 y:=random(470);
 a:=random(2);
 b:=random(2);
 
 if a=1 then x1:=-4
        else x1:=4;
 if b=1 then y1:=-4
        else y1:=4;
 
 setcolor(0);
 
 repeat
   PieSlice(x,y,0,360,5);
   x2:=x;
   y2:=y;
   x:=x+x1;
   y:=y+y1;
 
   if x<= 10 then x1:=-x1;
   if y<= 10 then y1:=-y1;
   if x>=630 then x1:=-x1;
   if y>=470 then y1:=-y1;
 
   circle(x2,y2,5);
 until keypressed;
 
 CloseGraph;
end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Gula odrazajuca sa vo vnutri obdlznika

Príspevok od používateľa audiotrack »

ktorej časti z neho nerozumieš? Robí to to, čo požaduješ takže popis programu je vlastne totožný s tvojími požiadavkami. Krúžok sa pohybuje a odráža v nejakej ohraničenej ploche
mudrnudl
Expert
Expert
Používateľov profilový obrázok
Príspevky: 193
Registrovaný: 22 nov 2008, 22:09

Re: Gula odrazajuca sa vo vnutri obdlznika

Príspevok od používateľa mudrnudl »

takze - konecne som sa s pomocou jednej osoby dostal k nejakemu vlastnemu vysledku, ktoremu rozumiem...
lenze mam problem - error 113: error in statement - kurzor blika na zaciatku riadku prveho else

Kód: Vybrať všetko

program setric;
uses grafika;
var x,y,x1,x2,y1,y2,a,b,c,d:integer;
procedure lopta;
    begin
    setcolor (7);
    filledcircle (x,y,20);
    delay (50);
    setcolor (0);
    filledcircle (x,y,20);
    delay (50);
    end;
begin
randomize;
x1:=1;
x2:=1;
y1:=1;
y2:=1;
if x1=x2 then
   begin
   x1:=random (20)+40;
   x2:=random (20)+600;
   end;
if y1=y2 then
   begin
   y1:=random (20)+40;
   y2:=random (20)+300;
   end;
setcolor (3);
rectangle (x1,y1,x2,y2);
a:=(y2-y1-40);
b:=(x2-x1-40);
c:=random (a);
d:=random (b);
y:=(c+y1+20);
x:=(d+x2+20);
repeat
begin
      if x<(x2-20)
         then
             begin
             x:=x+1;
             end;
            else
                 begin
                 x:=(x-1);
                 end;
      if y<(y2-20)
         then
             begin
             y:=(y+1);
             end;
             else
                 begin
                 y:=(y+1);
                 end;
lopta;
until keypressed;
end.
bol by som strasne vdacny za pomoc... uz z toho zacinam zase sediviet...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Gula odrazajuca sa vo vnutri obdlznika

Príspevok od používateľa BX »

Pred ELSE sa bodkočiarka nedáva ;)
mudrnudl
Expert
Expert
Používateľov profilový obrázok
Príspevky: 193
Registrovaný: 22 nov 2008, 22:09

Re: Gula odrazajuca sa vo vnutri obdlznika

Príspevok od používateľa mudrnudl »

ano, to je spravny postreh, pomohlo to...
len este mam tu istu chybu na zaciatku riadku until
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Gula odrazajuca sa vo vnutri obdlznika

Príspevok od používateľa audiotrack »

pred until ti chýba end
mudrnudl
Expert
Expert
Používateľov profilový obrázok
Príspevky: 193
Registrovaný: 22 nov 2008, 22:09

Re: Gula odrazajuca sa vo vnutri obdlznika

Príspevok od používateľa mudrnudl »

ano dakujem - uz to funguje, ale zistil som zase nieco nove
program mi spravi vsetko v poriadku ale neviem, ako mu prikazat, ze ked narazi na stenu tak, nech otoci x:=x+1 na x:=x-1
tu je program v terajsej podobe

Kód: Vybrať všetko

program setric;
uses grafika;
var x,y,x1,x2,y1,y2,a,b,c,d,k,l,m,n:integer;
procedure lopta;
    begin
    setcolor (7);
    filledcircle (x,y,20);
    delay (25);
    setcolor (0);
    filledcircle (x,y,20);
    delay (25)
    end;
begin
randomize;
x1:=1;
x2:=1;
y1:=1;
y2:=1;
if x1=x2 then
   begin
   x1:=random (20)+40;
   x2:=random (20)+600;
   end;
if y1=y2 then
   begin
   y1:=random (20)+40;
   y2:=random (20)+300;
   end;
setcolor (3);
rectangle (x1,y1,x2,y2);
a:=(y2-y1-40);
b:=(x2-x1-40);
c:=random (a);
d:=random (b);
y:=(c+y1+20);
x:=(d+x1+20);
repeat
begin
      if x<(x2-21) then x:=x+1;
      if y<(y2-21) then y:=y+1;
lopta;
end;
until keypressed;
end.
zadrhel je tu:
begin
if x<(x2-21) then x:=x+1;
if y<(y2-21) then y:=y+1;
lopta;
end;
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Gula odrazajuca sa vo vnutri obdlznika

Príspevok od používateľa audiotrack »

zapoj trochu hlavu preboha. Príde hore, tak si pamätáme že máme ísť dole. Príde dole, tak si pamätáme že ide hore. Jedna logická premenná ktorá si pamätá smer a mení sa iba na hraniciach. To isté so smerom vľavo - vpravo
Napísať odpoveď