Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1550 / 76734 ←次へ | 前へ→

【80834】ゲーム制作:自機の操作と敵機の自動移動を同時に処理することについて
質問  SHUN  - 19/5/21(火) 13:26 -

引用なし
パスワード
   VBAで自機を動かすプログラム、敵機を自動で移動するプログラムはそれぞれ組めましたが、
その2つを同時に動かす段階で躓いています。

Call '自機を動かすプログラム=aとします。
Call ’敵機を動かすプログラム=bとします。
とすると、aのプログラム終了後にbのプログラム処理となり、
1つのプロシージャ内に両方入れようとすると上手くいきません。

参考に、それぞれのソースを以下に貼り付けます。

Sub 自機発生()

Dim i As Integer
Dim j As Integer

Dim i2 As Integer
Dim j2 As Integer


Cells.Interior.ColorIndex = xlNone


  i = 10
  j = 10
  
    Cells(i, j).Interior.ColorIndex = 6
    
    
 Do
 
    '自機発生、操作
    
    If GetAsyncKeyState(37) <> 0 Then
    
    Cells(i, j).Interior.ColorIndex = xlNone
      If j <= 3 Then
      j = 17
      Else
      j = j - 1
      End If
    Cells(i, j).Interior.ColorIndex = 6
    
    End If
    
    If GetAsyncKeyState(38) <> 0 Then
    
    Cells(i, j).Interior.ColorIndex = xlNone
      If i <= 3 Then
      i = 17
      Else
      i = i - 1
      End If
    Cells(i, j).Interior.ColorIndex = 6
    
    End If
    
    If GetAsyncKeyState(39) <> 0 Then
    
    Cells(i, j).Interior.ColorIndex = xlNone
      If j >= 17 Then
      j = 3
      Else
      j = j + 1
      End If
    Cells(i, j).Interior.ColorIndex = 6
    
    End If
    
    If GetAsyncKeyState(40) <> 0 Then
    
    Cells(i, j).Interior.ColorIndex = xlNone
      If i >= 17 Then
      i = 3
      Else
      i = i + 1
      End If
    Cells(i, j).Interior.ColorIndex = 6
   
    End If
    
    If GetAsyncKeyState(13) <> 0 Then
    
    Exit Do
    
    End If
    
  DoEvents

  Sleep 90
  
  Loop


End Sub

Sub 発生()
  Dim i As Integer
  Dim j As Integer

  Randomize
  

  i = 3
  j = 15
  
  Do
  
  '敵機発生、ランダムで移動
  
    Cells(i, j).Interior.ColorIndex = xlNone

    
  If 0 <= Rnd And Rnd < 0.25 Then
    If i >= 17 Then
    i = 3
    Else
    i = i + 1
    End If
  Else
  If 0.25 <= Rnd And Rnd < 0.5 Then
    If j >= 17 Then
    j = 3
    Else
    j = j + 1
    End If
  Else
  If 0.5 <= Rnd And Rnd < 0.75 Then
    If i <= 3 Then
    i = 17
    Else
    i = i
    End If
  Else
  If 0.75 <= Rnd And Rnd < 1 Then
    If j <= 3 Then
    j = 17
    Else
    j = j - 1
    End If
 
  Cells(i, j).Interior.ColorIndex = 3
  
  End If
  
     If GetAsyncKeyState(13) <> 0 Then
    
     Exit Do
    
     End If
  
  DoEvents
  
  
  Sleep 90

 Loop


End Sub

よろしくお願いいたします。

6 hits

【80834】ゲーム制作:自機の操作と敵機の自動移動を同時に処理することについて SHUN 19/5/21(火) 13:26 質問[未読]
【80838】Re:ゲーム制作:自機の操作と敵機の自動移... 亀マスター 19/5/23(木) 0:59 回答[未読]
【80883】Re:ゲーム制作:自機の操作と敵機の自動移... SHUN 19/6/6(木) 19:53 お礼[未読]

1550 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free