• Revista PROGRAMAR: Já está disponível a edição #54 da revista programar. Faz já o download aqui!

BernardoGodinho

erro em visual basic

1 mensagem neste tópico

Ola, tudo bem?

comecei á pouco a trabalhar com o visual studio tentei fazer um jogo tipo snake

 

o codigo é este, o firstsquare, secondsquare, thirdsquare e foursquare ja foram introduzidos na parte do design

basicamente controlamos com as down up right left e espaco para parar, e a tecla A adiciona quadrados no fim do ultimo quadrado, como ainda estou a fazer teste, testei apenas com o primeiro quadrado  (square(1)) que é adicionado atrás do foursquare , mas quando clico START da erro e diz que square(1).Top = y(4) (encontra-se na linha 114) e diz ": A referência de objecto não foi definida como uma instância de um objecto"., desculpem se nao consegui exprimir bem , aguardo uma resposta!

cumprimentos

Public Class Form1
    Dim x(30), y(30), i, cont, a, b As Integer
    Dim key As String
    Public square(100) As PictureBox

    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Down Then
            key = "Down"
            Timer1.Enabled = True
            Timer2.Enabled = False
            Timer3.Enabled = False
            Timer4.Enabled = False
        End If
        If e.KeyCode = Keys.Up Then
            key = "Up"
            Timer2.Enabled = True
            Timer1.Enabled = False
            Timer3.Enabled = False
            Timer4.Enabled = False
        End If
        If e.KeyCode = Keys.Right Then
            key = "Right"
            Timer3.Enabled = True
            Timer1.Enabled = False
            Timer2.Enabled = False
            Timer4.Enabled = False
        End If
        If e.KeyCode = Keys.Left Then
            key = "Left"
            Timer4.Enabled = True
            Timer3.Enabled = False
            Timer2.Enabled = False
            Timer1.Enabled = False
        End If
        If e.KeyCode = Keys.Space Then
            Timer4.Enabled = False
            Timer3.Enabled = False
            Timer2.Enabled = False
            Timer1.Enabled = False
        End If
        If e.KeyCode = Keys.A Then
            addsquare()
            i = i + 1
        End If


    End Sub
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        'down
        x(1) = firstsquare.Left
        y(1) = firstsquare.Top

        firstsquare.Top = firstsquare.Top + 20
    End Sub
    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        'up
        x(1) = firstsquare.Left
        y(1) = firstsquare.Top
        firstsquare.Top = firstsquare.Top - 20
    End Sub
    Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
        'rigth
        x(1) = firstsquare.Left
        y(1) = firstsquare.Top
        firstsquare.Left = firstsquare.Left + 20
    End Sub
    Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
        'left
        x(1) = firstsquare.Left
        y(1) = firstsquare.Top
        firstsquare.Left = firstsquare.Left - 20
    End Sub


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        i = 0
        secondsquare.Top = firstsquare.Top + 20
        secondsquare.Left = firstsquare.Left

        thirdsquare.Top = secondsquare.Top + 20
        thirdsquare.Left = secondsquare.Left

        foursquare.Top = thirdsquare.Top + 20
        foursquare.Left = thirdsquare.Left
        square(1) = New PictureBox
        square(1).Width = 20
        square(1).Height = 20
        square(1).Left = foursquare.Left - 20
        square(1).Top = foursquare.Top


    End Sub

    Private Sub firstsquare_Move(sender As Object, e As EventArgs) Handles firstsquare.Move
        cont = 1
        x(2) = secondsquare.Left
        y(2) = secondsquare.Top

        secondsquare.Left = x(1)
        secondsquare.Top = y(1)

        x(3) = thirdsquare.Left
        y(3) = thirdsquare.Top

        thirdsquare.Left = x(2)
        thirdsquare.Top = y(2)

        x(4) = foursquare.Left
        y(4) = foursquare.Top

        foursquare.Left = x(3)
        foursquare.Top = y(3)

        square(1).Top = y(4)
        square(1).Left = x(4)

    End Sub
    Private Sub addsquare()

        square(i) = New PictureBox
        square(i).Width = 20
        square(i).Height = 20
        square(i).Left = foursquare.Left - 20
        square(i).Top = foursquare.Top

        square(i).BackColor = Color.Black
        Me.Controls.Add(square(i))

    End Sub


End Class

 

Editado por BernardoGodinho
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora