Jogo labirinto
Publicado por Jeffersson Abreu (última atualização em 23/10/2018)
[ Hits: 9.800 ]
Homepage: https://www.linkedin.com/in/jeffersson-abreu/
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)
Calcular aproximação de raiz quadrada
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta