Ir para conteúdo
Fórum Script Brasil
  • 0

Criar game snake (Jogo da cobrinha)


Javinha ©

Pergunta

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 !

Editado por Jonathan Queiroz
Adicionar tags (Jonathan)
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...