Skocz do zawartości

[Pascal] grafika w Turbo Pascalu, czołgi w pascalu


frania

Polecane posty

Mam napisać program na informatykę na wczoraj:

Dwa czołgi strzelają na zmianę (prędkość (albo siłę w %) i kąt jednego czołgu wprowadza użytkownik, a drugiego losuje komputer). Obliczenia są chyba w porządku, ale gorzej z grafika. Czy ktoś mi może pomóc?

Po całym dniu spędzonym przed komputerem udało mi się zrobić coś takiego:

 

 

program czolgi;
uses
  graph,crt;

type
 cialo = Record
   x,y    :real;
   v,alfa :real;
 end;

const
  g=9.81;

var
  driver, tryb:integer;
  t:real;
  pocisk:cialo;
  ster:byte;
  tcalk:real;
  zas:real;


function Deg2Rad(kat:Real):Real;
begin;
 Deg2Rad:=kat*pi/180;
end;

function tan(x:real):real;
begin
  tan:=sin(x)/cos(x);
end;


{Rzut ukośny}

function czas_upadku(v,alfa:Real):Real;
begin;
 czas_upadku:=2*v*sin(deg2rad(alfa))/g;
end;

function zasieg_rzutu(v, alfa:Real):Real;
begin;
 zasieg_rzutu:= v*v* sin(2*(deg2rad(alfa)))/g;
end;



begin
{readln(pocisk.alfa);
kat:=deg2rad(pocisk.alfa);}

writeln('Podaj % prędkości początkowej');

readln(pocisk.v);
pocisk.v:=pocisk.v;

writeln('Podaj kąt wystrzału.');
readln(pocisk.alfa);
pocisk.alfa:=deg2rad(pocisk.alfa);

pocisk.x:=0;
pocisk.y:=0;

tcalk:=czas_upadku(pocisk.v,pocisk.alfa);
writeln('czas upadku = ',tcalk:0:2);
zas:=zasieg_rzutu(pocisk.v,pocisk.alfa);
writeln('zasięg = ',zas:0:0);
writeln('alfa = ',pocisk.alfa:0:2);
writeln('cosalfa = ',sin(pocisk.alfa):0:2);
writeln('v pocisku = ',pocisk.v:0:2);
writeln('+x = ',round(pocisk.v*tcalk*cos(pocisk.alfa)));
writeln('+y = 
',round(pocisk.v*(tcalk/2)*sin(pocisk.alfa)-(g*sqr(tcalk/2)/2)));
writeln('tanalfa = ',tan(pocisk.alfa):0:2);

for ster:=0 to round(zas)*10 do
  begin
        pocisk.x:=ster;
        pocisk.y:=(pocisk.x*tan(pocisk.alfa))-((g*sqr(pocisk.x))/(2*sqr(pocisk.v)*sqr(cos(pocisk.alfa))));
        writeln(round(pocisk.x),' ',round(pocisk.y));
  end;

readln;


{t:=2;

writeln('xfunkc ',round(licz_wsp(pocisk).x));

for ster:=10 downto 1 do
  begin
     begin;
        pocisk.x:=pocisk.x+(pocisk.v*(tcalk/ster)*cos(pocisk.alfa));
        writeln('x = ',pocisk.x:0:0);
        pocisk.y:=pocisk.y-(pocisk.v*(tcalk/ster)*sin(pocisk.alfa)-((g*sqr(tcalk/ster)/2)));
        writeln('y = ',pocisk.y:0:0);
     end;
  end;

readln;}


driver:=detect;
initgraph(driver,tryb,'');

putpixel(round(pocisk.x+100),round(600-pocisk.y),white);

for ster:=0 to round(zas) do
  begin
        pocisk.x:=ster;
        pocisk.y:=(pocisk.x*tan(pocisk.alfa))-((g*sqr(pocisk.x))/(2*sqr(pocisk.v)*sqr(cos(pocisk.alfa))));
        putpixel(round(pocisk.x+100),round(600-pocisk.y),white);
  end;


delay(5000);
closegraph;

end.
OQł7Źyę;ŚZąĆq@VćB'WGFW&f6PGP6Ć&V6&@&VcĆĆf&VVćCf\"s&VŚgVć7FFVs%&BśC&V&V'WBŚŚgVć7F7Ś5WFRcĆf&V&VŚgVć7FŚ6Vu'WGRcĆĆf&V&VŚgVć7FĆ7w7C&V#6Ć6ĆóĆVVFFŚgVć7FFVs%&BśC&V&VŚ&VvFVs%&CŁśBóŚVćC'WBŚŚgVć7F7Ś5WFRcĆf&V&VŚ&Vv7Ś5WFSŁc6FVs%&BĆfsŚVćCŚgVć7FŚ6Vu'WGRcĆĆf&V&VŚ&VvŚ6Vu'WGSŁ7\"c6FVs%&B\"ŚĆfsŚVćCŚgVć7FĆ7w7C&V#6Ć6ĆóŚ&VvĆ7w7Ł#Ć7w7Ł\"cŚ62\"ćĆfCbĆ7w7fwCŚ6Vu'WGR\"c\"ćĆfFVĆ7w7ŁrBBó V6PĆ7w7ŁrBBó#ŚVćC&VvsŁÓVćBORŹqP)A   )UIŃą
ą)Y(       
ąź(ąQ%Ń(%Ń(}ą}%Ń()      (
ąM(]ŃAI1Ą    ą(]ŃAI1Ą    (]Ń1(]Ń1
ą}Ą        ą(]Ń1ią}ŃĄ             ą(]Ń1((MąŃ(Ń(% ŃĄąQ(}Ń5`(}Ń5d(ŃźĄ}
Ą            ąź((
ą(IŃąą}ą}(    1}Ąźą    (
ą(   }(   }((ą((IUŃ-(
ą)(

Link do komentarza
Udostępnij na innych stronach

A czego więcej oczekujesz po Turbo Pascal'u ??

Możesz popróbować jeszcze w trybie 13h, on pozwala na mniejszą rozdzielczość niż graph, ale za to 256 kolorów. Bibliotekę do tego trybu znajdziesz na stronie helionu, po wyszukaniu książki z ich wydawnictwa o tworzeniu gier w Turbo Pascalu.

BTW. zapomniałeś o znacznikach kodu...

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...