Jogo labirinto
Publicado por Jeffersson Abreu (última atualização em 23/10/2018)
[ Hits: 10.279 ]
Homepage: https://somewhere.com
Download labirinto-2.0.py (versão 2)
Download labirinto-2.1.py (versão 3)
Este é uma adaptação do jogo "Labirinto", feita baseada no que foi escrito em C pelo colega SamL.
Diferenciais:
* Mapas começam com 10x30 no ultimo nível com 20x60
* Contador de nível
* Contador de movimentos
* Timer de nível
Bugs:
* Para se mover é necessário pressionar dois botões (direção + enter)
* As vezes o mapa fica sem saída (é facilmente resolvido com "r + enter")
Divirtam-se.
Versão 2 - Enviado por Jeffersson Abreu em 15/11/2016
Changelog: Completamente mudado, sem mais palavras!
Somente imagens >>> http://imgur.com/a/fqqZK
mude a cor do labirinto com a tecla backspace!
Versão 3 - Enviado por Washington Luis de O Santos em 15/10/2018
Changelog: Foi modificado a forma que é alterada a cor do labirinto usando um recurso do próprio módulo 'curses' o que tornou o prg mais simples e mais rápido.
Agora o jogador deixa pegadas pelos lugares onde já passou
O jogador agora também pode voltar para o inicio do jogo sem apagar as pegadas, através das teclas [F1 ou R/r]
#!/usr/bin/env python3
"""
Versão em python do jogo "Labirinto" escrito em C pelo colega
SamL
Versão 0.01
"""
from random import randrange
import time
import os
difficult = {'height': 10, 'width': 30}
y, x = 1, 1
moving = 0
def build(levels):
height = levels['height']
width = levels['width']
matrix = []
for line in range(height):
if line == 0 or line == height - 1:
matrix.append(['#'] * width)
elif line == 1:
matrix.append([' '] * width)
matrix[line][0] = '#'
matrix[line][-1] = '#'
else:
matrix.append(['#'] * width)
for column in range(width):
matrix[line][randrange(1, width - 1)] = ' '
matrix[-2][width // 2] = ' '
matrix[-3][width // 2] = ' '
matrix[-1][width // 2 - 1] = '|'
matrix[-1][width // 2] = ' '
matrix[-1][width // 2 + 1] = '|'
return matrix
def draw(built):
global y, x, moving
os.system('clear')
built[y][x] = '$'
print('\n\t\tLabirinto Version 0.1\n')
for line in range(len(built)):
print('\t\t', end='')
for column in range(len(built[line])):
if column != len(built[line]) - 1:
print('{}'.format(built[line][column]), end='')
else:
print('{}'.format(built[line][column]), end='\n')
def new_world():
global y, x, world
world = build(difficult)
draw(world)
def move():
global y, x, world, moving
key = input('Move: ')
if key == 'w' and world[y - 1][x] == ' ':
world[y][x] = ' '
y -= 1
elif key == 'd' and world[y][x + 1] == ' ':
world[y][x] = ' '
x += 1
elif key == 's' and world[y + 1][x] == ' ' or world[y + 1][x] == '_':
world[y][x] = ' '
y += 1
elif key == 'a' and world[y][x - 1] == ' ':
world[y][x] = ' '
x -= 1
elif key == 'r':
moving -= 1
new_world()
elif key == '':
moving -= 1
moving += 1
draw(world)
if __name__ == '__main__':
world = build(difficult)
draw(world)
for level in range(1, 11):
try:
start = time.time()
while world[y][x] != world[-1][difficult['width'] // 2]:
print('Level: {}'.format(level))
print('\n\tUp: s, Right: d, Down: s, Left: a')
print('\tMoviment: {}\n'.format(moving))
move()
finish = time.time()
os.system('clear')
seconds = finish - start
print('\n\n\n\t\t\tCongratilations... your time was {} seconds'.format(int(seconds)))
time.sleep(3)
y, x = 1, 1
moving = 0
difficult['height'] += 2
difficult['width'] += 6
world = build(difficult)
draw(world)
except KeyboardInterrupt:
print('\rIncompleto...')
exit(0)
print('You win!!!')
exit(0)
Just Do It - XML Generic Editor
Calcular aproximação de raiz quadrada
Compartilhe suas configurações gconf
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (10)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









