Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

обработка клавишь в DelphiX   Найти похожие ветки 

 
@ndrew ©   (2003-10-13 10:18) [0]

Доброго времени суток! Уважаемые помогите.........

 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) [1]

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


 
@ndrew ©   (2003-10-13 11:15) [2]


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 11:26) [3]

И где тут выстрелы двоих?
что за rast?

Так у тебя постоянно таймер включается, когда патронов нет.


 
@ndrew ©   (2003-10-13 11:30) [4]

это пример для одного игрока, для второго - точно такой же...
rast - это расстояние между патронами, ну чтобы сплошной линией не стреляли, это все работает без проблем, а вот одновременно не работает...почему не пойму...


 
cyborg ©   (2003-10-13 11:39) [5]

Ты извини, но телепатией я не владею, как и многие на этом форуме.
Ты нормально приведи код где не работает.
Поставь, например, beep в месте, где обрабатывается выстрел, обрабатывается ли он вообще?


 
@ndrew ©   (2003-10-13 11:48) [6]

должно вообще-то выглядеть так:

.
.
.

   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;


 
@ndrew ©   (2003-10-13 13:09) [7]


> cyborg ©   (13.10.03 11:26) [3]
> что за rast?

спасибо cyborg, а я что-то особо не придал значения....
переменную локализовал, и все заработало.....
еще раз спасибо.....



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
1-1080420173
oleg_SYS
2004-03-27 23:42
2004.04.18
Перетаскивание файлов


1-1080798454
MaD
2004-04-01 09:47
2004.04.18
Отображение ДОС текскта в RichEdit в Win2000


1-1081077213
Serious Sam
2004-04-04 15:13
2004.04.18
Как сделать новое задание для планировщика через Delphi?


6-1076666201
Aleksandr
2004-02-13 12:56
2004.04.18
Почему МИДАС-сокеты не могут соединиться?


6-1077173208
GLFox
2004-02-19 09:46
2004.04.18
Network shares





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский