Tarefa 6 - Jogo da cobrinha

Prazo de entrega:
Segunda chance:
Esta tarefa tem peso 3.

Para simular um jogo da cobrinha, você precisará implementar uma lista ligada para guardar uma sequência de bloquinhos.


O jogo Snake, também conhecido como “jogo da cobrinha”, é um jogo antigo que ficou conhecido por diversas versões. A primeira versão veio com no jogo Blockade de 1976.

A cobra move-se numa matriz e seu objetivo é passear por essa matriz alimentando-se com frutas que aparecem aleatoriamente em diferentes posições da matriz, sempre uma por vez. A cobra começa com tamanho um e, toda vez que se alimenta, seu tamanho cresce de uma unidade e uma nova fruta aparece. O jogo só para quando um dos dois eventos seguintes ocorrer:

Uma colisão ocorre quando alguma parte da cobra já ocupa a posição para onde a cabeça iria se mover, mesmo que seja a última posição da cauda da cobra.

Em cada passo, a cobra move a cabeça para uma das quatro posições vizinhas (cima, baixo, esquerda e direita) e as posições de seu corpo seguem as posições anteriores. Para controlar a direção do movimento, o jogador pressiona uma de quatro teclas:

De acordo com as regras do jogo, quando a cobra cruza alguma borda da matriz, a cabeça vai para a posição correspondente na borda oposta da posição anterior. Por exemplo, quando a cabeça da cobra está na última coluna e a cobra se move para direta, logo em seguida, a cabeça irá aparecer na mesma linha, mas na primeira coluna. Analogamente, se a cabeça estiver na primeira linha e a cobra se mover para cima, então ela irá aparecer na última linha e assim por diante.

Implemente um programa cobra que simula o jogo da cobrinha.

Entrada

MATRIZ 2 2
COBRA 1 1
FRUTA 0 0
w
a
FRUTA 1 1
s
d
FRUTA 0 1
w

Saída

A saída conterá o estado da matriz no início do jogo, após cada passo completo da cobra e após cada fruta aparecer. Cada posição vazia da matriz será representada por um caractere _ e cada posição da cobra por um #. A posição da fruta conterá um *. Utilize espaços para separar as colunas e uma quebra de linha entre as matrizes. No final da saída, deve haver uma linha GAME OVER ou YOU WIN, de acordo com o resultado do jogo.

* _ 
_ # 

* # 
_ _ 

# # 
_ _ 

# # 
_ * 

# _ 
# * 

# _ 
# # 

# * 
# # 

# # 
# # 

YOU WIN

Critérios

É obrigatório utilizar uma lista duplamente ligada para representar as posições da matriz ocupadas pela cobra durante o jogo.