我的代码需要帮助 [英] I need help with my code

查看:85
本文介绍了我的代码需要帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我正在为我的班级项目做游戏蛇,我需要使用图片框,我现在卡在我无法解决的部分,在区域comida,私人子creat_mouse()我的.Top和。左边创建一个错误,说明



未处理的类型异常; System.NullReferenceException;发生在WindowsApplication2.exe中



附加信息:对象引用未设置为对象的实例。


$ b $我需要帮助,我不知道出了什么问题。



Sry bad english

















 Public Class Form1 

#RegionSnake
Dim snake(1000)As PictureBox
Dim comp_cobra As Integer = -1
Dim esquerda_direita As Integer = 0
Dim cima_baixo As Integer = 0
Dim r As Random

PrivateSubcabeça()
comp_cobra + = 1
snake (comp_cobra)=新PictureBox
使用snake(comp_cobra)
.Height = 10
.Width = 10
.BackColor = Color.Black
.Top =(pb1 .Top + pb1.Bottom)/ 2
.Left =(pb1.Left + pb1.Right)/ 2

结束Me.Controls.Add(snake(com) p_cobra))
snake(comp_cobra).BringToFront()

compi_cobra()
compi_cobra()
End Sub

Private Sub Form1_KeyPress (发送者为对象,e为KeyPressEventArgs)处理Me.KeyPress
选择案例e.KeyChar
案例d
esquerda_direita = 10
cima_baixo = 0
案例 a
esquerda_direita = -10
cima_baixo = 0
Casew
esquerda_direita = 0
cima_baixo = -10
Cases
esquerda_direita = 0
cima_baixo = 10

End Select
End Sub

Private Sub Form1_Load(sender as Object,e As EventArgs)Handles Me .Load $ b $bcabeça()
Timer1.Start()
create_mouse()
End Sub

Private Sub compi_cobra()
comp_cobra + = 1
snake(comp_cobra)= New PictureBox
with snake(comp_cobra)
.Height = 10
.Width = 10
.BackColor = Color.Black
.Top = snake (comp_cobra - 1).Top
.Left = snake(comp_cobra - 1).Left + 10
End with
Me.Controls.Add(snake(comp_cobra))
snake (comp_cobra).BringToFront()
End Sub
Private Sub tsnake_Tick(sender As Object,e As EventArgs)处理Timer1.Tick
For i = comp_cobra To 1 Step -1
snake(i).Top = snake(i - 1).Top
snake(i).Left = snake(i - 1).Left
Next
snake(0).Top + = cima_baixo
snake(0).Left + = esquerda_direita
colide_parede()
comer_comida()
End Sub
#End Region

#RegionColisão
Private Sub colide_parede()
如果是snake(0).Left< pb1.Left然后
Timer1.Stop()
MsgBox(Perdeste Fagg)
结束如果
如果是蛇(0)。右> pb1.Right然后
Timer1.Stop()
MsgBox(Perdeste Fagg)
结束如果
如果是蛇(0).Bottom> pb1.Bottom然后
Timer1.Stop()
MsgBox(Perdeste Fagg)
结束如果
如果是snake(0).Top< pb1.Top然后
Timer1.Stop()
MsgBox(Perdeste Fagg)
结束如果
结束子
#End Region

#Regioncomida
Dim mouse As PictureBox
Private Sub create_mouse()
mouse = New PictureBox
使用鼠标
.Width = 10
。高度= 10
.BackColor = Color.Red
.Top = r.Next(pb1.Top,pb1.Left)
.Left = r.Next(pb1.Left,pb1.Right )
结束时
Me.Controls.Add(鼠标)
mouse.BringToFront()


结束次级
私人Sub comer_comida( )
如果snake(0).Bounds.IntersectsWith(mouse.Bounds)那么
compi_cobra()
mouse.Top = r.Next(pb1.Top,pb1.Bottom - 10)
mouse.Left = r.Next(pb1.Left,pb1.Right - 10)


结束如果

结束子
#结束地区

私人子按钮1_点击(发件人为Object,e As EventArgs)


End Sub

Private Sub pb1_Click(sender As Object,e As EventArgs)处理pb1.Click

结束子

私人子按钮2_Click(发件人作为对象,e作为EventArgs)

结束子
结束类

解决方案

更改

Dim r随机



Dim r随机=新随机

So im doing the game snake for my class project, and i need to use the picturebox, im now stuck on a part that i cant resolve, in the Region "comida", private sub creat_mouse() my .Top and .Left creat an error that says

An unhandled exception of type ;System.NullReferenceException; occurred in WindowsApplication2.exe

Additional information: Object reference not set to an instance of an object.

i need help, i dont know what is wrong.

Sry bad english








Public Class Form1

#Region "Snake"
    Dim snake(1000) As PictureBox
    Dim comp_cobra As Integer = -1
    Dim esquerda_direita As Integer = 0
    Dim cima_baixo As Integer = 0
    Dim r As Random

    Private Sub cabeça()
        comp_cobra += 1
        snake(comp_cobra) = New PictureBox
        With snake(comp_cobra)
            .Height = 10
            .Width = 10
            .BackColor = Color.Black
            .Top = (pb1.Top + pb1.Bottom) / 2
            .Left = (pb1.Left + pb1.Right) / 2
        End With
        Me.Controls.Add(snake(comp_cobra))
        snake(comp_cobra).BringToFront()

        compi_cobra()
        compi_cobra()
    End Sub

    Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
        Select Case e.KeyChar
            Case "d"
                esquerda_direita = 10
                cima_baixo = 0
            Case "a"
                esquerda_direita = -10
                cima_baixo = 0
            Case "w"
                esquerda_direita = 0
                cima_baixo = -10
            Case "s"
                esquerda_direita = 0
                cima_baixo = 10

        End Select
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        cabeça()
        Timer1.Start()
        create_mouse()
    End Sub

    Private Sub compi_cobra()
        comp_cobra += 1
        snake(comp_cobra) = New PictureBox
        With snake(comp_cobra)
            .Height = 10
            .Width = 10
            .BackColor = Color.Black
            .Top = snake(comp_cobra - 1).Top
            .Left = snake(comp_cobra - 1).Left + 10
        End With
        Me.Controls.Add(snake(comp_cobra))
        snake(comp_cobra).BringToFront()
    End Sub
    Private Sub tsnake_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        For i = comp_cobra To 1 Step -1
            snake(i).Top = snake(i - 1).Top
            snake(i).Left = snake(i - 1).Left
        Next
        snake(0).Top += cima_baixo
        snake(0).Left += esquerda_direita
        colide_parede()
        comer_comida()
    End Sub
#End Region

#Region "Colisão"
    Private Sub colide_parede()
        If snake(0).Left < pb1.Left Then
            Timer1.Stop()
            MsgBox("Perdeste Fagg")
        End If
        If snake(0).Right > pb1.Right Then
            Timer1.Stop()
            MsgBox("Perdeste Fagg")
        End If
        If snake(0).Bottom > pb1.Bottom Then
            Timer1.Stop()
            MsgBox("Perdeste Fagg")
        End If
        If snake(0).Top < pb1.Top Then
            Timer1.Stop()
            MsgBox("Perdeste Fagg")
        End If
    End Sub
#End Region

#Region "comida"
    Dim mouse As PictureBox
    Private Sub create_mouse()
        mouse = New PictureBox
        With mouse
            .Width = 10
            .Height = 10
            .BackColor = Color.Red
            .Top = r.Next(pb1.Top, pb1.Left)
            .Left = r.Next(pb1.Left, pb1.Right)
        End With
        Me.Controls.Add(mouse)
        mouse.BringToFront()


    End Sub
    Private Sub comer_comida()
        If snake(0).Bounds.IntersectsWith(mouse.Bounds) Then
            compi_cobra()
            mouse.Top = r.Next(pb1.Top, pb1.Bottom - 10)
            mouse.Left = r.Next(pb1.Left, pb1.Right - 10)


        End If

    End Sub
#End Region

    Private Sub Button1_Click(sender As Object, e As EventArgs)


    End Sub

    Private Sub pb1_Click(sender As Object, e As EventArgs) Handles pb1.Click

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs)

    End Sub
End Class

解决方案

Change
Dim r As Random
to
Dim r As Random = New Random


这篇关于我的代码需要帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆