my-psb/openclassrooms-trainings/lonescripts/zcasino.py

136 lines
4.0 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Cours OC/python 3 - TP: tous au ZCasino
[TP 1.9: zcasino](https://openclassrooms.com/courses/apprenez-a-programmer-en-python/tp-tous-au-zcasino)
Un petit jeu de roulette très simplifie
=======================================
Le joueur mise sur un numero compris entre 0 et 49
En choisissant son numero, il mise
Les numeros pairs sont noire, les impairs sont de rouge
Quand la roulette s'arrete:
-Si numero gagnant: gain = 3x la mise
-Si meme couleur: gain = 50% de la mise
-Sinon la mise est perdue
"""
import math
import random
import os
#############
# VARIABLES #
#############
jeu_continu = True
credit = 1000
filename = ".highscore"
old_highscore = -1
#########
# TEXTE #
#########
curr_symb = ""
disclamer = "Bienvenu à la roulette, vous avez un crédit de " + \
str(credit) + curr_symb + ": bonne partie."
err_plage = "Il faut saisir un nombre dans la plage indiquée! "
err_saisie = "Il faut saisir un nombre! "
msg_resultat = "\nLa bille s'arrête sur le nunéro: "
msg_numero = "\nVotre nombre est gagnant! Votre gain: "
msg_couleur = "\nVotre couleur est gagnante! Votre gain: "
msg_perdu = "\nVous perdez votre mise!"
msg_continue = "Pour arrêter la partie, tapez « n »: "
msg_solde = "Votre solde : "
msg_arret = "Vous avez décidé d'arrêter la partie avec un solde de: "
msg_final = "Votre solde à atteind 0€: la partie s'arrête"
msg_no_score = "Pas d'ancien score."
msg_best_score = "Bravo, vous battez le précédent record de gain qui était: "
msg_bad_score = "Le record de gain enregistré était: "
################
# DÉBUT DU JEU #
################
print(disclamer)
while jeu_continu is True:
# Saisie & validation du choix
choix_valeur = 50
while choix_valeur >= 50 or choix_valeur < 0:
choix_valeur = input("Quel numéro choisissez vous (0-49)?")
try:
choix_valeur = int(choix_valeur)
except ValueError:
print(err_saisie)
choix_valeur = 50
continue
if choix_valeur >= 50 or choix_valeur < 0:
print(err_plage)
# Saisie & validation de la mise
mise = 0
while mise <= 0 or mise > credit:
mise = input("Quelle est votre mise (1-" + str(credit) + "?)")
try:
mise = int(mise)
except ValueError:
print(err_saisie)
mise = 0
continue
if mise <= 0 or mise > credit:
print(err_plage)
result_valeur = random.randrange(50) # Roulette
# Comparaison
if result_valeur == choix_valeur:
gain = mise * 3
msg = msg_resultat + str(result_valeur) + msg_numero + \
str(gain) + curr_symb
elif result_valeur % 2 == choix_valeur % 2:
gain = math.ceil(mise / 2)
msg = msg_resultat + str(result_valeur) + msg_couleur + \
str(gain) + curr_symb
else:
gain = - mise
msg = msg_resultat + str(result_valeur) + msg_perdu
credit = credit + gain
print(msg) # Affichage de fin de tour
if credit > 0: # affiche credit
print(msg_solde + str(credit))
ask_continue = str(input(msg_continue)) # demande de continuer
if ask_continue == "n": # Arret demandé par le joueur
jeu_continu = False
msg_final = (msg_arret + str(credit) + curr_symb)
else:
jeu_continu = False # fin du jeu
if os.path.isfile(filename) is True: # On recupere le highscore
with open(filename, "r") as highscore:
old_highscore = int(highscore.read())
if old_highscore == -1: # Pas encore de partie gagnante
msg_score = msg_no_score
elif credit > old_highscore and old_highscore != -1: # Highscore battu
msg_score = msg_best_score + str(old_highscore) + curr_symb
else:
msg_score = msg_bad_score + str(old_highscore) + curr_symb
if (credit > 0 and old_highscore == -1) or credit > old_highscore:
with open(filename, "w") as highscore:
highscore.write(str(credit))
print(msg_final) # Affichage du message de fin de partie
print(msg_score) # Affichage du score/highscore