Wymazywanie linii przez SetColor (black);

0

Witam
Mam problem z programem napisałem go tak że gdy kliknę klawisz (strzałkę w dół) to pojawia się linia, i prawie udał mi się taki efekt:
...1o________2o
.....1o_____2o
........1o_2o
.....2o_____1o
..2o_________1o

(wygląda to tak jak by się linia obróciła, taki ala efekt 2d)
Lecz w moim programie wygląda to tak

...._________
...._________
...._________
..____________


w tych pierwszych 3 miejscach linia się zmniejsza ale niestety nie mogę tego zobaczyć bo nie weim jak ustawić setcolor (black); pomoże ktoś ?? wstawie to co do tej pory zrobiłem:

program linia;
uses Graph, crt;
var 
    k,t,i,o :integer;
    znak :char;
BEGIN
    clrscr;
    K:=Detect;
    InitGraph (k,t,'C:\TP\BGI');
    znak := readkey;
    i:=0;
    o:=0;
repeat
    delay (300);
    if (znak = #0) then begin
end;
    setcolor (white);
    if (znak = #80) then line (i+300,300,o+400,300);
    setcolor (black);
    if (znak = #80) then line (i+300,300,o+400,300);
    i:=i+10;
    o:=o-10;
until keypressed;
readln;
CloseGraph;
end.

Próbowałem już to zrobić chyba na 1000 sposobów i nic :( BŁAGAM O POMOC !! Z góry dziękuję !!

0

Jak to właściwie ma być wg Ciebie? Program ma najpierw czekać, aż użytkownik wciśnie jakiś klawisz, a następnie jeśli wciśnięto strzałkę w dół to będzie pojawiać się animacja wydłużającej i skracającej się linii dopóki użytkownik nie wciśnie jakiegoś klawisza? Czy animacja ma działać jedynie gdy użytkownik trzyma wciśniętą strzałkę w dół? Czy może linia ma się powiększać gdy wciśnie się strzałkę w dół, a np. jeśli w górę to będzie się zmniejszać? Dziwię się, że w ogóle cokolwiek u Ciebie widać po uruchomieniu tego programu, bo tam rysujesz białą kreskę, a następnie od razu zamazujesz ją czarną :P

0

Chodzi o to że kiedy ktoś KLIKNIE STRZAŁKĘ W LEWO to rysuje się trójkąt. Jego ramiona zbliżają się do siebie, przechodzą przez siebie i oddalają się od siebie. A podstawa ma cały czas przesuwać się razem z ramionami. Zobacz teraz poprawiłem program zauważ że po przejściu ramion przez siebie nie rysuje się biała linia i właśnie o to mi cały czas chodziło tylko nie wiedziałem jak to dobrać w słowa... te żółte linie są po to aby pokazać jak pozbyłem się nadmiaru linii która "wystawała"

program trojka;
uses Graph, crt;
var k,t,i,o,p,q :integer;
        znak :char;
BEGIN
clrscr;
K:=Detect;
InitGraph (k,t,'C:\TP\BGI');
znak := readkey;
znak := readkey;
i:=0;
o:=0;
p:=0;
q:=0;
repeat
delay (200);
if (znak = #0) then begin
end;
setcolor (white); {Ramiona Tr˘jkata zapalone}
moveto (351,250);
linerel (o+50,50);
moveto (350,250);
linerel (i+-50,50);
setcolor (black);   {Ramiona tr˘jkata zgaszone}
moveto (351,250);
linerel (p+53,50);
moveto (350,250);
linerel (q-53,50);
setcolor (white);
if (znak = #75) then line (i+300,300,o+400,300);   {rysuje podstawe}
setcolor (yellow);  {TUTAJ BYL BLACK}
if (znak = #75) then line (400,300,o+400,300);   {gasi "nadmiar" podstawy}
if (znak = #75) then line (i+300,300,299,300);

i:=i+3; {do podstawy i ramion}
o:=o-3;
p:=p-3; {do ramion}
q:=q+3;
until keypressed;
readln;
CloseGraph;
end.

PS :
Podpowie ktoś co muszę wpisać w kodzie żeby po przejściu ramion trójkąt zatrzymał się w tym samym miejscu ?

0

Udało mi się z tą podstawą :D tylko teraz nie wiem co mam zrobić aby ten trójkąt zatrzymał się sam po przejściu ramion w jakimś określonym miejscu nie wiem czy to zrobić instrukcją for czy jakąś inna podpowie ktoś ?

program trojka;
uses Graph, crt;
var k,t,i,o,p,q :integer;
        znak :char;
BEGIN
clrscr;
K:=Detect;
InitGraph (k,t,'C:\TP\BGI');
znak := readkey;
znak := readkey;
i:=0;
o:=0;
p:=0;
q:=0;
repeat
delay (200);
if (znak = #0) then begin
end;
setcolor (white); {Ramiona Tr˘jkata zapalone}
moveto (351,250);
linerel (o+50,50);

moveto (350,250);
linerel (i+-50,50);
setcolor (black);   {Ramiona tr˘jkata zgaszone}
moveto (351,250);
linerel (p+53,50);
moveto (350,250);
linerel (q-53,50);
setcolor (white);
if (znak = #75) then line (i+300,300,o+400,300);   {rysuje podstawe}
setcolor (black);
if (znak = #75) then line (400,300,o+400,300);   {gasi "nadmiar" podstawy}
if (znak = #75) then line (i+300,300,299,300);
setcolor (white);
if (znak = #75) then line (i+300,300,o+400,300); {rysuje podsawe po minieciu sie ramion tr˘jata}

i:=i+3; {do podstawy i ramion}
o:=o-3;
p:=p-3; {do ramion}
q:=q+3;
until keypressed;
readln;
CloseGraph;
end.

Sorry że post pod postem i że wam tak dupę zawracam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.