Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

обработка клавишь в 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]

Чего-то непонятный код, чего там делается описал бы чтоли? :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо