Ir ao conteúdo
  • Cadastre-se

Python nao acho o erro codigo python


Posts recomendados

boa noite pessoal, então, eu tava tentando fazer um jogo da memoria em python, o codigo esta todo certo, com apenas um erro: na hora de escolher a segunda posição, se eu escolho um numero fora do range da matriz, ele para o codigo, fiz isso na primeira escolha e o try except deu certo, podem me ajudar por favor?

 

import numpy as np
from random import sample

Acabou_Jogo = False
cont = 0
Posicoes_Abertas = []
Tentativas = 1

matriz_inicial = [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]
matriz_inicial = sample(matriz_inicial,16)

matriz_inicial = np.reshape(matriz_inicial,(4,4))
print(matriz_inicial)

Pares_Escondidos = ['*']*16

Pares_Escondidos = np.reshape(Pares_Escondidos,(4,4))

print(Pares_Escondidos)

while Acabou_Jogo == False:
           Escolhe_Posicao = int(input('Escolha a primeira posição[x,y]: '))
           x1 = Escolhe_Posicao // 10 % 10
           y1 = Escolhe_Posicao // 1 % 10
           try:
            Pares_Escondidos[x1][y1] = matriz_inicial[x1][y1] 
           except IndexError:
                print('Erro: tentando alcançar um índice que não existe na matriz')
           print(Pares_Escondidos)     
           while Escolhe_Posicao in Posicoes_Abertas or x1 > 3 or y1 > 3:
                Escolhe_Posicao = int(input('Posição inválida. Escolha a primeira posição[x,y]: '))
                x1 = Escolhe_Posicao // 10 % 10
                y1 = Escolhe_Posicao // 1 % 10
                try:
                  Pares_Escondidos[x1][y1] = matriz_inicial[x1][y1] 
                except IndexError:
                   print('Erro: tentando alcançar um índice que não existe na matriz')
                print(Pares_Escondidos)
           Escolhe_Posicao2 = int(input('Escolha a segunda posição[x,y]: '))
           x2 = Escolhe_Posicao2 // 10 % 10
           y2 = Escolhe_Posicao2 // 1 % 10
           try:
             Pares_Escondidos[x2][y2] = matriz_inicial[x2][y2]
           except IndexError:
                 print('Erro: tentando alcançar um índice que não existe na matriz')
           print(Pares_Escondidos)
           while Escolhe_Posicao2 in Posicoes_Abertas or x1 > 3 or y1 > 3 or Escolhe_Posicao2 == Escolhe_Posicao:
                Escolhe_Posicao2 = int(input('Posição inválida.Escolha a segunda posição[x,y]: '))
                x2 = Escolhe_Posicao2 // 10 % 10
                y2 = Escolhe_Posicao2 // 1 % 10
                try:
                   Pares_Escondidos[x2][y2] = matriz_inicial[x2][y2] 
                except IndexError:
                   print('Erro: tentando alcançar um índice que não existe na lista')
                print(Pares_Escondidos)
           if int(matriz_inicial[x1][y1]) == int(matriz_inicial[x2][y2]):
                Pares_Escondidos[x1][y1] = matriz_inicial[x1][y1]
                Pares_Escondidos[x2][y2] = matriz_inicial[x2][y2]
                cont += 1
                Posicoes_Abertas.append(Escolhe_Posicao)
                Posicoes_Abertas.append(Escolhe_Posicao2)
                print(Pares_Escondidos)
                print('Parabéns! Você acertou!')
           if int(matriz_inicial[x1][y1]) != int(matriz_inicial[x2][y2]): 
                Pares_Escondidos[x1][y1] = '*'
                Pares_Escondidos[x2][y2] = '*'
           Tentativas += 1    
           if cont == 8:
                Acabou_Jogo = True
                print('Parabéns! Você conseguiu descobrir todas as casas em', Tentativas, 'jogadas!')
                
                
          
                

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Fabio Umpierre  Em vez de usar try você pode comparar os pares com as posições x/y assim,

 

(x1 + 1, y1 + 1) > Pares_Escondidos.shape

 

Aí é só fazer esse teste no loop,

 

import numpy as np
from random import sample

Acabou_Jogo = False
cont = 0
Posicoes_Abertas = []
Tentativas = 1

matriz_inicial = [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]
matriz_inicial = sample(matriz_inicial,16)
matriz_inicial = np.reshape(matriz_inicial,(4,4))
print(matriz_inicial)

Pares_Escondidos = ['*']*16
Pares_Escondidos = np.reshape(Pares_Escondidos,(4,4))
print(Pares_Escondidos)

while Acabou_Jogo == False:
    Escolhe_Posicao = int(input('Escolha a primeira posição[x,y]: '))
    x1 = Escolhe_Posicao // 10 % 10
    y1 = Escolhe_Posicao // 1 % 10
          
    while (x1 + 1, y1 + 1) > Pares_Escondidos.shape:
        Escolhe_Posicao = int(input('Posição inválida. Escolha a primeira posição[x,y]: '))
        x1 = Escolhe_Posicao // 10 % 10
        y1 = Escolhe_Posicao // 1 % 10
        
    Pares_Escondidos[x1][y1] = matriz_inicial[x1][y1] 
    print(Pares_Escondidos)     

    Escolhe_Posicao2 = int(input('Escolha a segunda posição[x,y]: '))
    x2 = Escolhe_Posicao2 // 10 % 10
    y2 = Escolhe_Posicao2 // 1 % 10
    
    while (x2 + 1, y2 + 1) > Pares_Escondidos.shape:
        Escolhe_Posicao2 = int(input('Posição inválida.Escolha a segunda posição[x,y]: '))
        x2 = Escolhe_Posicao2 // 10 % 10
        y2 = Escolhe_Posicao2 // 1 % 10
        
    Pares_Escondidos[x2][y2] = matriz_inicial[x2][y2]
    print(Pares_Escondidos)     

    if int(matriz_inicial[x1][y1]) == int(matriz_inicial[x2][y2]):
        Pares_Escondidos[x1][y1] = matriz_inicial[x1][y1]
        Pares_Escondidos[x2][y2] = matriz_inicial[x2][y2]
        cont += 1
        Posicoes_Abertas.append(Escolhe_Posicao)
        Posicoes_Abertas.append(Escolhe_Posicao2)
        print(Pares_Escondidos)
        print('Parabéns! Você acertou!')
           
    if int(matriz_inicial[x1][y1]) != int(matriz_inicial[x2][y2]): 
        Pares_Escondidos[x1][y1] = '*'
        Pares_Escondidos[x2][y2] = '*'
    
    Tentativas += 1    
    if cont == 8:
        Acabou_Jogo = True
        print('Parabéns! Você conseguiu descobrir todas as casas em', Tentativas, 'jogadas!')
                
                
          

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!