Visual Basic .Net正在改变我的变量,并在我的程序中抛出错误

时间:2014-06-16 11:18:15

标签: .net visual-studio variables visual-studio-2008 tetris

我是来自澳大利亚的11年级IPT(编程)学生。我有一项任务,我需要制作一个旧式游戏。我选择制作俄罗斯方块并且差不多完成了,但是有一些问题。

我遇到了Visual Basic .Net(2008)的问题。程序正在更改变量而不进行编程。它位于模块中,Sub是变量存在的唯一位置。

基本上,变量(称为intLineFilled)保存在比赛场地内某条水平线上的方格数。然后我有一个IF语句来测试它是否等于适合一行的总平方数。 (游戏面板的宽度除以正方形的宽度。)当发生这种情况时,它意味着将布尔值更改为true以表示存在一条线。

我的问题是: 在调试时,在放置第一个块之后(有时是第二个或第三个,取决于运气),当它到达上述IF语句时,该值仅为1,2或3,具体取决于块类型。但是IF语句仍然运行,并且在IF语句期间或之后测试变量intLineFilled的值告诉我它的值是16(这是它需要达到的值)。从这里,我收到一个错误,其中程序告诉我表单上有5行,这引发了我以后使用的数组的错误。代码工作正常,但现在没有。

    Dim intLineChecker_Left As Integer = frmGame.picGamePanel.Left
    Dim intLineChecker_Top As Integer = frmGame.picGamePanel.Top + frmGame.picGamePanel.Height - intSquareSize

    Dim blnLine As Boolean = False
    Dim intLineFilled As Integer = 0
    Dim intLineNum As Integer = 0
    Dim intLine(4) As Integer
    For index As Byte = 0 To 4
        intLine(index) = 0
    Next index

    While intLineChecker_Top > frmGame.picGamePanel.Top
        While intLineChecker_Left < (frmGame.picGamePanel.Left + frmGame.picGamePanel.Width)
            For Each placedblock In frmGame.Controls
                If placedblock.Tag = "placed" Then
                    If placedblock.Left = intLineChecker_Left Then
                        If placedblock.Top = intLineChecker_Top Then
                            intLineFilled += 1
                        End If

                    End If
                End If
            Next placedblock
            If intLineFilled = frmGame.picGamePanel.Width / intSquareSize Then
                blnLine = True
            End If
            If blnLine = True Then
                intLineNum += 1
                frmGame.TextBox1.Text = frmGame.TextBox1.Text + "bln: " + Str(intLineNum) + ", "
                intLine(intLineNum) = intLineChecker_Top
            End If
            intLineChecker_Left = intLineChecker_Left + intSquareSize
        End While
        blnLine = False
        intLineFilled = 0
        intLineChecker_Left = frmGame.picGamePanel.Left
        intLineChecker_Top = intLineChecker_Top - intSquareSize
    End While

如果有人想看一下,我的项目在以下链接的zip文件中: https://www.dropbox.com/s/99btww63qpl0pjm/Tetris.zip

游戏需要在明天完成,但我不能继续其他任何事情,直到我解决这个问题。

0 个答案:

没有答案