Jogo labirinto
Publicado por Jeffersson Abreu (última atualização em 23/10/2018)
[ Hits: 9.874 ]
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)
Sugestão aleatória de filmes e séries para assistir por streaming
Avaliador de Expressões Simples
Mudar wallpaper por um aleatorio
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (12)