IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Непонятная игра, Игра
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: 1234

Репутация: -  -1  +


Пожалуйста, подсобите написать программу. Суть её в следующем: снизу - пушка, сверху - летят предметы. Их нужно валить. В графическом режиме и попроще. Пушка стреляет и ходит вправо и влево. Сложность в том, что нужно начать. Как вообще называется эта игра. И никаких ньютонов и углов там недолжно быть. Фиг кто сделает эту прогу

Сообщение отредактировано: 1234 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ночной волк
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской

Репутация: -  1  +


Для начала распиши правила игры и примерную картинку игрового поля. Определись, будешь ли использовать ООП, какое управление, как выглядят объекты, типы движения, всякие зависимости и стрелочки и пость все сюда...


--------------------
Не думай о белой обезьяне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


Сначала можно сделать управление с клавиатуры а потом добавить мышь.

берем у пушки следущие параметры: угол наклона, сила удара. теперь пользователь нажатием клавиши 0 или 1 управяет углом наклона. а силу регулирует путем клавишь 1,2.

создай новый тип tbullet и в неего будешь записывать координаты снаряда и момент времени в который он был выпущен.

далее пусть объекты пока прямоугольнички добавь новый тип tenemy и его свойствами будут координаты верхней левой венршины, далее длина и высота, скорость движения по оси х и по оси у, и скоко очков даст за уничтожение.

Дальше пвыполняй следующий цикл:

до тех пор пока не нажата клавишаделаешь:

пауза

увеличиваем время

если снаряд выпущен, то по формуле балистики вычисляем координаты снаряда(пусть если координаты не равны -1 будем считать что тогда снаряд не выпущен)

теперь прибавляем к координатам каждого из врагов его скорость по иксу и по игрику.

теперь обновляем экран.

причем обнеовлени е экрана будет состоять в том что ты удалишь из массива всех врагов все те враги которые вышли за пределы экрана, далее очистка экрана, и проверка попал ли снаряд или нет.

и римсуем врагов или взрыв смотря уничтожен или нет.

ну вот а теперь если нажата клавиша то выбираешь её из 1,2,+,-,пробел

и если пробел то проверяешь запущен ли снаряд, и если нет, то его запускаешь.

если 1 то увеличиваешь силу на 1 ньютон ( 1 пиксель - 1 метр)

если 2 то уменьшаешь силу на 1 ньютон

если - то уменьшаешь угол на 0.05 радиан

если + то увеличиваешь угол на 0.05 радиан

ну и все собственнор вот и весь план игры а дальше на нее можно вешать навороты, ты только сначала выложи исходник этого а дальше мы тебе с радостью поможем добать подсчет очков, мышку добавим и прочее и прочее.


Сообщение отредактировано: arhimag -


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: 1234

Репутация: -  -1  +



Объект снизу может стрелять по летящим сверху телам, после чего они исчезают, и двигаться вправо-влево. Без ООП, управление: стрелка влево-влево, вправо-вправо, стрелять-пробел. Одним словом, без прибамбасов. Единственное-таблица рекордов и уровень сложности(первое не столь важно). Заранее спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


смотри мой пост выше и говори что тебя не устраивает, что-то кроме управления?


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: 1234

Репутация: -  -1  +


Цитата(arhimag @ 20.12.2006 21:13) *

смотри мой пост выше и говори что тебя не устраивает, что-то кроме управления?

Можно без мыши; пушка стреляет только прямо, хм... зачем здесь сила удара.
Когда пушка стреляет, снаряд либо попадает в шарик и он исчезает или снаряд улетает вверх.
Не надо никакой взрыв, поражённая цель просто исчезает. Но появляются другие шарики и ты, типа, зарабатываешь очки гася их.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


smile.gif В моем варинате снаряд летит по баллестической кривой, а там важна сила с которой снаряд вылетел из пушки. Я чесно говоря не понял, что ты хочешь что бы мы тебе написали? То так дело не пойдет, ты выложи хоть что-то а дальше мы тебе поможем, а алгоритм, вроде я более менне сверху изложил.


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: 1234

Репутация: -  -1  +


Игра, что-то вроде spaceimpact только сверху и шарик уничтожается за один выстрел.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Если проблема в том, что не знаешь с чего начать, то на тебе небольшой набросок:

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.

Теперь ты знаешь с чего начать, продолжай smile.gif

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: 1234

Репутация: -  -1  +


Вообще-то, если я правильно понял, это это не то, что нужно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(1234 @ 21.12.2006 17:36) *

Вообще-то, если я правильно понял, это это не то, что нужно

А что натолкнуло тебя на мысль о неправильности ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: 1234

Репутация: -  -1  +


Это, можно понимать, объекты, которые нужно уничтожать. Но они летят не сверху. И вообще, кусками до меня не доходит
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Твой ответ похож на текст после перевода стилусом. Ты можешь выражаться точнее ? Надо чтоб сверху падало? Не суть, я показал принцип, что верху, что сбоку - переделать пять секунд. Текст/графика - монопенисуално. А то, что не доходит, тем более, как - я не виноват smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.11.2024 12:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name