「敵」が前後に移動する必要があるアプリケーションを作成していますが、画像を自動的に左から右に移動して繰り返すにはどうすればよいですか?
これが私の現在のコードです。
Private Sub Timer1_Timer()
enemy1.Left = enemy1.Left - 5
End Sub
「敵」が前後に移動する必要があるアプリケーションを作成していますが、画像を自動的に左から右に移動して繰り返すにはどうすればよいですか?
これが私の現在のコードです。
Private Sub Timer1_Timer()
enemy1.Left = enemy1.Left - 5
End Sub
Option Explicit
Const nTwipsPerMove = 15
Private Sub Timer1_Timer()
Static strDirection As String
If strDirection = "" Then strDirection = "left"
If enemy.Left > 0 Then
If strDirection = "left" Then
enemy.Left = enemy.Left - nTwipsPerMove
ElseIf strDirection = "right" Then
enemy.Left = enemy.Left + nTwipsPerMove
End If
End If
If enemy.Left = 0 Then
If strDirection = "left" Then strDirection = "right"
enemy.Left = enemy.Left + nTwipsPerMove
End If
If enemy.Left + enemy.Width = Me.Width - nTwipsPerMove * 5 Then
If strDirection = "right" Then strDirection = "left"
enemy.Left = enemy.Left - nTwipsPerMove
End If
End Sub
nTwipsPerMove
各ループで移動する twip の数を意味する Timer1.Interval = 10
速度に1つの変数を使用し、敵が反対方向に移動する必要がある場合は負にすることもできます
'1 form with :
' 1 timer : name=Timer1
' 1 picturebox : name=Picture1
Option Explicit
Private msngStep As Single
Private Sub Form_Load()
Timer1.Interval = 200 'delay in milliseconds between steps
msngStep = ScaleWidth / 20 'step size, and direction
End Sub
Private Sub Timer1_Timer()
Dim sngX As Single
With Picture1 'the enemy
sngX = .Left + msngStep 'calculate new position
If (sngX < 0) Or (sngX > (ScaleWidth - .Width)) Then 'check boundary
msngStep = msngStep * -1 'adjust direction
sngX = sngX + 2 * msngStep 'keep enemy inside
End If
.Left = sngX 'move to new position
End With 'Picture1
End Sub
私のVBがさびていることを今認めています。使い始めて約10年。とにかくこのコードをテストする必要はありませんが、このサンプルはあなたを近づけるか、少なくとも正しい方向に向けさせるべきだと思います.
Private Sub Timer1_Timer()
Do
enemy1.Left = enemy1.Left - 5
If enemy1.Left = < 5 Then
Do
enemy1.Right = enemy1.Right + 5
Loop Until enemy1.Right = > 1000 'or whatever your size is
End If
Loop
End Sub
VB (C# など) には組み込みの Timer オブジェクトが必要です。タイマーを使用すると、一定時間後にトリガーされるイベント ハンドラーを作成できるはずです。その関数では、画像を移動し、必要に応じてタイマーを再起動できます。