""" AO PREENCHER ESSE CABEÇALHO COM O MEU NOME E O MEU NÚMERO USP, DECLARO QUE SOU O ÚNICO AUTOR E RESPONSÁVEL POR ESSE PROGRAMA. TODAS AS PARTES ORIGINAIS DESSE EXERCÍCIO PROGRAMA (EP) FORAM DESENVOLVIDAS E IMPLEMENTADAS POR MIM SEGUINDO AS INSTRUÇÕES DESSE EP E QUE PORTANTO NÃO CONSTITUEM DESONESTIDADE ACADÊMICA OU PLÁGIO. DECLARO TAMBÉM QUE SOU RESPONSÁVEL POR TODAS AS CÓPIAS DESSE PROGRAMA E QUE EU NÃO DISTRIBUI OU FACILITEI A SUA DISTRIBUIÇÃO. ESTOU CIENTE QUE OS CASOS DE PLÁGIO E DESONESTIDADE ACADÊMICA SERÃO TRATADOS SEGUNDO OS CRITÉRIOS DIVULGADOS NA PÁGINA DA DISCIPLINA. ENTENDO QUE EPS SEM ASSINATURA NÃO SERÃO CORRIGIDOS E, AINDA ASSIM, PODERÃO SER PUNIDOS POR DESONESTIDADE ACADÊMICA. Nome : João Pedro Turri NUSP : 6805993 Turma: BCC 2018 Prof.: Marcelo """ from random import randint def distribuicao(N): Dist = randint(0,9) fator = 10 for i in range(N-1): Dist = Dist + randint(0,9)*fator fator = fator * 10 assert Dist in range(10**N) return Dist def jogada(N,jogador,lanceanterior): """Processa e devolve uma jogada do jogador ("humano" ou "computador"), que deve estar entre 0 e N-1 e não pode ser igual a lanceanterior. """ if jogador == "humano": lance = int(input("É a sua vez de jogar: ")) while lance == lanceanterior or lance > elementos -1: if lance == lanceanterior: print("A mesa já escolheu esse número.") lance = int(input("Por favor digite outro número: ")) else: lance = randint(0,N-1) while lance == lanceanterior: lance = randint(0,N-1) assert lance in range(N) and lance != lanceanterior return lance def sorteia(N,dist): """Devolve o resultado de um sorteio enviesado dentre os inteiros de 0 a N-1 de acordo com a distribuição dist. """ soma = 0 soma2 = 0 dist2 = dist sorteio = 0 for j in range(N-1): soma = soma + dist2 % 10 dist2 = dist2 // 10 S = randint(0,soma-1) while soma2 < S: soma2 = soma2 + dist % 10 dist = dist // 10 sorteio = sorteio + 1 assert sorteio in range(N) return sorteio # Inicializar as variáveis que regulam o fluxo de jogo rolando = 1 rodada = 0 scoreHUM = 0 scoreAI = 0 # Pedir ao jogador a quantidade de elementos print("Bem-vind@ à roleta maluca!") elementos = int(input("Por favor digite a quantidade de elementos da roleta (entre 2 e 100): ")) print("A roleta possui os números 0..."+str(elementos -1),"\nAguarde enquanto envieso a roleta... ") dist = distribuicao(elementos) # Loop principal - roda até o jogador dizer chega while rolando == 1: rodada += 1 print("\nRodada",rodada) print("Escolhendo jogador inicial...") sorteioTurno = randint(0,1) if sorteioTurno: # Humano escolhe primeiro apostaHUM = jogada(elementos,"humano",-1) print("É a vez da mesa jogar.") apostaAI = jogada(elementos,"computador",apostaHUM) print("A mesa escolhe o número", apostaAI) else: # AI joga primeiro print("É a vez da mesa jogar.") apostaAI = jogada(elementos,"computador",-1) print("A mesa escolhe o número", apostaAI) apostaHUM = jogada(elementos, "humano", apostaAI) # Sortear o número e calcular a distância de cada jogador a ele roleta = sorteia(elementos,dist) print("Sorteio =",str(roleta)+".") deltaHUM = min(((apostaHUM - roleta) % (elementos)),((roleta - apostaHUM) % (elementos))) deltaAI = min(((apostaAI - roleta) % (elementos)),((roleta - apostaAI) % (elementos))) # Atualizar placar if deltaAI == deltaHUM or deltaHUM < deltaAI: print("Você ganhou!") if deltaHUM == 0: scoreAI -= 100 scoreHUM += 100 else: scoreAI -= 10 scoreHUM += 10 else: print("A mesa ganhou!") if deltaAI == 0: scoreAI += 100 scoreHUM -= 100 else: scoreAI += 10 scoreHUM -= 10 print("Pontuação: Jogador =",str(scoreHUM)+",","Mesa =",scoreAI) fimdejogo = input("Deseja continuar jogando (S/N): ") if fimdejogo != "S": if scoreHUM >= 0: print("Você deve receber", scoreHUM, "da mesa!") else: print("Você deve pagar", scoreHUM * -1, "para a mesa!") print("Obrigado por jogar a roleta maluca!") rolando=0