Целочисленное вычитание и циклы на основе целочисленных значений

У меня здесь две проблемы. Прежде всего, я хочу, чтобы x изменил значения на x - y, и если новый X выше, чем 0, я хочу, чтобы процесс повторился. Я разработал код ниже, но я не уверен в двух вещах.

  1. Мне даже разрешено составить уравнение x = x - y или это все испортило? Я имею в виду, что в математическом плане это было бы невозможно, но если мы возьмем X в качестве Hp, а Y в качестве урона, я хочу, чтобы ущерб был сложен. Я не хочу, чтобы он создавал целое число "урона HP" для каждого вычитания, поскольку я даже не знаю, сколько уравнений в стиле "Z = x - y" мне пришлось бы создать, если бы я установил Y как случайное. Я предполагаю, что я мог бы создать Z-интеграл, который бы копировал X за мгновение до того, как вычитание сработало бы, и затем вычитание было бы X = Z - Y, но я не уверен, как мне поступить в кодировании этого.

  2. Я хочу, чтобы он продолжал и сам себя зацикливал, если X выше 0, и я не уверен, правильно ли я его кодировал.

Вот мой код:

Module Module1
        Dim A As Integer
        Dim B As Integer
        Dim x As Integer
        Dim y As Integer
        Sub Main()

    End Sub

    Sub Maths()
        A = 5
        B = 4
        x = 3
        y = 1
        Subtraction()
        Console.WriteLine("You deal {0} damage to your enemy reducing it to {1} hp.", y, x)
            Do Until x <= 0

            Loop
    End Sub
    Private Sub Subtraction()
        If A > B Then x = x -y
            Return
    End Sub

End Module

1 ответ

Решение

Мне понравился этот вопрос. Вот мои мысли:

  1. Да, x = x - y это совершенно правильный код. Это ничем не отличается от того, если бы у меня была строковая переменная с именем myRunOnSentence и я хотел объединить строку, которая уже была в переменной и другой строке, а затем сохранить результаты обратно в строковую переменную. Как это: myRunOnSentence = myRunOnSentence + "another string" Та же концепция, просто измените тип данных на Integer. x = x + y, Это программно говорит: "возьмите значение в x и значение в y, сложите их вместе и сохраните результат этого выражения в x".

  2. Вы действительно ошиблись с циклом. У вас нет кода внутри тела самого цикла.

  3. У вас ничего не происходит в Main() Sub вашего модуля, так что этот модуль при запуске ничего не будет делать. Вы должны просто взять код из Maths() метод и положить его в Main() к югу.

  4. В вашем Subtraction() метод, A > B всегда буду оценивать True так как A а также B инициализируются значениями, а затем никогда не меняются.

Ваш код должен выглядеть примерно так:

Module Module1
    Dim A As Integer = 5
    Dim B As Integer = 4
    Dim x As Integer = 3
    Dim y As Integer = 1

    Sub Main()
        Do Until x <= 0
            Subtraction()
            Console.WriteLine("You deal {0} damage to your enemy reducing it to {1} hp.", y, x)
        Loop
    End Sub

    Private Sub Subtraction()
        If A > B Then x = x - y 'Return statement wasn't needed.
    End Sub
End Module

Если это ответило на ваш вопрос, пожалуйста, не забудьте пометить его как ответ.

Другие вопросы по тегам