Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Exercice][Novice]Le jeu du plus ou moins

26 août 2011 à 12:39:39

Bonjour, voici ma contribution:

import random
import time

def entree_verif(text,m):
    while True:
        try:
            i = int(input("\n{}".format(text)))
            if i not in range(1,m+1):
                raise ValueError
            return i
        except:
            print("\nEntrée invalide!")

def choix_niveau():
    for niv,mini,maxi in ((1,1,10),(2,1,100),(3,1,1000)):
        print("Niveau {}: Nombre entre {} et {}".format(niv,mini,maxi))
    return entree_verif("Votre choix:",3)

def nb_joueurs():
    return entree_verif("Nombre de joueurs entre 1 ou 2:",2)

def nb_mystere(nbj,m):
    if nbj == 1:
        return random.randint(1,m)
    else:
        return entree_verif("Nombre à trouver entre 1 et {}:".format(m),m)
    
def nb_recherche(nbm,m):
    c = 0
    while True:
        i = entree_verif("Nombre entre 1 et {}:".format(m),m)
        c += 1
        if i < nbm:
            print("\nC'est Plus!")
        elif i > nbm:
            print("\nC'est Moins!")
        else:
            print("\nBravo! Vous avez trouvé en {} coup(s).".format(c))
            time.sleep(2)
            break
        
run = "y"
while run == "y":
    print("\nJeu du Plus ou Moins\n")
    c = choix_niveau() # Niveaux
    lmax = 10**c # Limite max selon le niveau
    nbj = nb_joueurs() # Nb de joueurs
    nbm = nb_mystere(nbj,lmax) # Nb mystère selon le nb de joueurs
    nb_recherche(nbm,lmax) # Trouver le nb mystère
    run = input("\nSouhaitez vous rejouer (y ou n):")
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 18:26:20

Bonjour, je vous présente mon travaille pour cette exercice on peut bien sur faire ceci en beaucoup moins de ligne qu'ici mais n'étant pas un pro de python, je fais comme je peut . J'attend avec hâte vos commentaires/conseils pour améliorer ce code. Ah et aussi je sais que le dernier message de ce post date un peux mais bon c'est un exercices donc je ne pense pas qu'il devrait avoir de problèmes :

#!/usr/bin/python3
# -*- coding: Latin-1 -*

#-- Jeu du Plus ou Moin codé pour l'exercice du
#-- site du zéro proposé par Gryfalo par RayonGama
from random import randrange

def rejouer(rejoue):
	if rejoue == "oui":
		main()
	elif rejoue == "non":
		print "Au revoir!"
def jeu(max):
	nombreMystere = randrange(max)
	gagner = 0
	nombreCoup = 0
	rejoue = ""
	try:
		print "Vous devez trouvez un nombre compris entre 0 et " + str(max) + " !"
		while gagner == 0:
			nombreJoueur = int(input("Votre nombre -> "))
			if nombreJoueur == nombreMystere:
				print "Vous avez gagné en "+ str(nombreCoup) + " coups ! Bien joué"
				gagner = 1
				while rejoue != "oui" or rejoue != "non":
					rejoue = raw_input("Voulez-vous rejouez ? (Oui/Non)")
					if rejoue == "oui" or rejoue == "non":
						rejouer(rejoue)
					else:
						print "Vous n'avez pas rentré oui ou non "
			elif nombreJoueur > nombreMystere:
				print "Le nombre mystere est plus petit"
				nombreCoup = nombreCoup + 1
			elif nombreJoueur < nombreMystere:
				print "Le nombre mystere est plus grand"
				nombreCoup = nombreCoup + 1
			elif nombreJoueur > max:
				print "Vous devez trouvez un nombre compris entre 0 et " + max + " !"
	except ValueError:
		print "Vous n'avez pas rentré un chiffre"
		
def main():
	print"""Bienvenue dans le jeu Plus Ou Moins :
	Veuillez choisir un niveau de difficulté :
	1	:	Facile (Chiffre jusqu'a 50)
	2	:	Moyen  (Chiffre jusqu'a 100)
	3	:	Difficile (Chiffre jusqu'a 500)
	4	:	Expert    (Chiffre jusqu'a 2500)
	5	:	Diabolique (Chiffre jusqu'a 10000)"""
	try :
		choix = int(input("Votre choix --> "))
		if choix == 1 :
			max = 50
			jeu(max)
		elif choix == 2 :
			max = 100
			jeu(max)
		elif choix == 3 :
			max = 500
			jeu(max)
		elif choix == 4 :
			max = 2500
			jeu(max)
		elif choix == 5 :
			max = 10000
			jeu(max)
		else:
			print "Veuille choisi un chiffre s.v.p !"
	except:
		print "Veuillez rentrer un chiffre !"
main()


P.S : Si vous trouvez que j'ai un façon "chelou" voir bizarre de coder c'est parce que ... j'ai un façon bizarre de coder ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
8 décembre 2011 à 18:38:56

try :
		choix = int(input("Votre choix --> "))
		if choix == 1 :
			max = 50
			jeu(max)
		elif choix == 2 :
			max = 100
			jeu(max)
		elif choix == 3 :
			max = 500
			jeu(max)
		elif choix == 4 :
			max = 2500
			jeu(max)
		elif choix == 5 :
			max = 10000
			jeu(max)
		else:
			print "Veuille choisi un chiffre s.v.p !"
	except:
		print "Veuillez rentrer un chiffre !"


Tu peux améliorer cela en réfléchissant un peu,

J'ai regardé en diagonale, j'ai sûrement dû oublier certaines choses
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 18:57:48

Effectivement fred1599 quand j'ai codé cette partie du code j'ai voulu, faire un switch, honte à moi je me suis rappeler qu'il n'y avait pas de swtich en python (Quoi ça faisait longtemps que j'avais pas fais de python :) bref donc j'ai modifié ce bout de code comme ceci :

try :
		choix = int(input("Votre choix --> "))
		if choix == 1 or choix == 2 or choix == 3 or choix == 4 or choix == 5:
			if choix == 1 :
				max = 50
			elif choix == 2 :
				max = 100
			elif choix == 3 :
				max = 500
			elif choix == 4 :
				max = 2500
			elif choix == 5 :
				max = 10000
			jeu(max)
		else:
			print "Veuille choisi un chiffre s.v.p !"
	except:
		print "Veuillez rentrer un chiffre !"


Je pense que c'est comme ceci que tu vois une amélioration si non, pourrais tu être plus précis ? ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
8 décembre 2011 à 19:21:59

Non là c'est pire!

liste_choix = [50, 100, 500, 2500, 10000]
maxi = liste_choix[int(input("Votre choix --> "))+1]
jeu(maxi)


Maintenant à ton niveau, j'écarterais déjà tout ce qui est exceptions tant que ton code est pas optimisé, ensuite tu attaqueras les exceptions.

Bon courage!
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 21:06:20

Ne t'inquiète pas je connais a peux près tout les aspects de python (sauf les classes ou j'ai encore du mal) c'est juste que j'ai du mal à optimisée mais c'est vraie que ta correction est beaucoup mieux, je verrais ce que je peut améliorer demain ;)
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 21:35:36

Utilisez un tuple (1, 2) si vous ne comptez pas modifier cette « liste » plus tard. N'utilisez une list [1, 2] que si elle devra à un moment être altérée (ajout, suppression, modification).

if i not in range(1,m+1):
    raise ValueError

C'est tout à fait horrible. En faisant cela, tu créés une liste de <math>\(m+1\)</math> éléments en mémoire puis tu regardes si un élément est dedans ; tout cela est très coûteux alors qu'un simple if not 1 <= i <= m+1: suffit largement et ne coûte presque rien (en plus d'être mille fois plus compréhensible).
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 22:08:05

Citation : fred1599

Non là c'est pire!

liste_choix = [50, 100, 500, 2500, 10000]
maxi = liste_choix[int(input("Votre choix --> "))+1]
jeu(maxi)



Maintenant à ton niveau, j'écarterais déjà tout ce qui est exceptions tant que ton code est pas optimisé, ensuite tu attaqueras les exceptions.

Bon courage!



s'pas plutôt -1 ??

jeu([50, 100, 500, 2500, 10000][int(input("Votre choix --> "))-1])
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

Anonyme
8 décembre 2011 à 22:15:26

Citation

s'pas plutôt -1 ??



Ouech ;)
  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2011 à 19:06:13

Bonjour, après l'aide de fred1559 j'obtient ceci :

#!/usr/bin/python3
# -*- coding: Latin-1 -*

#-- Jeu du Plus ou Moin codé pour l'exercice du
#-- site du zéro proposé par Gryfalo par RayonGama
from random import randrange

def rejouer(rejoue):
	if rejoue == "oui":
		main()
	elif rejoue == "non":
		print "Au revoir!"
def jeu(max):
	nombreMystere = randrange(max)
	gagner = 0
	nombreCoup = 0
	rejoue = ""
	try:
		print "Vous devez trouvez un nombre compris entre 0 et " + str(max) + " !"
		while gagner == 0:
			nombreJoueur = int(input("Votre nombre -> "))
			if nombreJoueur == nombreMystere:
				print "Vous avez gagné en "+ str(nombreCoup) + " coups ! Bien joué"
				gagner = 1
				while rejoue != "oui" or rejoue != "non":
					rejoue = raw_input("Voulez-vous rejouez ? (Oui/Non)")
					if rejoue == "oui" or rejoue == "non":
						rejouer(rejoue)
					else:
						print "Vous n'avez pas rentré oui ou non "
			elif nombreJoueur > nombreMystere:
				print "Le nombre mystere est plus petit"
				nombreCoup = nombreCoup + 1
			elif nombreJoueur < nombreMystere:
				print "Le nombre mystere est plus grand"
				nombreCoup = nombreCoup + 1
			elif nombreJoueur > max:
				print "Vous devez trouvez un nombre compris entre 0 et " + max + " !"
	except:
		print "Vous n'avez pas rentré un chiffre"		
def main():
	print"""Bienvenue dans le jeu Plus Ou Moins :
	Veuillez choisir un niveau de difficulté :
	1	:	Facile (Chiffre jusqu'a 50)
	2	:	Moyen  (Chiffre jusqu'a 100)
	3	:	Difficile (Chiffre jusqu'a 500)
	4	:	Expert    (Chiffre jusqu'a 2500)
	5	:	Diabolique (Chiffre jusqu'a 10000)"""
	niveauListe = [50, 100, 500, 2500, 10000]
	try:
		max = niveauListe[int(input("Votre choix --> "))+1]
		jeu(max)
	except:
		print "Vous n'avez pas rentré un chiffre"
main()


J'ai essayé de l'améliorer mais je ne vois pas trop comment, donc si vous trouvez des endroits précis ou le code pourrais être optimisé merci de me le dire ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 décembre 2011 à 19:16:49

En réflechissant un peu tu peux nettement améliorer cela

def jeu(max):
	nombreMystere = randrange(max)
	gagner = 0
	nombreCoup = 0
	rejoue = ""
	try:
		print "Vous devez trouvez un nombre compris entre 0 et " + str(max) + " !"
		while gagner == 0:
			nombreJoueur = int(input("Votre nombre -> "))
			if nombreJoueur == nombreMystere:
				print "Vous avez gagné en "+ str(nombreCoup) + " coups ! Bien joué"
				gagner = 1
				while rejoue != "oui" or rejoue != "non":
					rejoue = raw_input("Voulez-vous rejouez ? (Oui/Non)")
					if rejoue == "oui" or rejoue == "non":
						rejouer(rejoue)
					else:
						print "Vous n'avez pas rentré oui ou non "
			elif nombreJoueur > nombreMystere:
				print "Le nombre mystere est plus petit"
				nombreCoup = nombreCoup + 1
			elif nombreJoueur < nombreMystere:
				print "Le nombre mystere est plus grand"
				nombreCoup = nombreCoup + 1
			elif nombreJoueur > max:
				print "Vous devez trouvez un nombre compris entre 0 et " + max + " !"
	except:
		print "Vous n'avez pas rentré un chiffre"
  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2011 à 20:24:31

Je vais profiter de ce topic pour faire passer un conseil aux débutants et autres codeurs amateurs de tout poil : en python, respectez la PEP8 !
Que stipule la PEP8 pour que ce soit si important ?

Déjà, important : « Use 4 spaces per indentation level. », c'est-à-dire « Utilisez quatre espaces par niveau d'indentation. »
Pourquoi donc ? Pour la lisibilité !
Et le « For really old code that you don't want to mess up, you can continue to use 8-space tabs. » ne me le sortez pâs pour dire « je peux mettre des tabs », parce que ce ne sont pas des codes véritablement vieux que vous postez sur ce topic.

Ensuite : « Never mix tabs and spaces. », donc « Ne mélangez jamais les espaces et les tabulations ». Point barre.

De plus : « Limit all lines to a maximum of 79 characters. », donc « Limitez la longueur de vos lignes à 79 caractères ». C'est mieux, franchement.

Ce sont les points que j'estime pes plus importants sur les codes que je vois sur ces topics, même ceux de programmeurs qui ne sont pas des débutants, tel fred1599, qui donne un très mauvais exemple aux débutants avec ça. Quand je jette un premier coup d'œil, ce que je vois, c'est :
« Il utilise des tabs ! Image utilisateurImage utilisateur ».

Si vous ne l'avez pas fait, vous devriez lire la PEP8, parce que les informations dedans ne se réfèrent pas qu'à ça, mais également à d'autres bonnes habitudes à prendre quand on programme en python.
  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2011 à 21:19:51

Citation : ordiclic

en python, respectez la PEP8 !




Je pense qu'il faut pas se focaliser sur ça, franchement les débutants ont d'autres chats à fouetter que de s'occuper de la PEP. J'ai vraiment rien vu sur le forum d'outrageusement scandaleux ni de vraiment récurrent en la matière. Même si je ne dis pas qu'occasionnellement il n'y ait pas de problème .

Au passage, Python manque d'un vrai beautifier comme C en a.

Concernant l'indentation, il me semble que Python lui même ne donne pas l'exemple. Par exemple dans IDLE ou dans une console Linux, les indentations ne sont pas régulières, cf :
>>> if True:
...     if True: # La console idente seule de 4
...             print "Faux" # la console indente maintenant en 8
... 
Faux
>>>







Citation : ordiclic


Ensuite : « Never mix tabs and spaces. », donc « Ne mélangez jamais les espaces et les tabulations ». Point barre.



OK mais il faut d'abord expliquer aux débutants la différence entre tabulation et espace et comment on règle son éditeur et comment agir devant un fichier tiers pour ne pas mélanger le style du fichier et son propre style.


Citation : ordiclic


De plus : « Limit all lines to a maximum of 79 characters. », donc « Limitez la longueur de vos lignes à 79 caractères ». C'est mieux, franchement.


Sans doute mais il faut expliquer au débutant les techniques de découpe les lignes : usage de parenthèses ou crochet, usage de chaînes adjacentes, usage de l'échappement \SPACE.


Citation : ordiclic

tel fred1599, qui donne un très mauvais exemple aux débutants avec ça.


Ah bon fred fait ça lui qui brandit souvent les PEP ?
  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2011 à 21:36:39

Effectivement, j'aurais pu apporter un peu de précisions. Mais ma signature devrait être suffisamment explicite pour expliquer pourquoi je ne décris pas ansolument tout, chaque détail de chaque truc. Expliquer, guider, c'est bien, prendre par la main, je m'y refuse.

fred1599 a, juste au-dessus de mon texte, un code indenté purement avec des tabultaions, je ne l'invente pas.

Je n'ai cité que les propos de la PEP8 à propos des tabulations et des espaces par ça m'a choqué, encore une fois. J'aurais pu tout citer, mais c'était inutile.

La PEP8 devrait être respectée dès la première ligne de code. C'est contraignant pour un débutant ? Il sera trop tard plus tard pour qu'il se corrige automatiquement.
De plus, le fait de respecter les conventions de suite évitera que d'autres débutants ne prennent en exemple des codes moches/mal indentés/mal nommés/mal formés/whatever de pas bon.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 décembre 2011 à 21:55:24

Citation

fred1599 a, juste au-dessus de mon texte, un code indenté purement avec des tabultaions, je ne l'invente pas.



Je n'indente jamais avec des tabulations, sûrement dû à un copier-coller.

Je pense que se sont simplement des copier coller du PO, réellement, le seul code que j'ai posté venant de moi est le suivant

liste_choix = [50, 100, 500, 2500, 10000]
maxi = liste_choix[int(input("Votre choix --> "))+1] # 52 caractères
jeu(maxi)


Qui lui n'est absolument pas indenté, au passage.

Citation

Ah bon fred fait ça lui qui brandit souvent les PEP ?



En effet, suffisamment pour se poser les bonnes questions, mais peut-être que ordiclic ne passe pas souvent sur le sdz et ne l'a pas remarqué? :p

  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2011 à 21:58:47

Je traîne plus rarement sur le forum python, en effet, mais j'avais déjà vu les messages de fred1599 et ça me surprenait.
Toutes mes plus plates excuses pour ce malentendu.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 décembre 2011 à 22:07:05

Il y a pas de soucis ;)
  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2011 à 22:42:31

Citation : fred1599

réellement, le seul code que j'ai posté venant de moi est le suivant



tout le reste, c-à-d les 3200 autres messages tous forum confondus, c'est du plagia ... :p
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

16 avril 2012 à 14:36:34

# -*- coding: cp1252 -*-
from random import randrange

nombre_mys = randrange(1,100)

nombre_tap = 0

print '==========PLUS ou MOINS grand !========== \n'

while nombre_tap != nombre_mys:
    
    nombre_tap = int(raw_input("Combien ? "))

    if nombre_tap < nombre_mys:
        print 'Trop petit ! \n'

    elif nombre_tap > nombre_mys:
        print 'Trop grand ! \n'

    else:
        print 'Bravo, Vous avez trouvez ! \n'

print 'Fini'
raw_input("Appuyez pour quitter..")


Bien ou bien ? :p
Je suis à mes première heures de prog' en python..
  • Partager sur Facebook
  • Partager sur Twitter
6 juin 2012 à 10:08:30

voici ma contribution :


# -*-coding:Latin-1 -*

from random import*

print("jeu du plus ou du moins")

rejouer = True
while rejouer:
        
        continuer = True
        hasard = randint(0,100)
        i=0

        print("entrez un nombre entre 0 et 100")

        while continuer:
                essai = -1
                print("entrez un nombre")
                try:
                        nb=int(input())
                        i+=1
                except ValueError:
                        print("vous n'avez pas entré un nombre valide ")
                        essai =-1
                        i+=1
                        continue
                if nb<0 or nb>100:
                        print ("ERREUR vous devez entrer un nombre entre 0 et 10")
                
                if nb == hasard:
                        print ("gagné")
                        print("le nombre secret était ", hasard, " vous l'avez trouvé en ",i," coups")
                        continuer = False
                elif nb < hasard:
                        print("c'est plus")
                else:
                        print("c'est moins")

        print("rejouer o/n")
        reponse = input()
        if reponse == "o" or reponse == "O":
                rejouer = True
        else:
                print("merci d'avoir jouer avec nous !!!!")
                rejouer = False
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
6 juin 2012 à 10:38:35

Personnellement 2 boucles while pour ce type de jeu, je trouve ça un peu abusé...
  • Partager sur Facebook
  • Partager sur Twitter
6 juin 2012 à 22:15:53

@ fred1599 :

comment faire pour ne pas mettre les deux "while" alors ?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
6 juin 2012 à 22:58:19

Euh... pas besoin d'écrire en rouge et en gros, suffit de demander poliment.

Voilà un code exemple, qui prend les erreurs de frappe, la possibilité de rejouer, et le compteur de coups.

# -*- coding:utf8 -*-

from random import randint

print("jeu du plus ou du moins\n")

compteur = 0
HASARD = randint(0,100)
REPONSE = ("o", "n")

while True:

    print("Coup n°{}".format(compteur+1))

    try:
        n = int(input("Entrer un nombre entre 0 et 100 : "))
    except (ValueError, TypeError):
        continue

    if n > HASARD: print("Plus petit"); compteur += 1
    elif n < HASARD: print("Plus grand"); compteur += 1
    else: 
        print("Gagné")
        print("Trouvé en {} coups".format(compteur))
        choix = input("Voulez-vous rejouer : ").lower()
        if choix not in REPONSE: raise ValueError("Mauvaise réponse")
        elif choix == "o": 
            compteur = 0
            HASARD = randint(0,100)
        else: break
  • Partager sur Facebook
  • Partager sur Twitter
7 juin 2012 à 10:40:36

@ fred1599 :

je ne voulais pas froisser ta susceptibilité en écrivant en rouge, j'ai juste voulu mettre un peu de
fun dans mon post. Je vois qu'il faut rester assez conformiste dans tout ce que l'on dit ou fait...
tant pis et désolé de t'avoir importuner par ma typographie !!!
(fait une recherche sur mon profil, je ne pense pas avoir été mal poli un jour ... regarde mes posts et fais toi une idée ...!!!)

de plus, merci pour ta réponse
au plaisir d'avoir des réponses de ta part qui a chaque fois m'ont beaucoup aider a comprendre mes
erreurs de débutant(que je suis toujours !!!)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
7 juin 2012 à 11:23:20

Citation

je ne voulais pas froisser ta susceptibilité en écrivant en rouge, j'ai juste voulu mettre un peu de
fun dans mon post. Je vois qu'il faut rester assez conformiste dans tout ce que l'on dit ou fait...
tant pis et désolé de t'avoir importuner par ma typographie !!!
(fait une recherche sur mon profil, je ne pense pas avoir été mal poli un jour ... regarde mes posts et fais toi une idée ...!!!)

de plus, merci pour ta réponse
au plaisir d'avoir des réponses de ta part qui a chaque fois m'ont beaucoup aider a comprendre mes
erreurs de débutant(que je suis toujours !!!)



Il m'en faut beaucoup plus pour me froisser :D

Simplement tu dois savoir que lorsqu'on écrit sur un forum, on essaie de donner un sens à chaque style d'impression.

Ecrire en grand, pour moi (et d'autres) c'est crier, et le rouge pour rendre ça important ou tenir une attention particulière.

Bref il y a pas de soucis.
  • Partager sur Facebook
  • Partager sur Twitter
10 février 2013 à 11:54:52

J'ai aussi eus l'occasion de créer mon programme du jeu plus ou moins, je débute en python mais en tout cas, je trouve mon code pas trop mal :

import os
from random import randrange

nb_secret = randrange(1,100)
nb_prop = 0
conteur = 0

print("Bienvenue dans le jeu du plus ou du moins !")
while nb_secret != nb_prop:
    nb_prop = input("Trouvez le nombre secret :")
    nb_prop = nb_prop.strip()
    try:
        nb_prop = int(nb_prop)
    except :
        print("Une erreur a été détecté !")
        continue
    if nb_prop == nb_secret :
        print("Vous avez gagnez !!!!")
        break
    elif nb_prop > nb_secret :
        print("Ce nombre est trop grand")
        conteur +=1
    elif nb_prop < nb_secret :
        print("Ce nombre est trop petit")
        conteur += 1
    conteur_2 = 10 - conteur
    print("Il vous reste {} essaie(s).".format(conteur_2))
    if conteur == 0:
        print("Vous avez perdu !!!")
          

os.system("pause")



  • Partager sur Facebook
  • Partager sur Twitter
21 février 2013 à 11:55:57

Bonjour,

Je débute en python mais j'ai voulu me risquer à faire ce jeu.

# -*- coding: cp1252 -*-
from random import randrange
nombrepropose=0
DEBUT
nombremystere = randrange(1, 100)
print("\t\t\t\t=== Plus ou moins === \n\n")
print("niveau 1:Facil 1-100")
while nombrepropose != nombremystere:
    print("Quel est le nombre ?")
    nombrepropose = input()
    nombrepropose = int(nombrepropose)
    if nombrepropose < nombremystere:
        print("Plus grand !")
    elif nombrepropose > nombremystere:
        print("Plus petit !")
    else:
        print("Bien joué")
        print("Veux tu passer au niveau 2 ? Press 1 for YES")
        suite1 = input()
        if suite1==1:
            nombremystere = randrange(1, 1000)
            print("niveau 2:Moyen 1-1000")
            while nombrepropose != nombremystere:
                print("Quel est le nombre ?")
                nombrepropose = input()
                nombrepropose = int(nombrepropose)
                if nombrepropose < nombremystere:
                    print("Plus grand !")
                elif nombrepropose > nombremystere:
                    print("Plus petit !")
                else:
                    print("Bien joué")
                    print("Veux tu passer au niveau 3 ? Press 1 for YES")
                    suite2 = input()
                    if suite2==1:
                        nombremystere = randrange(1, 10000)
                        print("niveau 3:Difficile 1-10000")
                        while nombrepropose != nombremystere:
                            print("Quel est le nombre ?")
                            nombrepropose = input()
                            nombrepropose = int(nombrepropose)
                            if nombrepropose < nombremystere:
                                print("Plus grand !")
                            elif nombrepropose > nombremystere:
                                print("Plus petit !")
                            else:
                                print ("Bien joué")
                                print("Veux tu passer au niveau 4 ? Press 1 for YES")
                                suite3 = input()
                                if suite3==1:
                                    nombremystere = randrange(1, 100000)
                                    print("niveau 4:Hardcore 1-100000")
                                    while nombrepropose != nombremystere:
                                        print("Quel est le nombre ?")
                                        nombrepropose = input()
                                        nombrepropose = int(nombrepropose)
                                        if nombrepropose < nombremystere:
                                            print("Plus grand !")
                                        elif nombrepropose > nombremystere:
                                            print("Plus petit !")
                                        else:
                                            print ("Bien joué")
                                            print("Veux tu passer au niveau 5 ? Press 1 for YES")
                                            suite4 = input()
                                            if suite4==1:
                                                nombremystere = randrange(1, 1000000)
                                                print("niveau 5:WHAT THE HELL ? 1-1000000")
                                                while nombrepropose != nombremystere:
                                                    print("Quel est le nombre ?")
                                                    nombrepropose = input()
                                                    nombrepropose = int(nombrepropose)
                                                    if nombrepropose < nombremystere:
                                                        print("Plus grand !")
                                                    elif nombrepropose > nombremystere:
                                                        print("Plus petit !")
                                                    else:
                                                        print ("Bien joué, tu as fini les 5 niveaux !")
                                                        print ("voulez vous rejouer ? Press 1 for YES")
                                                        replay = input ()
                                                        if replay==1:



Il fonctionne mais ne plaît pas vraiment :

-Pourriez-vous me dire comment utiliser la commande GOTO dans python ?

-Comment pourrais-je le mettre dans une autre fenêtre que le "python shell" ?

-Puis-je insérer un système de score qui commence d'un nombre et diminue d'un certain nombre à chaque entrée du joueur ?

Merci d'avance :)

-
Edité par Mathias Clabots 21 février 2013 à 11:56:45

  • Partager sur Facebook
  • Partager sur Twitter
21 février 2013 à 12:03:37

Pour commencer, je pense qu'utiliser goto est une tres tres (tres) mauvaise idee (quand bien meme elle existait en python, ce qui n'est pas le cas). Voila qui t'en convaincra.

Pour ce qui est du score, pourquoi ne pas declarer une variable score que tu decrementerais a chaque fois?

Bonne journee!

-
Edité par stackOverflow 21 février 2013 à 12:04:53

  • Partager sur Facebook
  • Partager sur Twitter
21 février 2013 à 12:21:41

Mathias, première chose que j'ai remarqué : c'est le code un peu trop tordu, j'ai fait un code similaire au tiens sauf qu'on choisi directement la difficultés et que c'est en fonction tout simplement et ça rends le code très facilement modifiable et je peu rajouter des niveaux de difficultés très facilement avec ce code mais je conçois qu'il n'est pas parfait mais convient tout à fait pour un jeu du "Plus ou du moins"

 Jeu du plus ou du moins

# Aleatoire
from random import randrange

print("Bienvenue dans le Jeu du plus ou du moins.")

def jeu_plus_ou_moins (nombre_secret, nb_essaies): # Jeu en soi
    nb_prop = 0
    while nb_prop != nombre_secret:
        nb_prop = input("Saissisez un nombre : ")
        try: # Le nombre est convertie en entier
            nb_prop = int(nb_prop)
        except : # Si on ne peut pas, la boucle recommence
            print("Ce n'est pas un nombre.")
            continue
        if nb_prop <= 0 :
            print("Saissisez un nombre supérieur à 0 ")
            continue
            
        if nb_prop == nombre_secret : # nombre trouvé
            print("Vous avez trouvé le nombre secret !")
            break
        
        elif nb_prop < nombre_secret : # trop petit
            print("Le nombre saisie est trop petit.")
            nb_essaies -= 1
            
        elif nb_prop > nombre_secret : # trop grand
            print("Le nombre saisie est trop grand.")
            nb_essaies -= 1
            
        if nb_essaies <= 0:
            print("Vous n'avez pus d'essaies !")
            break
        
        print("Il vous reste {} essaies.".format(nb_essaies))

def difficultee (niveau): # Difficutee en fonction
    if niveau == 1:
        jeu_plus_ou_moins(randrange(1,51), 20) # facile
        
    elif niveau == 2:
        jeu_plus_ou_moins(randrange(1,101), 15) # moyen
        
    elif niveau == 3:
        jeu_plus_ou_moins(randrange(1,201), 10) # difficile
        
    elif niveau == 4 :
        jeu_plus_ou_moins(randrange(1,501), 7) # hardcore
    
        
    
i = 0
# Choix de la difficulté : Facile, Moyen, Difficile, Hardcore
while i == 0 :
    diff = input("Quel difficultée ? Facile/moyen/difficile/hardcore : ")
    diff = diff.strip().capitalize()
    if diff == "Facile":
        difficultee (1)
        
    elif diff == "Moyen":
        difficultee (2)
        
    elif diff == "Difficile" :
        difficultee(3)
        
    elif diff == "Hardcore":
        difficultee(4)
        
    else:
        print("Choissisez une difficultée valide !")
        continue
    
    while True : # Quitter le programme
        quitter = input("Voulez-vous quitter le programme : ")
        quitter = quitter.strip().lower()
        if quitter == "oui" :
            print("Vous quittez le jeu.")
            i = 1
            break
        else :
            print("Vous restez sur le jeu.")
            break

quitte = input("Appuyez sur ENTREE pour quitter...")

Je te laisse apprécier le programme.

  • Partager sur Facebook
  • Partager sur Twitter