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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2010, 23:52   #1
hasana
Пользователь
 
Регистрация: 09.05.2010
Сообщений: 43
По умолчанию игра - пушка стреляет ядром и при этом надо выбрать скорость и угол. посередине стоит преграда

игра состоит в следующем...
пушка стреляет ядром и при этом надо выбрать скорость и угол...
посередине стоит преграда в виде треугольника(гора)... помогите составить код, при котором, ядро, столкнувшееся с горой останавливается)
Код:
uses graph;
var device,mode:integer;
x1,x2:integer;
v,a,h,s:integer;
x,y:integer;
alfa,t:real;
begin
device:=detect;
initgraph(device,mode,'');
line(0,400,640,400);
circle(60,390,10);
line(40,400,70,370);
line(200,400,290,310);
line(370,400,290,310);
randomize;
x1:=(390+random(221));
x2:=x1+40;
rectangle(x1,400,x2,385);
writeln('скорость');
readln(v);
writeln('угол');
readln(a);
alfa:=a*pi/180;
t:=0;
repeat
h:=round(v*t*sin(alfa)-(9.81*t*t)/2);
s:=round(v*t*cos(alfa));
x:=70+s;
y:=370-h;
setcolor(white);
setfillstyle(1,white);
circle(x,y,10);
floodfill(x,y,white);
setfillstyle(1,black);
setcolor(black);
circle(x,y,10);
floodfill(x,y,black);
t:=t+0.01;

until x>500;



readln;
closegraph
end.
hasana вне форума Ответить с цитированием
Старый 20.05.2010, 01:02   #2
hasana
Пользователь
 
Регистрация: 09.05.2010
Сообщений: 43
По умолчанию

ну... пока нет идей, у меня появилась следующая
Код:
repeat
h:=round(v*t*sin(alfa)-(9.81*t*t)/2);
s:=round(v*t*cos(alfa));
x:=70+s;
y:=370-h;
setcolor(white);
setfillstyle(1,white);
circle(x,y,10);
floodfill(x,y,white);
setfillstyle(1,black);
setcolor(black);
circle(x,y,10);
floodfill(x,y,black);
t:=t+0.01;
for i:=1 to 180 do begin;
g:=g+1;
if (x=(200+g))and(y=(400-g))then exit end;

until x>700;
но почемута через секунду после выполнения программы пишет арифметическое переполнение... мож это сможете объяснить

Последний раз редактировалось hasana; 20.05.2010 в 01:05. Причина: извиняюсь, насчёт переполнения сам понял)
hasana вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пушка Shevali Помощь студентам 0 22.04.2009 21:03
Как узнать скорость при закачке tIdHttp.get? Altera Работа с сетью в Delphi 7 09.04.2009 11:27
Пушка-цели [C++] Vinny Помощь студентам 1 15.01.2008 03:40
элементы массива заносились в ListBox при этом располагались в столбик?! Ensoph Компоненты Delphi 3 14.09.2007 11:49