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

 
 Ответить  Открыть новую тему 
> Танки встали!
сообщение
Сообщение #1


Гость






Есть вот такая игра. В ней создается танк(1) пользователя, который ездит и стреляет. Также сверху из-за экрана появляется еще один танк(2)(просто проезжает мимо). Проблема в том, что пока едит танк2 танк1 стоит.
Помогите!!!!!! unsure.gif Заранее благодарен!!!!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

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

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


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


Гость






Текст программы:
program gibo;
uses crt,graph;
Label 1,2, Mylabel;
var
Key:Char;
r,r2,i:integer;
Xk1,Xk2,Yk1,Yk2,Xp,Yp:integer;
Xv1,Xv2,Yv1,Yv2,Xv,Yv
:integer;
gd,gm:integer;
procedure Vrag;
Begin
randomize;
Xv1:=Random(600);
Xv2:=Xv1+40;
Yv1:=-200;;
Yv2:=-160;
r2:=20;
rectangle (Xv1,Yv1,Xv2,Yv2);
Circle(Xv1+r2,Yv1+r2,r2);
Line(Xv1+r2,Yv1+r2,Xv1+r2,Yv2+r2);
Repeat
Yv1:=Yv1+5;
Yv2:=Yv2+5;
Xv1:=Xv1;
Xv2:=Xv2;
Setcolor(Green);
rectangle (Xv1,Yv1,Xv2,Yv2);
Circle(Xv1+r2,Yv1+r2,r2);
Line(Xv1+r2,Yv1+r2,Xv1+r2,Yv2+r2);
Delay(13000);
Yv1:=Yv1;
Yv2:=Yv2;
R2:=20;
Xv1:=Xv1;
Xv2:=Xv2;
Setcolor(White);
rectangle (Xv1,Yv1,Xv2,Yv2);
Circle(Xv1+r2,Yv1+r2,r2);
Line(Xv1+r2,Yv1+r2,Xv1+r2,Yv2+r2);
Until Yv1>500;
setcolor(Green);
end;
Procedure Tank;
Begin
Xk1:=180;
Xk2:=220;
Yk1:=420;
Yk2:=460;
r:=20;
setcolor(Green);
rectangle(Xk1,Yk1,Xk2,Yk2);
Circle(Xk1+r,Yk1+r,r);
Line(Xk1+r,Yk1-r,Xk1+r,Yk2-r);
vrag;
end;
procedure Boom;
Begin
R:=20;
Xp:=Xk1+r;
Yp:=Yk2-r;
repeat
Xp:=Xp;
Yp:=Yp-45;
setcolor(4);
Circle(Xp,Yp,3);
Delay(2000);
Xp:=Xp;
Yp:=Yp;
setcolor(white);
Circle(Xp,Yp,3);
Until Yp<0;
sound(300);delay(150);
setcolor(green);
end;
procedure Up;
begin
Xk1:=Xk1;
Yk1:= Yk1-20;
Xk2:=Xk2;
Yk2:=Yk2-20;
r:=20;
ClearViewPort;
rectangle(Xk1,Yk1,Xk2,Yk2);
Circle(Xk1+r,Yk1+r,r);
Line(Xk1+r,Yk1-r,Xk1+r,Yk2-r);
repeat
key:=readkey;
if key='5' then Boom;
until key<>'5';
end;
procedure Left;
begin
Xk1:=Xk1-20;
Yk1:= Yk1;
Xk2:=Xk2-20;
Yk2:=Yk2;
r:=20;
ClearViewPort;
rectangle(Xk1,Yk1,Xk2,Yk2);
Circle(Xk1+r,Yk1+r,r);
Line(Xk1-r,Yk1+r,Xk1+r,Yk2-r);
end;
procedure Right;
begin
Xk1:=Xk1+20;
Yk1:= Yk1;
Xk2:=Xk2+20;
Yk2:=Yk2;
r:=20;
ClearViewPort;
rectangle(Xk1,Yk1,Xk2,Yk2);
Circle(Xk1+r,Yk1+r,r);
Line(Xk1+r+2*r,Yk1+r,Xk1+r,Yk2-r);
end;
procedure Down;
begin
Xk1:=Xk1;
Yk1:= Yk1+20;
Xk2:=Xk2;
Yk2:=Yk2+20;
r:=20;
ClearViewPort;
rectangle(Xk1,Yk1,Xk2,Yk2);
Circle(Xk1+r,Yk1+r,r);
Line(Xk1+r,Yk1+r,Xk1+r,Yk2+r);
end;
begin
gd:=detect;
initgraph(gd,gm,'c:/tp7');
SetBkColor(15);
tank;
repeat;
key:=readkey;
if key='8' then Begin
Up;
if key='5' then Boom;
end;
if key='4' then Left else
if key='6' then Right else
if key='2' then Down;
if key='9' then Vrag;
until key='0';
readln;
readln;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





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

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


Цитата(andriano @ 15.02.2008 19:59) *

Советую для начала почитать тему, расположенную строкой ниже.

Ответа на мой вопрос я не нашел. no1.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

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

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


Цитата(SMI @ 16.02.2008 15:07) *

Ответа на мой вопрос я не нашел. no1.gif

Неудивительно.
Откуда же мы можем узнать про твой вопрос, если сам ты о нем ничего не пишешь?
(перечитай свой первый пост - в нем нет ни одного вопросительного знака)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





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

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


Цитата
Проблема в том, что пока танк2 едит танк1 стоит.

Вопрос: Что исправить в программе?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

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

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


Цитата(SMI @ 17.02.2008 12:50) *

Вопрос: Что исправить в программе?

Ее надо не исправлять, а переписывать, т.к. она имеет неправильную структуру.
Должен быть ЕДИНСТВЕННЫЙ основной игровой цикл, где проверяется состояние органов управления и вызывается ряд подпрограмм, изменяющих состояние и производящих отрисовку.
Использование readkey допускается в единственном месте основного игрового цикла и больше нигде ни в одной из вызываемых процедур.
То же саме касается и delay.
И, кстати, ты невнимательно читал то, что я тебе посоветовал, посмотри еще раз пост №4 в уже упоминавшейся теме.

PS. Больше я такой код разбирать не буду, приведи его в соответствие с правилами форума и надлежащим образом отформатируй.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


Да уж...
Программу надо переписывать полностью...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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