Tutorial/jeu "guess the number"

Soyez le premier à donner votre avis sur cette source.

Vue 7 647 fois - Téléchargée 198 fois

Description

Cette source est un petit tutorial illustrant le (plus ?) célèbre jeu en programmation à savoir : "deviner le nombre généré aléatoirement par l'ordinateur"

- nombre d'essais limité (paramètrable)
- jeu personalisé (entrée du pseudo)
- affichage du nombre de tentatives à la fin (si gagné)
- affichage de la réponse à la fin (si perdu)
- code triche pour obtenir la réponse
- jeu clair (espacé)
- source très commentée
- texte corrigé et revu au niveau des caractères spéciaux
- fichier zip (jeu.zip) : tutojeu.cpp + source.doc (zip en 8Ko)
- (spécial) transformation/mutation en source exclusivement C++

Source / Exemple :


// Cette source est un petit tutorial illustrant le (plus ?) célèbre jeu en programmation à savoir : "deviner le nombre généré aléatoirement par l'ordinateur"

// par neo_00110010101@hotmail.com

// Débuté le 05/06/04
// Terminé le 05/06/04
// MAJ du 17/06/04

// Il va falloir trouver un nombre généré aléatoirement par l'ordinateur (de 1 à 100)

#include <iostream>
#include <ctime>
#include <string>
using namespace std;

int main()
{ 
    // EFFACEMENT DU TEXTE
	
	system("cls");														// ainsi, tout s'effacera à chaque nouveau jeu
	
	// INITIALISATION DES VARIABLES
	
	srand(time(NULL));													// initialisation du générateur de nombre
	int guess = 0;														// initialisation de la variable "guess"
    int reponse = (rand() % 100) + 1;									// génération du nombre aléatoire de 1 à 100 ("reponse")
    int essais = 0;														// initialisation de la variable "essais"
    int choix = 0;														// initialisation de la variable "choix"
	string pseudo;														// initialisation de la variable "pseudo"

    // AFFICHAGE TEXTE
	
	cout << "Tutorial jeu par neo_00110010101 -Guess the number-\n";

	// INPUT DU PSEUDO DU JOUEUR
	
	cout << "Entre ton pseudo :";										// demande du pseudo
	cin >> pseudo;														// enregistrement du pseudo dans "pseudo"
	cout << "Bienvenue " << pseudo << ", es-tu pr\210t ?\n";			// utilisation du pseudo dans une phrase

	// DEMANDE NOMBRE ESSAIS
	
	cout << "Combien d'essais possibles ?\n";							// demande combien d'essais le joueur pourra bénéficier
	cin >> essais;														// enregistre la réponse dans la variable "essais"

    // LE JEU ET SON DEROULEMENT
	
	for(guess = 1; guess <= essais; guess++)							// boucle pour que le jeu ne se termine 
																		// pas avant que la partie soit terminée
	{

			cout << "\nEssai num\202ro " << guess;						// affichage du numéro de l'essai présent
			cout << "\nTon choix : " << flush;							// demande du nombre à trouver
			cin >> choix;												// enregistrement de la proposition dans "choix"

			if(choix > reponse) cout << "Plus petit, essaie encore !\n";// si "choix" est plus grand que "reponse"
			if(choix < reponse) cout << "Plus grand, essaie encore !\n";// si "choix" est plus petit que "reponse"
			// partie triche
			if(choix == 26154859)										// si on tape "26154859" le programme affiche la réponse !
			{
				cout << "Sale petit tricheur ^^\n";
				cout << reponse;
			}
			if(choix == reponse)										// si "choix" est égal à "reponse"
			{
				cout << "\nBravo, " << pseudo << " tu as r\202ussi en " << guess << " essais !\n";
																		// la phrase de la victoire ^_^
																		// avec affichage du nombre de tentatives
				break;													// on arrête le jeu														
			}
	}
    
	// JEU TERMINE

	string recommencer;												
																		
	if(guess > essais)													// si "guess" est strictement supérieur à "essais"		
																		// alors cela veut dire que le jeu est terminé et
																		// que le joueur a perdu
																	
	cout << "\nDommage ! Le nombre \202tait "<< reponse << endl;		// Donc, la réponse est affichée
	for(;;)																// début de la boucle
	{
			cout << "\nVeux-tu recommencer ?";									
			cin >> recommencer;											// enregistrement de la réponse dans "recommencer"
			if(recommencer== "non")										// si c'est "non" ...
			{
				cout << "Au revoir " << pseudo << endl;
				cout << "A bient\223t...\n";
				return 0;												// ... on arrête là
			}
			if(recommencer== "oui")										// si c'est "oui" ...
			{
				cout << "C'est reparti " << pseudo << endl;
				return main();											// ... on recommence un nouveau jeu
			}
			if(recommencer!= "oui" || recommencer!= "non")				// si on entre autre chose que "oui" ou "non" ...
			{
				cout << "Tape oui ou non\n";							// ... on affiche ce qu'il faut entrer (une sorte d'aide)
				continue;												// et donc on refait la demande
																		// (on revient au début de la boucle)
			}
	}
}

Conclusion :


Programme fonctionnant parfaitement sans erreurs ni warnings sur VC++ 6.0

Si questions : neo_00110010101@hotmail.com

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
merci
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
voila, Pamaury a bien résumé
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
çà dépend de l'utilisation mais disont que dans la grande majorité des cas il sera plus sûr et plus pratique d'utiliser des string que des char* même si cela peut-être l'inverse dans certains cas . Donc jue pense que sauf exeption il faut mieux utiliser des string que des char * .

La principale utilisé des char est(à mon avis) de sauvegarder des donnée statiques de très grosse taille(ex: un tableau de phraseou de texte):
char str[]="ksfjgudjk";
ou même
char tab[100][]={"une phrase","une autre","une autre",...};
Messages postés
24
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
24 juillet 2005

ok, donc en C++ vaut mieux utiliser

string couleur = rose; :D ?
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
déjà, si jedevais écrire quelque chose comme la preemière ligne moi je ferait
char texte[]=" Moi c'est BOBY";

La différence viens du fait que la deuxième ligne c'est une string et non pas un char * . Ca permeyt de faire plus de manipulation plus facilement .
Afficher les 28 commentaires

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.