Пожалуйста, подсобите написать программу. Суть её в следующем: снизу - пушка, сверху - летят предметы. Их нужно валить. В графическом режиме и попроще. Пушка стреляет и ходит вправо и влево. Сложность в том, что нужно начать. Как вообще называется эта игра. И никаких ньютонов и углов там недолжно быть. Фиг кто сделает эту прогу
Для начала распиши правила игры и примерную картинку игрового поля. Определись, будешь ли использовать ООП, какое управление, как выглядят объекты, типы движения, всякие зависимости и стрелочки и пость все сюда...
Сначала можно сделать управление с клавиатуры а потом добавить мышь.
берем у пушки следущие параметры: угол наклона, сила удара. теперь пользователь нажатием клавиши 0 или 1 управяет углом наклона. а силу регулирует путем клавишь 1,2.
создай новый тип tbullet и в неего будешь записывать координаты снаряда и момент времени в который он был выпущен.
далее пусть объекты пока прямоугольнички добавь новый тип tenemy и его свойствами будут координаты верхней левой венршины, далее длина и высота, скорость движения по оси х и по оси у, и скоко очков даст за уничтожение.
Дальше пвыполняй следующий цикл:
до тех пор пока не нажата клавишаделаешь:
пауза
увеличиваем время
если снаряд выпущен, то по формуле балистики вычисляем координаты снаряда(пусть если координаты не равны -1 будем считать что тогда снаряд не выпущен)
теперь прибавляем к координатам каждого из врагов его скорость по иксу и по игрику.
теперь обновляем экран.
причем обнеовлени е экрана будет состоять в том что ты удалишь из массива всех врагов все те враги которые вышли за пределы экрана, далее очистка экрана, и проверка попал ли снаряд или нет.
и римсуем врагов или взрыв смотря уничтожен или нет.
ну вот а теперь если нажата клавиша то выбираешь её из 1,2,+,-,пробел
и если пробел то проверяешь запущен ли снаряд, и если нет, то его запускаешь.
если 1 то увеличиваешь силу на 1 ньютон ( 1 пиксель - 1 метр)
если 2 то уменьшаешь силу на 1 ньютон
если - то уменьшаешь угол на 0.05 радиан
если + то увеличиваешь угол на 0.05 радиан
ну и все собственнор вот и весь план игры а дальше на нее можно вешать навороты, ты только сначала выложи исходник этого а дальше мы тебе с радостью поможем добать подсчет очков, мышку добавим и прочее и прочее.
Объект снизу может стрелять по летящим сверху телам, после чего они исчезают, и двигаться вправо-влево. Без ООП, управление: стрелка влево-влево, вправо-вправо, стрелять-пробел. Одним словом, без прибамбасов. Единственное-таблица рекордов и уровень сложности(первое не столь важно). Заранее спасибо
смотри мой пост выше и говори что тебя не устраивает, что-то кроме управления?
В моем варинате снаряд летит по баллестической кривой, а там важна сила с которой снаряд вылетел из пушки. Я чесно говоря не понял, что ты хочешь что бы мы тебе написали? То так дело не пойдет, ты выложи хоть что-то а дальше мы тебе поможем, а алгоритм, вроде я более менне сверху изложил.
Игра, что-то вроде spaceimpact только сверху и шарик уничтожается за один выстрел.
Если проблема в том, что не знаешь с чего начать, то на тебе небольшой набросок:
uses crt;
type point=record x,y:integer; end;
var i,res:integer;
ch:char;
p:point;
sn,cl:array [1..10] of point;
t:byte;
scr: array [0..24,0..79] of word absolute $b800:0;
procedure paint;
var i,j:integer;
begin
fillchar(scr,80*50,0);
scr[p.y,p.x]:=$0731; inc(t); t:=t mod 10;
for I:=1 to 10 do begin
scr[cl[i].y,cl[i].x]:=$072b;
if t=0 then cl[i].x:=(cl[i].x+79) mod 80;
end;
for I:=1 to 10 do
if sn[i].x>0 then begin
scr[sn[i].y,sn[i].x]:=$072a;
if sn[i].y>1 then begin
if t=0 then begin dec(sn[i].y);
for j:=1 to 10 do
if (sn[i].x=cl[j].x) and (sn[i].y=cl[j].y) then begin
inc (res); cl[j].x:=80; cl[j].y:=random (10);
end;
end;
end else sn[i].x:=0;
end;
gotoxy(1,1); textcolor(7);writeln ('popal=',res);
end;
begin
p.x:=40; p.y:=24; t:=0;
i:=0; for i:=1 to 10 do begin cl[i].x:=random (80); cl[i].y:=random (10); end;
repeat
ch:=char(0);
paint; delay (10);
while keypressed do ch:=readkey;
case ch of
'z': if p.x>1 then dec(p.x);
'x': if p.x<80 then inc(p.x);
' ': begin
i:=1; while (sn[i].x>0) and (i<10) do inc (i);
if i<10 then sn[i].x:=p.x; sn[i].y:=p.y-1;
{while}
end;
end;
until (ch='q') or (ch=char(27));
end.
Вообще-то, если я правильно понял, это это не то, что нужно
Это, можно понимать, объекты, которые нужно уничтожать. Но они летят не сверху. И вообще, кусками до меня не доходит
Твой ответ похож на текст после перевода стилусом. Ты можешь выражаться точнее ? Надо чтоб сверху падало? Не суть, я показал принцип, что верху, что сбоку - переделать пять секунд. Текст/графика - монопенисуално. А то, что не доходит, тем более, как - я не виноват