Целочисленное вычитание и циклы на основе целочисленных значений
У меня здесь две проблемы. Прежде всего, я хочу, чтобы x изменил значения на x - y, и если новый X выше, чем 0, я хочу, чтобы процесс повторился. Я разработал код ниже, но я не уверен в двух вещах.
Мне даже разрешено составить уравнение x = x - y или это все испортило? Я имею в виду, что в математическом плане это было бы невозможно, но если мы возьмем X в качестве Hp, а Y в качестве урона, я хочу, чтобы ущерб был сложен. Я не хочу, чтобы он создавал целое число "урона HP" для каждого вычитания, поскольку я даже не знаю, сколько уравнений в стиле "Z = x - y" мне пришлось бы создать, если бы я установил Y как случайное. Я предполагаю, что я мог бы создать Z-интеграл, который бы копировал X за мгновение до того, как вычитание сработало бы, и затем вычитание было бы X = Z - Y, но я не уверен, как мне поступить в кодировании этого.
Я хочу, чтобы он продолжал и сам себя зацикливал, если 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 ответ
Мне понравился этот вопрос. Вот мои мысли:
Да,
x = x - y
это совершенно правильный код. Это ничем не отличается от того, если бы у меня была строковая переменная с именемmyRunOnSentence
и я хотел объединить строку, которая уже была в переменной и другой строке, а затем сохранить результаты обратно в строковую переменную. Как это:myRunOnSentence = myRunOnSentence + "another string"
Та же концепция, просто измените тип данных на Integer.x = x + y
, Это программно говорит: "возьмите значение в x и значение в y, сложите их вместе и сохраните результат этого выражения в x".Вы действительно ошиблись с циклом. У вас нет кода внутри тела самого цикла.
У вас ничего не происходит в
Main()
Sub вашего модуля, так что этот модуль при запуске ничего не будет делать. Вы должны просто взять код изMaths()
метод и положить его вMain()
к югу.В вашем
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
Если это ответило на ваш вопрос, пожалуйста, не забудьте пометить его как ответ.