-
-
Save benevidesh/d08965aa89d02c5b139635f0bb851368 to your computer and use it in GitHub Desktop.
def computador_escolhe_jogada(n, m): | |
computadorRemove = 1 | |
while computadorRemove != m: | |
if (n - computadorRemove) % (m+1) == 0: | |
return computadorRemove | |
else: | |
computadorRemove += 1 | |
return computadorRemove | |
def usuario_escolhe_jogada(n, m): | |
jogadaValida = False | |
while not jogadaValida: | |
jogadorRemove = int(input('Quantas peças você vai tirar? ')) | |
if jogadorRemove > m or jogadorRemove < 1: | |
print() | |
print('Oops! Jogada inválida! Tente de novo.') | |
print() | |
else: | |
jogadaValida = True | |
return jogadorRemove | |
def campeonato(): | |
numeroRodada = 1 | |
while numeroRodada <= 3: | |
print() | |
print('**** Rodada', numeroRodada, '****') | |
print() | |
partida() | |
numeroRodada += 1 | |
print() | |
print('Placar: Você 0 X 3 Computador') | |
def partida(): | |
n = int(input('Quantas peças? ')) | |
m = int(input('Limite de peças por jogada? ')) | |
vezDoPC = False | |
if n % (m+1) == 0: | |
print() | |
print('Voce começa!') | |
else: | |
print() | |
print('Computador começa!') | |
vezDoPC = True | |
while n > 0: | |
if vezDoPC: | |
computadorRemove = computador_escolhe_jogada(n, m) | |
n = n - computadorRemove | |
if computadorRemove == 1: | |
print() | |
print('O computador tirou uma peça') | |
else: | |
print() | |
print('O computador tirou', computadorRemove, 'peças') | |
vezDoPC = False | |
else: | |
jogadorRemove = usuario_escolhe_jogada(n, m) | |
n = n - jogadorRemove | |
if jogadorRemove == 1: | |
print() | |
print('Você tirou uma peça') | |
else: | |
print() | |
print('Você tirou', jogadorRemove, 'peças') | |
vezDoPC = True | |
if n == 1: | |
print('Agora resta apenas uma peça no tabuleiro.') | |
print() | |
else: | |
if n != 0: | |
print('Agora restam,', n, 'peças no tabuleiro.') | |
print() | |
print('Fim do jogo! O computador ganhou!') | |
print('Bem-vindo ao jogo do NIM! Escolha:') | |
print() | |
print('1 - para jogar uma partida isolada') | |
tipoDePartida = int(input('2 - para jogar um campeonato ')) | |
if tipoDePartida == 2: | |
print() | |
print('Voce escolheu um campeonato!') | |
print() | |
campeonato() | |
else: | |
if tipoDePartida == 1: | |
print() | |
partida() |
Obrigado. Estava com dificuldade.
Ainda não consegui fazer o jogo estou com muita dificuldade, obrigado pela ajuda
Muito obrigado pela sua ajuda. Abs.
Muito bom, eu resolvi esse problema para o curso da USP mas estava querendo ver se havia maneira mais sofisticada de escrever o código do jogo Nim. A maior parte da sua solução ficou muito melhor do que a minha.
Segue a parte da minha solução que achei mais eficiênte do que a sua. Estou divulgando na intenção de promover debate e mostrar outras soluções. Espero que seja útil.
Parabéns pela iniciativa, assim como eu acredito que muitas pessoas estavam com dificuldades para iniciar. obrigado.
Pessoal segue o script do jogo nim
Obs.: Apenas escrevi cada etapa do código e acrescentei uma condicional, mas lembrando que eu não teria conseguido entender se não fosse o código já disponibilizado acima pelo nosso amigo. Obrigado a todos.
jogo nim!
`#Função retornará o resto da divisão entre n e m
def computador_escolhe_jogada(n, m):
computadorRemove = 1
while computadorRemove != m:
if (n - computadorRemove) % (m+1) == 0:
return computadorRemove
else:
computadorRemove += 1
return computadorRemove
----------------------------- / / -----------------------------
#Input do usuário para informar a qtde de números a jogar
#Verifica se a qtde informada é menor que a variável 'm' e se é maior que 1
def usuario_escolhe_jogada(n, m):
jogadaValida = False
while not jogadaValida:
jogadorRemove = int(input('Quantas peças você vai tirar? '))
if jogadorRemove > m or jogadorRemove < 1:
print('Oops! Jogada inválida! Tente de novo.')
else:
jogadaValida = True
return jogadorRemove
----------------------------- / / -----------------------------
#Função de campeonato com 3 rodadas
#Entra na função partida, executa e retorna contabilizando a partida dentro do campeonato
def campeonato():
numeroRodada = 1
while numeroRodada <= 3:
print('**** Rodada', numeroRodada, '****')
partida()
numeroRodada += 1
print('Placar: Você 0 X 3 Computador')
----------------------------- / / -----------------------------
#Input das variáveis 'n' e 'm'
#Se a variável 'n' for multipla da variável 'm' o usuário começa o jogo
#Se a variável 'n' não for multipla da variável 'm' o computador começa o jogo
#Função while executa até a variável 'n' ser maior que 0
def partida():
n = int(input('Quantas peças? '))
m = int(input('Limite de peças por jogada? '))
vezDoPC = False
if n % (m+1) == 0:
print('Voce começa!')
else:
print('Computador começa!')
vezDoPC = True
while n > 0:
if vezDoPC:
computadorRemove = computador_escolhe_jogada(n, m)
n -= computadorRemove
if computadorRemove == 1:
print('O computador tirou uma peça')
else:
print('O computador tirou', computadorRemove, 'peças')
vezDoPC = False
else:
jogadorRemove = usuario_escolhe_jogada(n, m)
n -= jogadorRemove
if jogadorRemove == 1:
print('Você tirou uma peça')
else:
print('Você tirou', jogadorRemove, 'peças')
vezDoPC = True
if n == 1:
print('Agora resta apenas uma peça no tabuleiro.')
else:
if n != 0:
print('Agora restam,', n, 'peças no tabuleiro.')
print('Fim do jogo! O computador ganhou!')
----------------------------- / / -----------------------------
#Variável inicial para chamar o jogo
#Escolher entre partida única e campeonato
#Diferente das opções disponíveis informar o erro
print('Bem-vindo ao jogo do NIM! Escolha:')
print('1 - para jogar uma partida isolada ')
tipoDePartida = int(input('2 - para jogar uma campeonato '))
if tipoDePartida == 1:
print('Voce escolheu uma partida isolada!')
partida()
if tipoDePartida == 2:
print('Voce escolheu um campeonato!')
campeonato()
if tipoDePartida != 1 and tipoDePartida != 2:
print('Opção inválida, escolha entre 1 e 2')
----------------------------- / / -----------------------------
`
`
Obrigada por compartilhar, me ajudou com as dúvidas!
Muito bom! Parabéns meu caro
Muito Bom, código limpo e bem desenvolvido. Te agradeço por compartilhar seu conhecimento.
muito bom!