teste
unknown
python
3 years ago
5.2 kB
8
Indexable
# -*- coding: utf-8 -*- """ICA-SLI-2022-1-PP1-prova-P1-V1.0-FatoumataWS-LuaraRM.V2ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1Y-L6d-mxuHIXKajVfFlcj-GN3g2E_1vV """ """Programa QuebraCabeca:Quebra-cabeca tradicional de 15 pecas.""" # # 0Sera que falta algum import? # from random import choice import board def montarQuebraCabeca(): """ Construtor: Monta um tabuleiro 4x4 aleatoriamente. retorna uma lista que representa o tabuleiro """ pecas = list(range(16)) # uma lista de 16 inteiros pecas[0] = " " # forca a primeira posicao como casa vazia tabuleiro = [] while pecas != []: # 1enquanto a lista de pecas NAO esta vazia x = choice(pecas) # choice: escolhe aleatoriamente uma peça tabuleiro += [x] # 2aciciona ao tabuleiro del pecas[pecas.index(x)] # remomve da lista inicial return tabuleiro def transposta(b1): b2 = board.Board((4, 4)) for i in range(4): for j in range(4): b2[j, i] = b1[i, j] return b2 def prepararSaida(tabuleiro): """ Retorna uma string que representa o tabuleiro. Util para impressao. """ # ...........................===>suas linhas de codigo tabela1 = board.Board((4, 4)) tabela1.populate(tabuleiro) return transposta(tabela1) def ganhou(tabuleiro): "Retorna True se as 15 primeiras casas contêm os números de 1 a 15" # ...........................===>suas linhas de codigo ganhou1 = [" ", ] ganhou2 = [] bg = board.Board((4, 4)) bg.populate(tabuleiro) bc = transposta(bg) arrayTab = [] for i in range(4): for j in range(4): arrayTab.append(bc[i,j]) for i in range(15): ganhou1.append(i+1) ganhou2.append(i+1) ganhou2.append(" ") if arrayTab == ganhou1 or arrayTab == ganhou2: return True else: return False ganhou([2, ' ', 8, 11, 15, 4, 12, 1, 5, 13, 10, 7, 9, 3, 6, 14]) def retornarJogadasValidas(tabuleiro): """Retorna uma lista com os números das peças livres(aquelas que podem ser movidas)""" # ...........................===>suas linhas de codigo pecasLivres = [] b1 = board.Board((4, 4)) b1.populate(tabuleiro) b2 = transposta(b1) for i in range(4): for j in range(4): if b2[i, j] == ' ': if i+1 < 4: pecasLivres.append(b2[i + 1, j]) if i-1 >= 0: pecasLivres.append(b2[i - 1, j]) if j + 1 < 4: pecasLivres.append(b2[i, j + 1]) if j - 1 >= 0: pecasLivres.append(b2[i, j - 1]) return pecasLivres return pecasLivres #tabuleiro = montarQuebraCabeca() #print(tabuleiro) #tab = prepararSaida(tabuleiro) #tab.draw() #retornarJogadasValidas(tabuleiro) def executarJogada(tabuleiro, peca): """Movimenta a peça dada. Levanta exceção ValueError caso peça não seja válida""" # ...........................===>suas linhas de codigo b1 = prepararSaida(tabuleiro) pecasLivres = retornarJogadasValidas(tabuleiro) if peca in pecasLivres: for i in range(4): for j in range(4): if b1[i, j] == ' ': linha = i coluna = j for i in range(4): for j in range(4): if b1[i, j] == peca: linhapeca = i colunapeca = j b1[linha, coluna] = b1[linhapeca, colunapeca] b1[linhapeca, colunapeca] = " " tabArray = [] for i in range(4): for j in range(4): tabArray.append(b1[j, i]) return tabArray #tabuleiro = montarQuebraCabeca() #tab = prepararSaida(tabuleiro) #tab.draw() #peca = input('Peça: ') #executarJogada(tabuleiro, peca) def jogar(): qc = montarQuebraCabeca() #print(qc) while not ganhou(qc): saida = prepararSaida(qc) saida.draw() try: peca = int(input("Entre com o número da peca:")) # # 3 Como o usuario pode abandonar o jogo? # 4 Que tipo de teste deve ser feito? # 5 Qual o comando a executar? # qc = executarJogada(qc, peca) except ValueError as erro: print("Erro:", erro) # 6imprime mensagem e continua except SyntaxError: sys.exit("Fim") # 7abandona a execucao except Exception as exInst: # algo inespeprado aconteceu! # print(type(exInst)) # a instancia da excecao # print(exInst.args) #x argumentos armazenados em .args # print(exInst) # a excecao em si print("Nao entendi") return qc def main(): qc = jogar() if ganhou(qc): print("Parabens, voce ganhou!") else: print("Que pena, perdeu!") saida = prepararSaida(qc) saida.draw() main()
Editor is loading...