![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
обработка клавишь в DelphiX [Delphi, Windows]
@ndrew © (2003-10-13 10:18:00)Доброго времени суток! Уважаемые помогите.........
if isButton1 in Form1.DXInput1.States then
begin
if patr<=0 then
begin
form1.Timer3.Enabled:=true;
exit;
end;
rast:=rast+1;
if rast = 10 then
begin
rast:=0;
такой код у двух игроков (обработка выстрела), почему одновременно не срабатывает у обоих!?!?!? не пойму....подскажите
@ndrew (2003-10-13 13:09:00) [1]
> cyborg © (13.10.03 11:26) [3]
> что за rast?
спасибо cyborg, а я что-то особо не придал значения....
переменную локализовал, и все заработало.....
еще раз спасибо.....
@ndrew (2003-10-13 11:48:00) [2]должно вообще-то выглядеть так:
.
.
.
end;
rast:=rast+1;
if rast = 10 then
begin
rast:=0
.
.
.
т.е. на этом код выстрела не кончается...
если нужно все, то вот:
Procedure TPlayertwo.DoMove(MoveCount: Integer);
begin
if cur_life2<=0 then
begin
Dead;
life2:=life2-1;
Form1.Timer2.Enabled:=true;
case life2 of
2 : form1.Image11.Visible:=false;
1 : form1.Image10.Visible:=false;
0 : form1.Image9.Visible:=false;
end;
end;
if y >= form1.DXDraw1.SurfaceHeight-image.Height then
y := form1.DXDraw1.SurfaceHeight-image.Height;
if x >= form1.DXDraw1.SurfaceWidth-image.Width-159 then
x := form1.DXDraw1.SurfaceWidth -image.Width-159;
if y <= 0 then
y := 1;
if x <= 0 then
x:=1;
if isButton2 in Form1.DXInput1.States then
begin
Player2.X := Player2.X-3-uskor;
Player2D := 1;
Player2.Image := Form1.DXImageList1.Items.Find('t_l2');
width := Player2.Image.Width;
height :=Player2.Image.Height
end;
if isButton3 in Form1.DXInput1.States then
begin
Player2.X := Player2.X+3+uskor;
Player2D := 2;
Player2.Image := Form1.DXImageList1.Items.Find('t_r2');
width := Player2.Image.Width;
height :=Player2.Image.Height
end;
if isButton4 in Form1.DXInput1.States then
begin
Player2.Y := Player2.Y-3-uskor;
Player2D := 3;
Player2.Image := Form1.DXImageList1.Items.Find('t_u2');
width := Player2.Image.Width;
height :=Player2.Image.Height
end;
if isButton5 in Form1.DXInput1.States then
begin
Player2.Y := Player2.Y+3+uskor;
Player2D := 4;
Player2.Image := Form1.DXImageList1.Items.Find('t_d2');
width := Player2.Image.Width;
height :=Player2.Image.Height
end;
FrameCount := FrameCount+1;
if isButton6 in Form1.DXInput1.States then
begin
if patr2<=0 then
begin
Form1.timer3.Enabled:=true;
exit;
end;
rast:=rast+1;
if rast = 10 then
begin
rast:=0;
with TPlayer2Fa.Create(form1.DXSpriteEngine1.Engine) do
begin
patr2:=patr2-1;
form1.ProgressCyl3.Position:=patr2;
Image := Form1.DXImageList1.Items.Find('Pulya_1');
Width := Image.Width;
Height := Image.Height;
X := Player2.X + Player2.Image.Width /2;
Y := Player2.Y+20;
Z := 2;
Direction2:=Player2D;
end
end
else exit;
FrameCount := 0;
BulletCount:=BulletCount+1;
end;
Collision;
end;
cyborg (2003-10-13 11:39:00) [3]Ты извини, но телепатией я не владею, как и многие на этом форуме.
Ты нормально приведи код где не работает.
Поставь, например, beep в месте, где обрабатывается выстрел, обрабатывается ли он вообще?
@ndrew (2003-10-13 11:30:00) [4]это пример для одного игрока, для второго - точно такой же...
rast - это расстояние между патронами, ну чтобы сплошной линией не стреляли, это все работает без проблем, а вот одновременно не работает...почему не пойму...
cyborg (2003-10-13 11:26:00) [5]И где тут выстрелы двоих?
что за rast?
Так у тебя постоянно таймер включается, когда патронов нет.
@ndrew (2003-10-13 11:15:00) [6]
if isButton1 in Form1.DXInput1.States then // если нажата, то
begin
if patr<=0 then // если патроны кончились
begin
form1.Timer3.Enabled:=true; // вкл. таймер, по таймеру появляются призы с патронами
exit;
end;
rast:=rast+1;
if rast = 10 then
begin
rast:=0;
cyborg (2003-10-13 10:24:00) [7]Чего-то непонятный код, чего там делается описал бы чтоли? :)