2016-12-09 62 views
0

我正在创建一个DnD角色创建程序,并且我已经陷入了“体验/级别”区域。我想要的是每1000个经验,水平上升(所以0到999是0级,如何创建体验/升级系统?

所以,我用下面的代码来得到我在哪里,但它不会改变标签(lblLevel)为1时(当经验更改为2000或2)经验(txtExperience)更改为1000。

Private Sub txtExperience_textChanged(sender As Object, e As EventArgs) Handles txtExperience.TextChanged 
    If txtExperience.Text = letters Then 
     lblLevel.Text = "0" 
    ElseIf txtExperience.Text >= 10000 Then 
     lblLevel.Text = "Maxed" 
    End If 
    Select Case txtExperience.Text 
     Case Is <= "999" 
      lblLevel.Text = "0" 
     Case "1000" To "1999" 
      lblLevel.Text = "1" 
     Case "2000" To "2999" 
      lblLevel.Text = "2" 
     Case "3000" To "3999" 
      lblLevel.Text = "3" 
     Case "4000" To "4999" 
      lblLevel.Text = "4" 
     Case "5000" To "5999" 
      lblLevel.Text = "5" 
     Case "6000" To "6999" 
      lblLevel.Text = "6" 
     Case "7000" To "7999" 
      lblLevel.Text = "7" 
     Case "8000" To "8999" 
      lblLevel.Text = "8" 
     Case "9000" To "9999" 
      lblLevel.Text = "9" 
    End Select 


End Sub 

我会说实话,我不知道如果我在使用选择案例...正确的,当我尝试使用If语句(和其他情况下,如果就位的每个案例... ...),它也不会工作任何帮助将不胜感激

+1

字符串是不是数字。 “9”将评估为大于“1000”。打开Option Strict并使用数字(整数) – Plutonix

+0

文本为文本。你无法将其与数字进行比较。首先用'Integer.Parse()'或'Integer.TryParse()'解析文本,你会得到一个你可以比较的数字。 –

回答

3

你甚至可以进一步简化。利用基本的数学,你可以摆脱长期Select Case声明:

Dim Experience As Integer = 0 
If Integer.TryParse(txtExperience.Text, Experience) = True Then 
    If Experience >= 10000 Then 
     lblLevel.Text = "Maxed" 
     Return 
    End If 

    lblLevel.Text = Math.Floor(Experience/1000).ToString() 
Else 
    MessageBox.Show("Input must be a whole number between 0 and 10000", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
End If 

这里是我的代码的在线测试:https://dotnetfiddle.net/VtGFLx

0

那里是之间的区别和string

Select Case Integer.Parse(txtExperience.Text) 
     Case Is <= 999 
      lblLevel.Text = 0 
     Case 1000 To 1999 
      lblLevel.Text = 1 
     Case 2000 To 2999 
      lblLevel.Text = 2 
     Case 3000 To 3999 
      lblLevel.Text = 3 
     Case 4000 To 4999 
      lblLevel.Text = 4 
     Case 5000 To 5999 
      lblLevel.Text = 5 
     Case 6000 To 6999 
      lblLevel.Text = 6 
     Case 7000 To 7999 
      lblLevel.Text = 7 
     Case 8000 To 8999 
      lblLevel.Text = 8 
     Case 9000 To 9999 
      lblLevel.Text = 9 
    End Select 
+0

啊,我明白了!所以引号是问题!谢谢! –