Среда, 08.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Игра
MatrixДата: Понедельник, 17.01.2011, 03:59 | Сообщение # 1
Старый знакомый
Группа: Пользователи
Сообщений: 34
Репутация: 2
Замечания: 0%
Статус: Offline
Вот ребят сделал игру,кому надо, пользуйтесь.Это так сказать моя первая объёмная работа).Можно совместно её доработать))).Вот условие:Пушка на экране стреляет в цель ядрами. С какого выстрела она поразит противника? Между пушкой и целью расположена небольшая гора. Перед началом игры случайно задается горизонтальная координата цели. Затем рисуется картинка.
Перед каждым выстрелом компьютер отображает на экране номер выстрела и запрашивает у человека стартовую скорость ядра v и угол alpha наклона ствола пушки к земле. Затем летит ядро. Полет ядра подчиняется двум уравнениям: s=v*t*cos(alpha) и h=v*t*sin(alpha) – 9.81*t2/2 . Считается, что цель поражена, если ядро «отгрызло» от нее хоть маленький кусочек

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.

Добавлено (17.01.2011, 03:59)
---------------------------------------------
ну так что, будут какие-нибудь предложения по улучшению игры?

Сообщение отредактировал Matrix - Пятница, 14.01.2011, 03:14
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;