2012-12-11 2 views
1

Я пытаюсь имитировать игру, в которой игрок может нанести урон врагу или исцелить себя, нажав кнопки «Атака» и «Лечение». Я попытался выполнить тестовый тест на одной панели прогресса, чтобы убедиться, что все работает, прежде чем модифицировать его, чтобы соответствовать моей игре, и сделал новый WindowsApplication.Индикатор хода превышения максимального/минимального значения в VB.Net 2010?

У меня есть индикатор хода на форме вместе с одной кнопкой атаки и кнопкой «Исцеление», и если я превышу максимальное значение индикатора выполнения путем исцеления или минимума, повредив, он извергает ошибки. Я не могу понять строку кода, в которой можно исправить это для обоих случаев, и я искал везде ответы.

Вот мой код кнопки «Исцеление»;

Private Sub btnHeal_Click(ByVal sender As System.Object, _ 
          ByVal e As System.EventArgs) _ 
         Handles btnHeal.Click 

    prgHealth.Value = prgHealth.Value + 10 

    If prgHealth.Value >= prgHealth.Maximum Then 
     prgHealth.Value = prgHealth.Maximum 
    End If 

End Sub 

И вот мой код кнопки повреждения;

Private Sub btnDamage_Click(ByVal sender As System.Object, _ 
          ByVal e As System.EventArgs) _ 
         Handles btnDamage.Click 

    prgHealth.Value = prgHealth.Value - 10 

    If prgHealth.Value < prgHealth.Minimum Then 
     prgHealth.Value = prgHealth.Minimum 
    End If 

End Sub 

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

Я уверен, что многие люди, которые столкнулись с такими барами прогресса, будут иметь такую ​​же проблему, и я знаю, что это, наверное, что-то глупое!

Благодарим за помощь!

ответ

3

Вы делаете вещи в неправильном порядке. В первую очередь примените изменения к панели прогресса, затем проверьте, превышает ли это максимальное или меньшее минимальное значение. Подумайте о прогрессе как о бокале воды. Вы не можете заполнить его по краю (нет комментариев smartass о Ice теперь люди), потому что тогда у вас будет вода повсюду. Вы также не можете вывести больше воды, чем то, что находится в стакане (теперь нет комментариев smartass об осушении). Теперь вы должны сначала заполнить панель прогресса слишком большим количеством воды, чтобы она перешагнула край. Затем проверьте, вылили ли вы много воды в стекло. Вместо того, чтобы измерять количество воды, прежде чем влить ее в стакан. : D

Необходимо сначала проверить. Например:

if prgHealth.Value + 10 > prgHealth.Maximum Then 
    prgHealth.Value = prgHealth.Maximum 
else 
    prghealth.Value = prgHealth.Value + 10 
end if 

И тогда то же самое для минимум.

+0

Блестящий! Спасибо! –

+0

Совет для справок в будущем. Тег VB.NET вопросы с VB.NET в противном случае он не будет отображаться для людей, которые контролируют проблемы VB.NET. – WozzeC

+0

А, я не понимал. Еще раз спасибо: D –