![]() |
![]() ![]() |
![]() |
-SMI- |
![]()
Сообщение
#1
|
Гость ![]() |
Есть вот такая игра. В ней создается танк(1) пользователя, который ездит и стреляет. Также сверху из-за экрана появляется еще один танк(2)(просто проезжает мимо). Проблема в том, что пока едит танк2 танк1 стоит.
Помогите!!!!!! ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Советую для начала почитать тему, расположенную строкой ниже.
|
Гость |
![]()
Сообщение
#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. |
SMI |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
andriano |
![]()
Сообщение
#5
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
|
SMI |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Проблема в том, что пока танк2 едит танк1 стоит. Вопрос: Что исправить в программе? |
andriano |
![]()
Сообщение
#7
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Вопрос: Что исправить в программе? Ее надо не исправлять, а переписывать, т.к. она имеет неправильную структуру. Должен быть ЕДИНСТВЕННЫЙ основной игровой цикл, где проверяется состояние органов управления и вызывается ряд подпрограмм, изменяющих состояние и производящих отрисовку. Использование readkey допускается в единственном месте основного игрового цикла и больше нигде ни в одной из вызываемых процедур. То же саме касается и delay. И, кстати, ты невнимательно читал то, что я тебе посоветовал, посмотри еще раз пост №4 в уже упоминавшейся теме. PS. Больше я такой код разбирать не буду, приведи его в соответствие с правилами форума и надлежащим образом отформатируй. |
spill |
![]()
Сообщение
#8
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Да уж...
Программу надо переписывать полностью... |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 23:23 |