Skip to content

Instantly share code, notes, and snippets.

@rauhmaru
Last active February 22, 2022 12:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rauhmaru/97cb778378d4e67a2194437d354baed1 to your computer and use it in GitHub Desktop.
Save rauhmaru/97cb778378d4e67a2194437d354baed1 to your computer and use it in GitHub Desktop.
Jogo nim / nim game
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()
@rauhmaru
Copy link
Author

Desafio do curso de Introdução a Ciência da Computação com Python, parte 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment