ВСЕ циклы сбой winforms vb. net? - PullRequest
1 голос
/ 20 июня 2020

Я пытаюсь сделать небольшую игру Winforms, кажется, что мой while l oop (показано ниже) останавливает меня от прогресса.

While (battlevalue = False)

            If (Player1Health <= 0) Then
                MessageBox.Show("Player Two Won!")
                End
            ElseIf (Player2Health <= 0) Then
                MessageBox.Show("Player One Won!")
                End
            End If
            If (Glave.Location.Y = SwAxe.Location.Y) Then
                If (e.KeyCode = Keys.Q) Then
                    Player2Health = (Player2Health - Player1Attack)
                    MessageBox.Show(Player2Health)
                End If
            End If
        End While

Мой .exe файл вылетает при любом моих персонажей делают один ход, отладчик Visual studio в этой ситуации бесполезен, потому что он не обнаруживает никаких «проблем», и кажется, что я не могу go без while l oop, потому что игровая атака будет вычтите здоровье врага только один раз, если у меня нет времени. Так что я пробовал делать до l oop. Тоже не повезло. Фактически, каждый l oop, который я делал, приводил к сбою моего приложения. Я не мог использовать оператор if, так как на самом деле они не являются циклами, и у меня такая же проблема, как и в случае, если я вообще не использую al oop.

Пожалуйста, предложите любые решения, которые могут у вас быть .

VB. NET ядро ​​4.7.2

Visual Studio версии 16.6.0

1 Ответ

1 голос
/ 20 июня 2020

Действительно, как прокомментировал jm c; вам следует удалить эти End утверждения - они определенно не то, что вы хотите делать. Я предполагаю, что вы тоже ожидали прекратить обработку этого кода, поэтому вы, возможно, не захотите использовать бит (Glave.Location.Y = SwAxe.Location.Y). Один простой способ избежать этого - сделать его частью цепочки If Else

        If (Player1Health <= 0) Then
            MessageBox.Show("Player Two Won!")
            'End
        ElseIf (Player2Health <= 0) Then
            MessageBox.Show("Player One Won!")
            'End
        Else If (Glave.Location.Y = SwAxe.Location.Y) Then
            If (e.KeyCode = Keys.Q) Then
                Player2Health = (Player2Health - Player1Attack)
                MessageBox.Show(Player2Health)
            End If
        End If
    End While
...