Snake game em Python
2 participantes
Página 1 de 1
Snake game em Python
Olá. Como faço para desenvolver um programa que simule a movimentação de uma serpente em um tabuleiro, porém sem a utilização de listas, matrizes, "for" (basicamente só pode "while", "if", "else", "True", "False", "and" e "or"). As variáveis que são solicitadas ao jogador são a posição inicial da cabeça da serpente, o tamanho do seu corpo, os números de linhas e de colunas do tabuleiro, e a sequência que corresponde a movimentação da serpente. Como sou iniciante gostaria de ajuda de alguém por favor. Abaixo segue o código que desenvolvi até o momento, mas que não estou conseguindo avançar mais.
nlinhas = int(input("nlinhas: "))
ncolunas = int(input("ncolunas: "))
x = int(input("x: "))
y = int(input("y: "))
tam = int(input("tam: "))
mov = int(input("mov: "))
# Impressão do tabuleiro
memoria_col_1 = ncolunas # Permite reutilizar o valor inicial do número de colunas
memoria_col_2 = ncolunas
# Impressão da borda do topo:
bordas = 2
while ncolunas + bordas > 0:
print("X", end = " ")
ncolunas -= 1
print()
# Impressão do centro do tabuleiro com suas bordas laterais:
x0 = x - 1
j = 0
while j < nlinhas:
i = 0
while i <= memoria_col_1 + bordas:
if i == 0:
print("X", end = " ")
i += 1
elif x == i - bordas and y == j: # Define a posição da cabeça da cobra
print("C", end = " ")
elif x0 == i - bordas and y == j: # Define a posição do ínicio do corpo da cobra
print("O", end = " ")
elif i == memoria_col_1 + bordas:
print("X", end = " ")
i += 1
else:
print("L", end = " ")
i += 1
print()
j += 1
# Impressão da borda da base:
while memoria_col_2 + bordas > 0:
print("X", end = " ")
memoria_col_2 -= 1
print()
nlinhas = int(input("nlinhas: "))
ncolunas = int(input("ncolunas: "))
x = int(input("x: "))
y = int(input("y: "))
tam = int(input("tam: "))
mov = int(input("mov: "))
# Impressão do tabuleiro
memoria_col_1 = ncolunas # Permite reutilizar o valor inicial do número de colunas
memoria_col_2 = ncolunas
# Impressão da borda do topo:
bordas = 2
while ncolunas + bordas > 0:
print("X", end = " ")
ncolunas -= 1
print()
# Impressão do centro do tabuleiro com suas bordas laterais:
x0 = x - 1
j = 0
while j < nlinhas:
i = 0
while i <= memoria_col_1 + bordas:
if i == 0:
print("X", end = " ")
i += 1
elif x == i - bordas and y == j: # Define a posição da cabeça da cobra
print("C", end = " ")
elif x0 == i - bordas and y == j: # Define a posição do ínicio do corpo da cobra
print("O", end = " ")
elif i == memoria_col_1 + bordas:
print("X", end = " ")
i += 1
else:
print("L", end = " ")
i += 1
print()
j += 1
# Impressão da borda da base:
while memoria_col_2 + bordas > 0:
print("X", end = " ")
memoria_col_2 -= 1
print()
Renan Phoenix- Recebeu o sabre de luz
- Mensagens : 137
Data de inscrição : 22/01/2015
Idade : 32
Localização : Brasil
Re: Snake game em Python
Salve, chapa . Um jeito seria colocar esse trecho aí que printa o tabuleiro em um while e ir atualizando a posição da cabeça. Um exemplo:
Se você puder elaborar mais como você quer mover a minhoca ajudaria bastante. Enfim, eis algumas dicas para reduzir teu código:
Os trechos abaixo podem ser reescritos:
Como:
e
Multiplicar uma string por um número n retorna a string repetida n vezes. Ex:
Com as alterações acima, você pode jogar fora as variáveis memoria_col_1 e memoria_col_2.
Quanto ao seus 2 whiles, eu sugiro criar uma string que vai recebendo os caracteres invés de fazer vários prints. Um exemplo de como ficaria o trecho:
Após a adição de uma string auxiliar:
Continuando nos dois whiles: o código não tá levando em conta o tamanho da cobra, mudar esse if pode mudar isso:
- Código:
mov = int(input())
while mov!=0:
x+=mov
"""
trecho muito epico que printa o tabuleiro
baseado na posicao da cabeca
"""
mov = int(input())
Se você puder elaborar mais como você quer mover a minhoca ajudaria bastante. Enfim, eis algumas dicas para reduzir teu código:
Os trechos abaixo podem ser reescritos:
- Código:
# Impressão da borda do topo:
bordas = 2
while ncolunas + bordas > 0:
print("X", end = " ")
ncolunas -= 1
print()
- Código:
# Impressão da borda da base:
while memoria_col_2 + bordas > 0:
print("X", end = " ")
memoria_col_2 -= 1
print()
Como:
- Código:
# Impressão da borda do topo:
bordas = 2
print("X "*(ncolunas+bordas))
e
- Código:
# Impressão da borda da base:
print("X "*(bordas+ncolunas))
Multiplicar uma string por um número n retorna a string repetida n vezes. Ex:
- Código:
>>> a = "tales"
>>> a*3
'talestalestales'
Com as alterações acima, você pode jogar fora as variáveis memoria_col_1 e memoria_col_2.
Quanto ao seus 2 whiles, eu sugiro criar uma string que vai recebendo os caracteres invés de fazer vários prints. Um exemplo de como ficaria o trecho:
- Código:
# Impressão do centro do tabuleiro com suas bordas laterais:
x0 = x - 1
j = 0
while j < nlinhas:
i = 0
while i <= ncolunas + bordas:
if i == 0:
print("X", end = " ")
i += 1
elif x == i - bordas and y == j: # Define a posição da cabeça da cobra
print("C", end = " ")
elif x0 == i - bordas and y == j: # Define a posição do ínicio do corpo da cobra
print("O", end = " ")
elif i == ncolunas + bordas:
print("X", end = " ")
i += 1
else:
print("L", end = " ")
i += 1
print()
j += 1
Após a adição de uma string auxiliar:
- Código:
# Impressão do centro do tabuleiro com suas bordas laterais:
x0 = x - 1
j = 0
while j < nlinhas:
i = 0
linha = "X" #String inicializada com caractere da borda esquerda
while i < ncolunas:
if i == x and j == y: # Define a posição da cabeça da cobra
linha+= " C"
elif i == x0 and j == y: # Define a posição do ínicio do corpo da cobra
linha+= " O"
else:
linha+= " L"
i += 1
linha+= " X" # adicionando borda da direita
print(linha)
j += 1
Continuando nos dois whiles: o código não tá levando em conta o tamanho da cobra, mudar esse if pode mudar isso:
- Código:
elif i == x0 and j == y: # Define a posição do ínicio do corpo da cobra
linha+= " O"
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|