Jump to content
Fórum Script Brasil
  • 0

Criar game snake (Jogo da cobrinha)


Javinha ©

Question

Boa noite galera '-'

Eu sou aluno do 3º ano do ensino médio técnico em informática, e me amarro na área de desenvolvimento de software; Então, um professor orientou-nos uma espécie de projeto, em que foi decidido a mim a criação do joguinho da cobrinha, o tão famoso snake dos celulares. Pois bem, foram poucas aulas de visual studio 2012 professional, e temos que fazer em console [exibição DOS]. Então, fiz a estrutura que na minha opinião, é base. Já tenho o caracter pronto, se mexendo de acordo com as setas pressionadas. Entretanto, o certo do jogo é o caracter se mover sozinho, e o jogador só o controle . Creio eu que, o controle o programa já possui, mas estou procurando um modo de conseguir fazer com que esse caracter se mexa em linha reta, e quando direcionado à outro lado de acordo com as setas, prossiga em movimento retilíneo. Eis que comecei desse jeito:

Module Module1
    Sub Main()
        Dim tecla, x, y, px, py, dx, dy As Integer
        x = 40
        y = 12
        px = 1
        py = 1
        Do
            Console.SetCursorPosition(x, y)
            Console.ForegroundColor = ConsoleColor.Cyan
            Console.Write(Chr(1))
            tecla = Console.ReadKey().Key
            Console.SetCursorPosition(x, y)
            Console.Write(" ")

            If tecla = 40 Then
                y = y + py
            End If
            If tecla = 39 Then
                x = x + px
            End If
            If tecla = 37 Then
                x = x - px
            End If
            If tecla = 38 Then
                y = y - py
            End If

        Loop Until tecla = 27
    End Sub
End Module

Obs:. A "comida" da cobrinha e o fato de ela crescer de acordo com a obtenção da comida não está pronto (Ainda). A princípio quero saber como fazer com que esse caractere se mova da forma que especifiquei ali em cima... Alguém poderia me dar essa ajuda ?!

Abraços !

Edited by Jonathan Queiroz
Adicionar tags (Jonathan)
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Cara, testei esse código e funcionou. Precisa pressionar uma tecla qualquer para iniciar. Montei uma classe específica para a Cobra, para organizar melhor. Isso vai facilitar, por exemplo, quando você alimentar a cobra, pois vai adicionar apenas mais um Chr(1) ao objCobra.Caracter.

Module Module1

    Class Cobra

        Private intTamanho As Integer
        Private intPosicaoX As Integer
        Private intPosicaoY As Integer
        Private objCor As ConsoleColor
        Private strCaracter As String

        Public Property Tamanho() As Integer

            Get
                Return intTamanho
            End Get

            Set(ByVal value As Integer)
                intTamanho = value
            End Set

        End Property

        Public Property PosicaoX() As Integer
            Get
                Return intPosicaoX
            End Get

            Set(ByVal value As Integer)
                intPosicaoX = value
            End Set

        End Property

        Public Property PosicaoY() As Integer

            Get
                Return intPosicaoY

            End Get

            Set(ByVal value As Integer)
                intPosicaoY = value
            End Set

        End Property

        Public Property Cor() As ConsoleColor

            Get
                Return objCor
            End Get

            Set(ByVal value As ConsoleColor)
                objCor = value
            End Set

        End Property

        Public Property Caracter() As String
            Get
                Return strCaracter
            End Get
            Set(ByVal value As String)
                strCaracter = value
            End Set
        End Property

    End Class

    Sub Main()

        Dim tecla, ultimaPosicaoX, ultimaPosicaoY, velocidade As Integer
        Dim objCobra As New Cobra

        objCobra.Cor = ConsoleColor.Cyan
        objCobra.Tamanho = 1
        objCobra.PosicaoX = 40
        objCobra.PosicaoY = 12
        objCobra.Caracter = Chr(1)
        velocidade = 500 'Pode aumentar de acordo com o tamanho

        While True

            While Not Console.KeyAvailable

                Console.SetCursorPosition(ultimaPosicaoX, ultimaPosicaoY)
                Console.Write(" ")

                Console.SetCursorPosition(objCobra.PosicaoX, objCobra.PosicaoY)
                Console.ForegroundColor = objCobra.Cor
                Console.Write(objCobra.Caracter)

                ultimaPosicaoX = objCobra.PosicaoX
                ultimaPosicaoY = objCobra.PosicaoY

                Threading.Thread.Sleep(velocidade)

                If tecla = 40 Then
                    objCobra.PosicaoY = objCobra.PosicaoY + 1
                End If

                If tecla = 39 Then
                    objCobra.PosicaoX = objCobra.PosicaoX + 1
                End If

                If tecla = 37 Then
                    objCobra.PosicaoX = objCobra.PosicaoX - 1
                End If

                If tecla = 38 Then
                    objCobra.PosicaoY = objCobra.PosicaoY - 1
                End If

                If tecla = 27 Then
                    Exit While
                End If

            End While

            tecla = Console.ReadKey().Key

        End While

    End Sub


End Module

Link to comment
Share on other sites

  • 0
Cara, testei esse código e funcionou. Precisa pressionar uma tecla qualquer para iniciar. Montei uma classe específica para a Cobra, para organizar melhor. Isso vai facilitar, por exemplo, quando você alimentar a cobra, pois vai adicionar apenas mais um Chr(1) ao objCobra.Caracter.

Module Module1

    Class Cobra

        Private intTamanho As Integer
        Private intPosicaoX As Integer
        Private intPosicaoY As Integer
        Private objCor As ConsoleColor
        Private strCaracter As String

        Public Property Tamanho() As Integer

            Get
                Return intTamanho
            End Get

            Set(ByVal value As Integer)
                intTamanho = value
            End Set

        End Property

        Public Property PosicaoX() As Integer
            Get
                Return intPosicaoX
            End Get

            Set(ByVal value As Integer)
                intPosicaoX = value
            End Set

        End Property

        Public Property PosicaoY() As Integer

            Get
                Return intPosicaoY

            End Get

            Set(ByVal value As Integer)
                intPosicaoY = value
            End Set

        End Property

        Public Property Cor() As ConsoleColor

            Get
                Return objCor
            End Get

            Set(ByVal value As ConsoleColor)
                objCor = value
            End Set

        End Property

        Public Property Caracter() As String
            Get
                Return strCaracter
            End Get
            Set(ByVal value As String)
                strCaracter = value
            End Set
        End Property

    End Class

    Sub Main()

        Dim tecla, ultimaPosicaoX, ultimaPosicaoY, velocidade As Integer
        Dim objCobra As New Cobra

        objCobra.Cor = ConsoleColor.Cyan
        objCobra.Tamanho = 1
        objCobra.PosicaoX = 40
        objCobra.PosicaoY = 12
        objCobra.Caracter = Chr(1)
        velocidade = 500 'Pode aumentar de acordo com o tamanho

        While True

            While Not Console.KeyAvailable

                Console.SetCursorPosition(ultimaPosicaoX, ultimaPosicaoY)
                Console.Write(" ")

                Console.SetCursorPosition(objCobra.PosicaoX, objCobra.PosicaoY)
                Console.ForegroundColor = objCobra.Cor
                Console.Write(objCobra.Caracter)

                ultimaPosicaoX = objCobra.PosicaoX
                ultimaPosicaoY = objCobra.PosicaoY

                Threading.Thread.Sleep(velocidade)

                If tecla = 40 Then
                    objCobra.PosicaoY = objCobra.PosicaoY + 1
                End If

                If tecla = 39 Then
                    objCobra.PosicaoX = objCobra.PosicaoX + 1
                End If

                If tecla = 37 Then
                    objCobra.PosicaoX = objCobra.PosicaoX - 1
                End If

                If tecla = 38 Then
                    objCobra.PosicaoY = objCobra.PosicaoY - 1
                End If

                If tecla = 27 Then
                    Exit While
                End If

            End While

            tecla = Console.ReadKey().Key

        End While

    End Sub


End Module

Era isso que eu queria fazer mano. Puxa, brigadão. Agora é só colocar a comida e modelar. Valeu mesmo !

[]'s

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...