Пожалуйста, подсобите написать программу. Суть её в следующем: снизу - пушка, сверху - летят предметы. Их нужно валить. В графическом режиме и попроще. Пушка стреляет и ходит вправо и влево. Сложность в том, что нужно начать. Как вообще называется эта игра. И никаких ньютонов и углов там недолжно быть. Фиг кто сделает эту прогу
Для начала распиши правила игры и примерную картинку игрового поля. Определись, будешь ли использовать ООП, какое управление, как выглядят объекты, типы движения, всякие зависимости и стрелочки и пость все сюда...
Сначала можно сделать управление с клавиатуры а потом добавить мышь.
берем у пушки следущие параметры: угол наклона, сила удара. теперь пользователь нажатием клавиши 0 или 1 управяет углом наклона. а силу регулирует путем клавишь 1,2.
создай новый тип tbullet и в неего будешь записывать координаты снаряда и момент времени в который он был выпущен.
далее пусть объекты пока прямоугольнички добавь новый тип tenemy и его свойствами будут координаты верхней левой венршины, далее длина и высота, скорость движения по оси х и по оси у, и скоко очков даст за уничтожение.
Дальше пвыполняй следующий цикл:
до тех пор пока не нажата клавишаделаешь:
пауза
увеличиваем время
если снаряд выпущен, то по формуле балистики вычисляем координаты снаряда(пусть если координаты не равны -1 будем считать что тогда снаряд не выпущен)
теперь прибавляем к координатам каждого из врагов его скорость по иксу и по игрику.
теперь обновляем экран.
причем обнеовлени е экрана будет состоять в том что ты удалишь из массива всех врагов все те враги которые вышли за пределы экрана, далее очистка экрана, и проверка попал ли снаряд или нет.
и римсуем врагов или взрыв смотря уничтожен или нет.
ну вот а теперь если нажата клавиша то выбираешь её из 1,2,+,-,пробел
и если пробел то проверяешь запущен ли снаряд, и если нет, то его запускаешь.
если 1 то увеличиваешь силу на 1 ньютон ( 1 пиксель - 1 метр)
если 2 то уменьшаешь силу на 1 ньютон
если - то уменьшаешь угол на 0.05 радиан
если + то увеличиваешь угол на 0.05 радиан
ну и все собственнор вот и весь план игры а дальше на нее можно вешать навороты, ты только сначала выложи исходник этого а дальше мы тебе с радостью поможем добать подсчет очков, мышку добавим и прочее и прочее.
Объект снизу может стрелять по летящим сверху телам, после чего они исчезают, и двигаться вправо-влево. Без ООП, управление: стрелка влево-влево, вправо-вправо, стрелять-пробел. Одним словом, без прибамбасов. Единственное-таблица рекордов и уровень сложности(первое не столь важно). Заранее спасибо
смотри мой пост выше и говори что тебя не устраивает, что-то кроме управления?
Можно без мыши; пушка стреляет только прямо, хм... зачем здесь сила удара. Когда пушка стреляет, снаряд либо попадает в шарик и он исчезает или снаряд улетает вверх. Не надо никакой взрыв, поражённая цель просто исчезает. Но появляются другие шарики и ты, типа, зарабатываешь очки гася их.
В моем варинате снаряд летит по баллестической кривой, а там важна сила с которой снаряд вылетел из пушки. Я чесно говоря не понял, что ты хочешь что бы мы тебе написали? То так дело не пойдет, ты выложи хоть что-то а дальше мы тебе поможем, а алгоритм, вроде я более менне сверху изложил.
Если проблема в том, что не знаешь с чего начать, то на тебе небольшой набросок:
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.
Твой ответ похож на текст после перевода стилусом. Ты можешь выражаться точнее ? Надо чтоб сверху падало? Не суть, я показал принцип, что верху, что сбоку - переделать пять секунд. Текст/графика - монопенисуално. А то, что не доходит, тем более, как - я не виноват