Last active
February 22, 2022 12:56
-
-
Save rauhmaru/97cb778378d4e67a2194437d354baed1 to your computer and use it in GitHub Desktop.
Jogo nim / nim game
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def computador_escolhe_jogada(n, m): | |
jogada = 1 | |
while jogada <= m: | |
if (n - jogada) % (m + 1) == 0: | |
if jogada == 1 or n == 1: | |
print("O computador tirou uma peça.") | |
return jogada | |
else: | |
print("O computador tirou {} peças.".format(jogada)) | |
return jogada | |
jogada += 1 | |
return m | |
def usuario_escolhe_jogada(n, m): | |
jogada = int(input("Quantas peças você vai tirar: ") or 0) | |
while jogada > n or jogada > m or jogada <= 0: | |
print("\nOops! Jogada inválida! Tente de novo.\n") | |
jogada = int(input("Quantas peças você vai tirar: ") or 0) | |
if jogada == 1: | |
print("\nVocê tirou uma peça.") | |
return jogada | |
else: | |
print("Você tirou {} peças.".format(jogada)) | |
return jogada | |
def msg_pecas_faltando(n): | |
if n == 0: | |
print("Fim do jogo! O computador ganhou!\n") | |
elif n == 1: | |
print("Agora restam apenas uma peça no tabuleiro.\n") | |
else: | |
print("Agora restam {} peças no tabuleiro.\n".format(n)) | |
def inicio(): | |
tipo_jogo = input("""Bem-vindo ao jogo de NIM! Escolha: | |
1 - Para jogar uma partida isolada | |
2 - Para jogar um campeonato """) | |
if tipo_jogo == "1": | |
print("Você escolheu uma partida isolada\n") | |
partida() | |
elif tipo_jogo == "2": | |
print("\nVocê escolheu um campeonato!\n") | |
rodada = 1 | |
while rodada < 4: | |
print("**** Rodada {} ****\n".format(rodada)) | |
partida() | |
msg_fim_campeonato(rodada) | |
rodada += 1 | |
else: | |
print("Alternativa inválida\n\n") | |
inicio() | |
def msg_fim_campeonato(rodada): | |
if rodada == 3: | |
print("\n**** Final do campeonato ! ****\nPlacar: Você 0 x 3 Computador") | |
def recebe_pecas(): | |
n = int(input("Quantas peças?: ") or 0) | |
while n <= 0: | |
print("A quantidade de peças deve ser maior que 1.\n") | |
n = int(input("Quantas peças?: ") or 0) | |
return n | |
def recebe_jogadas(n): | |
m = int(input("Limite de peças por jogada? ") or 0) | |
while m <= 0 or m > n: | |
print("A quantidade de jogadas não pode ser inferior a zero.\n") | |
m = int(input("Limite de peças por jogada? ") or 0) | |
return m | |
def usuario_comeca(n, m): | |
print("\nVocê começa!\n") | |
n -= usuario_escolhe_jogada(n, m) | |
msg_pecas_faltando(n) | |
return n | |
def computador_comeca(n, m): | |
print("\nComputador começa!\n") | |
n -= computador_escolhe_jogada(n, m) | |
msg_pecas_faltando(n) | |
return n | |
def partida(): | |
n = recebe_pecas() | |
m = recebe_jogadas(n) | |
rodada_1 = True | |
jogador_comecou = False | |
while n > 0: | |
if rodada_1: | |
if n % (m + 1) == 0: | |
n = usuario_comeca(n, m) | |
jogador_comecou = True | |
else: | |
n = computador_comeca(n, m) | |
jogador_comecou = False | |
rodada_1 = False | |
if jogador_comecou and n > 0: | |
n -= computador_escolhe_jogada(n, m) | |
msg_pecas_faltando(n) | |
jogador_comecou = False | |
elif not jogador_comecou and n > 0: | |
n -= usuario_escolhe_jogada(n, m) | |
msg_pecas_faltando(n) | |
jogador_comecou = True | |
if __name__ == "__main__": | |
inicio() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Desafio do curso de Introdução a Ciência da Computação com Python, parte 1
https://www.coursera.org/learn/ciencia-computacao-python-conceitos/programming/yEPxE/programa-completo-jogo-do-nim