Ajuda com o jogo da velha !!

226 views
Skip to first unread message

Eric Cartman

unread,
May 16, 2016, 8:51:32 PM5/16/16
to Python Brasil
Galera, estou fazendo um jogo da velha em Python, mas estou com um problema na hora de mostrar o ganhador. Eu deixo o ganhador dentro do while, e ele fica repetindo a pessoa que ganhou, eu tiro, ele da erro. O código ainda não está pronto, mas esse erro é o que mais quero resolver no momento.

Michell Stuttgart Faria

unread,
May 16, 2016, 9:36:48 PM5/16/16
to python...@googlegroups.com
Eric, não testei seu código, mas acho que o que está acontecendo é o seguinte: 

​L
ogo após você imprimir o nome do jogador na tela, você usa o break, só que esse break está saindo do "
for i in range(100)" e não do
​"
while
​​
sair
== "N
​""​
, por isso continua repetindo. O que vc pode fazer é adicionar
​ 
sair
= "
​S​
​"
, antes do break
. Desse modo, quando o seu algoritmo mostrar o vencedor e executar o break (ele vai sar do for), o while não será repetido
​.

if((matriz[0] == matriz[1] == matriz[2] == 'X'),
            (matriz[3] == matriz[4] == matriz[5] == 'X'),
            (matriz[6] == matriz[7] == matriz[8] == 'X')):
    print(nomeUm+" foi o ganhador !!")
​ 
sair = "S"​
   
​ ​
break
else:
   
​ ​
velha += 1

Outra dica, que pode facilitar a manutenção do seu programa é o seguinte: a variavel "sair" pode ser do tipo boolean, se for False continua no while, se for True ele sai do while. Normalmente em jogos ela é usada dessa maneira. :)

sair= False
 
while not sair:
   executa loop do jogo

--
Michell Stuttgart Faria 
Graduado em Engenharia da Computação
Universidade Federal de Itajubá - UNIFEI


Linux - Junior Polegato

unread,
May 17, 2016, 10:23:39 AM5/17/16
to python...@googlegroups.com
Em 14-05-2016 04:28, Eric Cartman escreveu:
Galera, estou fazendo um jogo da velha em Python, mas estou com um problema na hora de mostrar o ganhador. Eu deixo o ganhador dentro do while, e ele fica repetindo a pessoa que ganhou, eu tiro, ele da erro. O código ainda não está pronto, mas esse erro é o que mais quero resolver no momento.

Olá!

        Batendo o olho no código, as últimas linhas estão com endentação errada, isto é, faltando, pois deveriam estar dentro do while.

        Outra coisa, troque "op = ..." por "sair = ...", apague as linhas abaixo isso, pois o while vai se encarrega de sair se responder "N", colocando portanto a matriz com valores iniciais "nulos" logo abaixo do while e não antes dele. Também seria interessante fazer range(9), pois pode-se ter no máximo 9 jogadas.

        Por fim, sobre jogar novamente, ficaria mais sensato assim:

sair = ''
while sair not in ('N', 'S'):
    sair = input('Deseja jogar novamente [S/N]? ').upper()

--

[]'s

Junior Polegato
Reply all
Reply to author
Forward
0 new messages