Sou novato em python e resolvi fazer um programa que mostra os movimentos das peças do xadrez fui testar no decorrer enquanto fazia e o programa retorenou o seguinte erro:
AttributeError: ‘peao’ object has no attribute ‘move’
O código é
class peao:
peca: 'peão’
move: ‘1 casa para a frente(se houver outra peça em sua casa diagonal mais próxima a frente).’
class rei:
peca: 'rei’
move: ‘Move-se para para qualquer direção limitando-se a uma casa por movimento.’
class dama:
peca: 'dama rainha’
move: ‘Move-se diagonalmente sem limitação de casas.’
class torre:
peca: 'torre’
move: ‘Move-se para frente e para os lados sem limitação de casas.’
class bispo:
peca: 'bispo’
move: ‘Move-se pelas diagonais sem limitação de casas.’
class cavalo:
peca: 'cavalo’
move: ‘Move-se fazendo um L indo duas casas horizontalmente o verticamente e depois indo uma casa em diagonal.’
print(’-’ * 10, ‘MOVIMENTOS DAS PEÇAS DE XADREZ’, ‘-’ * 10)
print(‘1 - PEÃO\n2 - REI\n3 - DAMA/RAINHA\n4 - TORRE\n5 - BISBO\n6 - Cavalo’)
m = int(input(‘Escolha a peça que você deseja saber o movimento:’))
peao = peao()
rei = rei()
dama = dama()
torre = torre()
bispo = bispo()
cavalo = cavalo()
if m == 1:
print(peao.move)
PS.: A identação saiu aqui mas o erro não é nela, eu já coloquei o código em scripts para consertar isso.
PS2.: O código não é o melhor do mundo pra não dizer mal feito, eu sei que daria para fazer o mesmo
Boa noite amigo
Não mudei praticamente nada no código apenas que prefiro usar aspas duplas para strings e você usou dois pontos para setar os valores nos campos de todas as classes, por isso não estava funcionando.
class peao:
peca = "peão"
move = "1 casa para a frente(se houver outra peça em sua casa diagonal mais próxima a frente)."
class rei:
peca = "rei"
move = "Move-se para para qualquer direção limitando-se a uma casa por movimento."
class dama:
peca = "dama rainha"
move = "Move-se diagonalmente sem limitação de casas."
class torre:
peca = "torre"
move = "Move-se para frente e para os lados sem limitação de casas."
class bispo:
peca = "bispo"
move = "Move-se pelas diagonais sem limitação de casas."
class cavalo:
peca = "cavalo"
move = "Move-se fazendo um L indo duas casas horizontalmente o verticamente e depois indo uma casa em diagonal."
print("-" * 10, "MOVIMENTOS DAS PEÇAS DE XADREZ", "-" * 10)
print("1 - PEÃO\n2 - REI\n3 - DAMA/RAINHA\n4 - TORRE\n5 - BISBO\n6 - Cavalo")
m = int(input("Escolha a peça que você deseja saber o movimento:"))
peao = peao
rei = rei()
dama = dama()
torre = torre()
bispo = bispo()
cavalo = cavalo()
if m == 1:
print(peao.move)
Vou dar uma modificada e posto depois, porém esse compilou sem problemas.
O código modificado
class pecaXadrez:
def __init__(self, peca):
if peca == 1:
self.nomePeca = "Peão"
self.movimento = "1 casa para a frente(se houver outra peça em sua casa diagonal mais próxima a frente)."
elif peca == 2:
self.nomePeca = "Rei"
self.movimento = "Move-se para para qualquer direção limitando-se a uma casa por movimento."
elif peca == 3:
self.nomePeca = "Dama Rainha"
self.movimento = "Move-se diagonalmente sem limitação de casas."
elif peca == 4:
self.nomePeca = "Torre"
self.movimento = "Move-se para frente e para os lados sem limitação de casas."
elif peca == 5:
self.nomePeca = "Bispo"
self.movimento = "Move-se pelas diagonais sem limitação de casas."
elif peca == 6:
self.nomePeca = "Cavalo"
self.movimento = "Move-se fazendo um L indo duas casas horizontalmente o verticamente e depois indo uma casa em diagonal."
m = 0
while(m != 7):
print("-" * 10, "MOVIMENTOS DAS PEÇAS DE XADREZ", "-" * 10)
print("1 - PEÃO\n2 - REI\n3 - DAMA/RAINHA\n4 - TORRE\n5 - BISBO\n6 - Cavalo\n7- Encerrar sistema\n", "-" * 50)
m = int(input("Escolha a peça que você deseja saber o movimento:"))
if(m != 7):
print("Resposta >>>", pecaXadrez(m).movimento)
else:
print("Sistema encerrado")
Boa sorte para ti