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

> ТАНКИ, одновременное выполнение действий
сообщение
Сообщение #1


Бывалый
***

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

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


хочу написать простую игру (дано допустим 2 танка 1 управляется пользователем а 2 компьютером ) в ходе написания возник ряд вопросов 1) как сделать чтобы одновременно выполнялось несколько действий допустим я стреляю и пока летит снаряд я хочу переместить свой танк а враг может попытаться увернутся от снаряда.на данном этапе написания когда я стреляю я не могу переместить танк пока не далетит снаряд.2)как установить границы экрана чтобы танк не заезжал за границы и вообще как разграничить экран я пробовал спомощью setviewport но чето ничего не получилось.

вот то что я уже написал набрОсал танки 1им из них можно управлять стрелками и стрелять на пробел выход на esc.танки я нарисовал линиями чтоб легче было работать с координатами
program igra;
uses graph,crt;
var
ch:char;
tx,ty,tx2,ty2:integer;
d,m,i,x,y,k:integer;
procedure vistrel;
var
vx,vy,i,k:integer;
begin
vx:=tx;
vy:=ty;
for i:=1 to 640-(vx+60) do begin
setcolor(15);
circle(vx+64+i,vy+23,3);
setcolor(0);
circle(vx+64+i-1,vy+23,3);
delay(200);
if (vy+23>=ty2) and (vy+23<=ty+48) then
circle(213,120,2);
end;
setcolor(15);
end;
begin
d:=detect;
initgraph(d,m,'e:\tp7.1\bgi');
tx:=1;
ty:=120;
tx2:=610;
ty2:=120;
{kab}
repeat
{\\\\\\\\\\\\\\\\\tank22\\\\\\\\\\\\\\\\\\\\\ }
{kab}
line(tx2,ty2,tx2+23,ty2);
line(tx2+23,ty2,tx2+23,ty2+48);
line(tx2,ty2+48,tx2+23,ty2+48);
line(tx2,ty2,tx2,ty2+48);
arc(tx2+11,ty2+6,23,154,13);
arc(tx2+11,ty2+42,206,337,13);
{pil}
line(tx2+10,ty2+9,tx2+10,ty2+39);
line(tx2+17,ty2+9,tx2+10,ty2+9);
line(tx2+10,ty2+39,tx2+17,ty2+39);
{puh}
line(tx2,ty2+12,tx2-12,ty2+12);
line(tx2,ty2+36,tx2-12,ty2+36);
line(tx2-12,ty2+12,tx2-12,ty2+36);
{dulo}
line(tx2-12,ty2+26,tx2-29,ty2+26);
line(tx2-29,ty2+20,tx2-29,ty2+28);
line(tx2-12,ty2+22,tx2-29,ty2+22);
{gluh}
line(tx2-29,ty2+20,tx2-36,ty2+20);
line(tx2-29,ty2+28,tx2-36,ty2+28);
line(tx2-36,ty2+20,tx2-36,ty2+28);
{\\\\\\\\\\\=tank\\\\\\\\\\\\\\\\}
line(tx,ty,tx+23,ty);
line(tx+23,ty,tx+23,ty+48);
line(tx,ty+48,tx+23,ty+48);
line(tx,ty,tx,ty+48);
arc(tx+11,ty+6,23,154,13);
arc(tx+11,ty+42,206,337,13);
{pil}
line(tx+17,ty+9,tx+17,ty+39);
line(tx+10,ty+9,tx+17,ty+9);
line(tx+10,ty+39,tx+17,ty+39);
{puh}
line(tx+23,ty+12,tx+35,ty+12);
line(tx+23,ty+36,tx+35,ty+36);
line(tx+35,ty+12,tx+35,ty+36);
line(tx+35,ty+22,tx+53,ty+22);
{dulo}
line(tx+35,ty+26,tx+53,ty+26);
line(tx+53,ty+20,tx+53,ty+28);
{gluh}
line(tx+53,ty+20,tx+60,ty+20);
line(tx+53,ty+28,tx+60,ty+28);
line(tx+60,ty+20,tx+60,ty+28);
ch:=readkey;
case ch of
#72:ty:=ty-5;
#75:tx:=tx-5;
#77:tx:=tx+5;
#80:ty:=ty+5;
#32:vistrel;
#27:halt;
end;{case}
cleardevice;
until ch=#27;
readln;
closegraph;
end.
объяснити хоть на словах как сделать то о чем я написал.спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Именно с массивом.
Прикинь, какая у твоего танка максимальная скорострельность, с какой скоростью летит пуля и соотнеси это с диагональю экрана (как наибольшим возможным расстоянием). Отсюда получишь максимально возможное количество пуль на экране (наверное еще надо умножить на максимальное количество стреляющих танков).
Определи структуру из двух координат, двух составляющих скорости и признака, что пулю нужно рисовать.
Создай массив структур величиной с максимальное количество пуль. При выстреле ищешь в массиве не рисуемую пулю, присваиваешь ей нужные координаты (срез ствола), нужные скорости (вдоль направления ствола) и признак "рисовать". При попадании пули в цель или достижении края экрана устанавливаешь признак в "не рисовать".
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

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

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


Цитата(andriano @ 20.02.2008 19:31) *

Именно с массивом.
Прикинь, какая у твоего танка максимальная скорострельность, с какой скоростью летит пуля и соотнеси это с диагональю экрана (как наибольшим возможным расстоянием). Отсюда получишь максимально возможное количество пуль на экране (наверное еще надо умножить на максимальное количество стреляющих танков).
Определи структуру из двух координат, двух составляющих скорости и признака, что пулю нужно рисовать.
Создай массив структур величиной с максимальное количество пуль. При выстреле ищешь в массиве не рисуемую пулю, присваиваешь ей нужные координаты (срез ствола), нужные скорости (вдоль направления ствола) и признак "рисовать". При попадании пули в цель или достижении края экрана устанавливаешь признак в "не рисовать".

спасибо буду пробовать good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
blackhard   ТАНКИ   15.02.2008 4:08
spill   Игры так не пишут. В игре должен быть ОДИН цикл. В…   15.02.2008 18:12
andriano   Ты бы хоть, прежде чем писать, почитал темы, наход…   15.02.2008 23:12
blackhard   Ты бы хоть, прежде чем писать, почитал темы, нахо…   16.02.2008 0:01
blackhard   И опять мне нужна помощь. теперь проблема с ИИ ну …   19.02.2008 3:57
spill   Вот твои ошибки: 1. Используй Randomize один раз в…   19.02.2008 17:34
blackhard   Вот твои ошибки: 1. Используй Randomize один раз …   20.02.2008 2:35
andriano   И вот еще что надо бы переделать. Анимация делает…   20.02.2008 13:16
spill   Да пожалуйста, если что, обращайся еще. Кстати, ес…   20.02.2008 16:03
blackhard   Да пожалуйста, если что, обращайся еще. Кстати, е…   20.02.2008 22:45
andriano   Именно с массивом. Прикинь, какая у твоего танка м…   20.02.2008 23:31
blackhard   Именно с массивом. Прикинь, какая у твоего танка …   20.02.2008 23:40
blackhard   Я решил переделать игру.Теперь обьекты у меня это …   23.03.2008 17:58
andriano   Поясни, пожалуйста, как именно ты стираешь изображ…   23.03.2008 21:11
blackhard   Поясни, пожалуйста, как именно ты стираешь изобра…   23.03.2008 21:28
andriano   Это я вижу. Но ты сам сказал, что это не работает.…   23.03.2008 22:36
blackhard   Это я вижу. Но ты сам сказал, что это не работает…   23.03.2008 23:31
andriano   Третий раз спрашиваю: как именно стираешь изображе…   24.03.2008 3:01
blackhard   Третий раз спрашиваю: как именно стираешь изображ…   24.03.2008 3:16
andriano   Дергается или мерцает? Если дергается, что-то не в…   25.03.2008 0:00
blackhard   Дергается или мерцает? Если дергается, что-то не …   25.03.2008 0:36
andriano   Только что разместил ссылки на статьи в соответств…   25.03.2008 0:49
blackhard   Теперь я решил сделать чтобы у меня там солдатики …   22.04.2008 17:57
renesko1   Попробуй сделать обьект солдат и метод paint Созда…   22.04.2008 21:32
blackhard   А можно както в подобной игре сделать нормальный з…   5.05.2008 16:43
andriano   Игра - имеется в виду под DOS?   5.05.2008 16:59
blackhard   Игра - имеется в виду под DOS? Ну да   5.05.2008 17:23
andriano   Пробежал глазами тему. "Нормальный звук…   5.05.2008 21:14


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

 





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