Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2011, 22:27   #1
DANTES68
Новичок
Джуниор
 
Регистрация: 29.03.2011
Сообщений: 1
По умолчанию Графика (стрельба из пушки по цели) перевести код с Турбопаскаля в Pascal ABC

В общем программа была написана на Турбопаскале, ее нужно перевести в ABC. Помогите поджалуйста.
Описание программы
Суть игры.Стоит пушка,вначале задаёте угол пушки,она встаёт по этим углом,далее задаём скорость полёта ядра.Между целью и пушкой стоит гора,при попадании в неё,ядро исчезает и предлагается начать заново или выйти.Цель постоянно меняет своё место.Всё сделано схематично.Вот код

Код:
uses Graph,CRT;
Label Again;
var Device,Mode,x3,x4,y3,y4,Mx,My,x5,x6,x7,y5,y6,k:Integer;
var x1,y1,x2,y2,alpha,Dx,Dy,Dz,v,t:Real;
var a,b,c,a1,b1,c1:Real;
var P_abc,P_ab1a1,P_bb1c1,P_ca1c1,SSS,S_abc,S_ab1a1,S_bb1c1,S_ca1c1:Real;
var n:String;
Begin
k:=0;
again:
Randomize;
Device:=0;
InitGraph(Device, Mode, 'c:\tp7\BGI');
DirectVideo:=false;
x1:=80;
y1:=450;
t:=0;
Dz:=0.1;

x5:=150; {koopduHaTbI ropbI}
x6:=250; {koopduHaTbI ropbI}
x7:=350; {koopduHaTbI ropbI}
y5:=450; {koopduHaTbI ropbI}
y6:=300; {koopduHaTbI ropbI}

Mx:=(370+Random(200)); {MuweHb}
My:=430; {MuweHb}
x3:=Mx-20; {MuweHb}
x4:=Mx+20; {MuweHb}
y3:=My-20; {MuweHb}
y4:=My+20; {MuweHb}
Rectangle(x3,y3,x4,y4); {MuweHb}

Line(0,450,650,450); {HujH99 luHu9}
Line(0,20,650,20); {BepxH99 luHu9}
Circle(20,435,15);

{ropa ETO npen9TcTBue}
Line(x5,y5,x6,y6); {ropa}
Line(x6,y6,x7,y5); {ropa}
Line(x7,y5,x5,y5); {ropa}

a:=sqrt(Abs((x6-x5)*(x6-x5))+Abs((y6-y5)*(y6-y5))); {CtopoHbI}
b:=sqrt(Abs((x7-x6)*(x7-x6))+Abs((y6-y5)*(y6-y5))); {CtopoHbI}
c:=sqrt(Abs((x7-x5)*(x7-x5))+Abs((y5-y5)*(y5-y5))); {CtopoHbI}
P_abc:=(a+b+c)/2; {nepumetp ropbI}
S_abc:=sqrt(P_abc*(P_abc-a)*(P_abc-b)*(P_abc-c)); {nlowaDb ropbI}

{yrloBa9 LuHu9}
Line(20,450,Round(x1),Round(y1));
WriteLn('BBegute yrol oT 0 go 90'); {BBodum yrol}
ReadLn(alpha);
Dx:=cos(alpha*(pi/180));
Dy:=sin(alpha*(pi/180));
x2:=(20+(x1-20)*Dx)+(450-y1)*Dy;
y2:=(450-(x1-20)*Dy)+(y1-450)*Dx;
Line(20,450,Round(x2),Round(y2)); {Pucyetc9 LuHu9}

Writeln('BBedute ckopoctb noleTa 9dPa');
Readln(v);
repeat
SetColor(Red);
Circle(Round(x2),Round(y2),10);
Delay(40000);
SetColor(Black);
Circle(Round(x2),Round(y2),10);
t:=t+Dz;
v:=Abs(v-v/20);
x2:=x2+(v*t*Dx);
y2:=y2-(v*t*Dy-9.81*t*t/2);

{MaleHbkue CtopoHbI}
a1:=sqrt(Abs((x2-x5)*(x2-x5))+Abs((y2-y5)*(y2-y5)));
b1:=sqrt(Abs((x2-x6)*(x2-x6))+Abs((y2-y6)*(y2-y6)));
c1:=sqrt(Abs((x2-x7)*(x2-x7))+Abs((y2-y5)*(y2-y5)));

{MaleHbkue nepuMeTpbI}
P_ab1a1:=(a1+b1+a)/2;
P_bb1c1:=(b+b1+c1)/2;
P_ca1c1:=(c+a1+c1)/2;

{MaleHbkue nlowadu}
S_ab1a1:=sqrt(P_ab1a1*(P_ab1a1-a)*(P_ab1a1-b)*(P_ab1a1-c));
S_bb1c1:=sqrt(P_bb1c1*(P_bb1c1-a)*(P_bb1c1-b)*(P_bb1c1-c));
S_ca1c1:=sqrt(P_ca1c1*(P_ca1c1-a)*(P_ca1c1-b)*(P_ca1c1-c));
SSS:=S_ab1a1+S_bb1c1+S_ca1c1;
if (SSS<=S_abc) or (y2>=440) then begin
k:=k+1;
Writeln('BbICTpel Homep', k);
WriteLn('ewe pa3?(Y/N)');
Readln(n);
if n='y' then goto again
else break;
end;
if (x2>=x3) and (x2<=x4) and (y2>=y3) and (y2<=y4) or (y2<=25) then begin
k:=k+1;
Writeln('BbI nonalu BbICTpelom Homep', k);
WriteLn('ewe pa3?(Y/N)');
Readln(n);
if n='y' then goto again
else break;
end;
until y2>=440;
readLn;
CloseGraph
end.

Последний раз редактировалось DANTES68; 08.04.2011 в 00:56.
DANTES68 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
графика в Pascal ABC Анна_ Помощь студентам 1 30.03.2012 19:51
программа в Pascal ABC Графика с фором Veron_20 Паскаль, Turbo Pascal, PascalABC.NET 0 28.12.2010 22:38