Course de chevaux

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 024 fois - Téléchargée 26 fois

Contenu du snippet

Il s'agit d'un petit programme très simple en mode texte dont le but est de parier sur le cheval vainqueur. Pour ceci, il suffit de donner son numéro.

Pour l'explication du code, cf. commentaires.

Peut-être intéressant pour les débutants.

Commentaires, conseils et autres remarques sont extrèmement bienvenues! :-)

Source / Exemple :


#! /usr/bin/python
# -*- coding:Utf-8 -*-

from random import *

def note():
    #détermine une note entière au hasard entre 1 et 20
    return int(1+20*random())

class cheval:
    def __init__(self,numero=0,nom=None,vitesse=10,regularite=10):
        self.numero=numero
        self.nom=nom
        self.vitesse=vitesse
        self.regularite=regularite
        self.chance=random()
    def __repr__(self):
        return "Numéro        : %d\nNom du Cheval : %s\nVitesse       : %d\nRégularité    : %d\n" %(self.numero,self.nom,self.vitesse,self.regularite)
    def eval(self):
        return self.vitesse+self.regularite*self.chance
    def __cmp__(self,autre_cheval):
        # relation d'odre par évaluation (foncction eval croissante)
        if self.eval()>autre_cheval.eval():
            return -1
        else:
            return 1

noms=["Éclipse","Tonnerre","Night and Day","Éclair","Tornade","Furioso","Hand in Glove"]

if __name__=='__main__':
    while 1:
        #possibilité d'aller au delà de 7 en ajoutant des noms à 'noms'
        n=input("Combien de partants? (entre 1 et 7)")
        #tableau des concurrents
        chevaux=[]
        for i in range(n):
            chevaux.append(cheval(i+1,noms[i],note(),note()))
            print chevaux[i]
        choix=input("Sur quel cheval pariez vous?")
        #on trie le tableau par évaluation croissante (l'index d'un élément est alors égal au classement - 1)
        chevaux.sort()
        print "Ça y est, la course est finie. Voici le classement définitif.\n"
        for i in range(n):
            print chevaux[i],"Classement    : %d\n" %(i+1)
        #Victoire | Défaite
        if choix==chevaux[0].numero:
            print "Félicitations! Vous avez gagné!"
        elif choix==chevaux[1].numero:
            print "Dommage, c'est vraiment pas passé loin!"
        else:
            print "Raté, retentez votre chance!"
        continuer=raw_input("Voulez vous continuer? (O/n)")
        if continuer in ['n','N']:
        #Y en a marre!
            break
        else:
        #Une autre, une autre! ...
            continue

A voir également

Ajouter un commentaire

Commentaire

Messages postés
179
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
21 mai 2014
1
Pour rendre privé les membres d'une classe, il faut préfixé les nom de deux _
exemple :
self.__vitesse = vitesse

ainsi chevaux [0].__vitesse ne peut pas etre modifié ni lu.seule la classe peut acceder à cette propriété (self.__vitesse), ce qui évite le dopage du cheval avant le départ par exemple ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.