2015-10-09 2 views
0

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

  1. Мне даже позволено составлять уравнение x = x - y или это все испортит? Я имею в виду, что в математических терминах это было бы невозможно, но если мы возьмем Х в качестве Hp и Y в качестве урона, я хочу, чтобы урон складывался. Я не хочу, чтобы он создавал целое число «damage 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" Такая же концепция, просто измените тип данных на целое. x = x + y. Это программно говорит: «возьмите значение в x и значение в y, добавьте их вместе и сохраните результат этого выражения в x».

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

  3. У вас ничего не происходит в модуле Main() вашего модуля, поэтому этот модуль при запуске ничего не сделает. Вы должны просто взять код из метода 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 

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

+1

Благодарим за помощь :) Я полностью упустил тот факт, что я ничего не поставил (в моей защите было 1 час ночи). Я знаю, что A всегда будет больше, чем B, поскольку это всего лишь макет другого проекта, в котором я использую RNG для определения A и B. Спасибо за очистку вещей ^^ –

+0

Без проблем, рад, что я мог бы помочь. –

 Смежные вопросы

  • Нет связанных вопросов^_^