Jogo labirinto
Publicado por Jeffersson Abreu (última atualização em 23/10/2018)
[ Hits: 10.415 ]
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)
Correios - Rastreador de encomendas
Calcula quantos dias uma pessoa viveu
Cinnamon seria a aposta acertada frente às outras interfaces gráficas mais populares?
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Vou destruir sua infância:) (8)
Interface gráfica com problema (2)
Instalar Linux em notebook Sony Vaio VPCEG13EB (13)









