begin process at 2012 05 27 18:36:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > MASTERMIND EN CONSOLE

MASTERMIND EN CONSOLE


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :mastermind, jeux, jeu Niveau :Débutant Date de création :11/12/2005 Date de mise à jour :19/12/2005 21:50:59 Vu / téléchargé :8 643 / 365

Auteur : Psykopat7

Ecrire un message privé
Site perso
Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note

 Description

Un mastermind en console dos , un mode de test et un mode de jeu vous devez choisir entre plusieurs lettre
en fait c'etait un pti boulot pour l'ecole , tres simple et facile a comprendre

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <time.h>
  • void initialisationj(char*);
  • void initialisationt(char*);
  • void verification(char*);
  • void affichage(char*);
  • void main()
  • {
  • int choix;
  • char c='y',vord[5];
  • while (c=='y'||c=='Y')
  • {
  • printf("Bienvenue dans le Mastermind\n\n\tQue desirez-vous faire ?\n\n\t\t");
  • printf("1) Jeu \n\t\t2) Test");
  • printf("\nVotre choix : ");
  • scanf("%d",&choix);
  • while (choix<1 || choix>2)
  • {
  • printf("\nchoix invalide \nRecommencez ");
  • scanf("%d",&choix);
  • }
  • if (choix==1)
  • {
  • initialisationj(&vord[0]);
  • verification(&vord[0]);
  • printf ("\nVOICI la bonne reponse\n");
  • affichage(&vord[0]);
  • }
  • if (choix==2)
  • {
  • initialisationt(&vord[0]);
  • affichage(&vord[0]);
  • verification(&vord[0]);
  • }
  • printf("voulez vous recommencer ? (Y)es,(N)o ");
  • fflush(stdin);
  • c=getchar();
  • }
  • }
  • /*
  • input:*pa : pointeur de vecteur vord
  • process: generation aleatoire du vecteur pour le mode jeu
  • output : \
  • */
  • void initialisationj (char *pa)
  • {
  • int i,j;
  • srand(time(NULL));
  • /* initialisation du générateur aléatoire*/
  • for (i=0;i<4;i++)
  • {
  • j=rand()%7; /* j sera toujours compris entre 0 et 7 */
  • switch(j)
  • {
  • case 0 : *(pa+i)='w';
  • break;
  • case 1 : *(pa+i)='x';
  • break;
  • case 2 : *(pa+i)='y';
  • break;
  • case 3 : *(pa+i)='z';
  • break;
  • case 4 : *(pa+i)='t';
  • break;
  • case 5 : *(pa+i)='l';
  • break;
  • case 6 : *(pa+i)='m';
  • }
  • }
  • }
  • /*
  • input:*pa : pointeur de vecteur vord
  • process: generation du vecteur par l'utilisateur pour le mode test
  • output : \
  • */
  • void initialisationt (char *pa)
  • {
  • int i;
  • for (i=0;i<4;i++)
  • {
  • do
  • {
  • printf("tapez le %d e caractere\n",i+1);
  • fflush(stdin);
  • *(pa+i)=getchar();
  • }
  • while(*(pa+i)!='w' &&*(pa+i)!='x' &&*(pa+i)!='y' &&*(pa+i)!='z' &&*(pa+i)!='t' &&*(pa+i)!='l' &&*(pa+i)!='m');
  • }
  • }
  • /*
  • input:*pa : pointeur de vecteur vord
  • process: affichage du vecteur vord
  • output : \
  • */
  • void affichage (char *pa)
  • {
  • int i;
  • for(i=0;i<4;i++)
  • {printf("%c ",*(pa+i));}
  • printf("\n");
  • }
  • /*
  • input:*pa : pointeur de vecteur vord
  • process: comparaison des 2 vecteurs pour verifier si gagné ou non
  • output : \
  • */
  • void verification (char *pa)
  • {
  • int essai,i,j,b,m;
  • char tmp[5],tmp2[5];
  • for(essai=10;essai>0;essai--)
  • {
  • for(i=0;i<4;i++)
  • {tmp2[i]=*(pa+i);}
  • printf("\ndevinez la suite de 4 lettres parmi w x y z t l m \n");
  • printf("il vous reste %d essais\n",essai);
  • for(i=0;i<4;i++)
  • {
  • do
  • {
  • printf("tapez le %d e caractere\n",i+1);
  • fflush(stdin);
  • tmp[i]=getchar();
  • }
  • while(tmp[i]!='w' &&tmp[i]!='x' &&tmp[i]!='y' &&tmp[i]!='z' &&tmp[i]!='t' &&tmp[i]!='l' &&tmp[i]!='m');
  • }
  • for(i=0,b=0;i<4;i++) /* bonnes réponses */
  • {
  • if(tmp[i]==tmp2[i])
  • {
  • tmp[i]=tmp2[i]='b';
  • b++;
  • }
  • }
  • for(i=0,j=0,m=0;i<4;i++) /* mauvaises reponses */
  • {
  • if (tmp2[i]=='b'||tmp2[i]=='n')
  • {
  • i++;
  • }
  • else
  • {
  • if(tmp2[i]==tmp[j])
  • {
  • tmp2[i]=tmp[j]='n';
  • m++;
  • }
  • else
  • {
  • j++;
  • }
  • }
  • }
  • if(b==4)
  • {
  • printf("\nBRAVO ! vous avez gagné en %d essais",(10-essai)+1);
  • essai=-1;
  • }
  • else
  • {
  • printf("\n %d a la bonne place \n %d a la mauvaise place",b,m);
  • }
  • }
  • if (essai==0)
  • {
  • printf("\nVous avez Perdu !");
  • }
  • }
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void initialisationj(char*);
void initialisationt(char*);
void verification(char*);
void affichage(char*);
void main()
{
	int choix;
	char c='y',vord[5];

	while (c=='y'||c=='Y')
	{
		printf("Bienvenue dans le Mastermind\n\n\tQue desirez-vous faire ?\n\n\t\t");
		printf("1) Jeu \n\t\t2) Test");
		printf("\nVotre choix :  ");
		scanf("%d",&choix);
	
		while (choix<1 || choix>2)
		{
			printf("\nchoix invalide \nRecommencez   ");
			scanf("%d",&choix);
		}

		if (choix==1)
		{
			initialisationj(&vord[0]);
			verification(&vord[0]);
			printf ("\nVOICI la bonne reponse\n");
			affichage(&vord[0]);
		}

		if (choix==2)
		{
			initialisationt(&vord[0]);
			affichage(&vord[0]);
			verification(&vord[0]);
		}

		printf("voulez vous recommencer ? (Y)es,(N)o  ");
		fflush(stdin);
		c=getchar();
	}

}

/* 
   input:*pa : pointeur de vecteur vord
   process: generation aleatoire du vecteur pour le mode jeu
   output : \
*/
void initialisationj (char *pa)
{
	int i,j;

	srand(time(NULL));
										/* initialisation du générateur aléatoire*/
	for (i=0;i<4;i++)
	{							    
		j=rand()%7;				    /* j sera toujours compris entre 0 et 7 */
	
		switch(j)
		{
		case 0 : *(pa+i)='w';
					   break;
		case 1 : *(pa+i)='x';
					   break;
		case 2 : *(pa+i)='y';
					   break;
		case 3 : *(pa+i)='z';
					   break;
		case 4 : *(pa+i)='t';
					   break;
		case 5 : *(pa+i)='l';
					   break;
		case 6 : *(pa+i)='m';
		}
	}
}

/* 
   input:*pa : pointeur de vecteur vord
   process: generation du vecteur par l'utilisateur pour le mode test
   output : \
*/
void initialisationt (char *pa)
{
	int i;
	
	for (i=0;i<4;i++)
	{
		do
		{
			printf("tapez le  %d e caractere\n",i+1);
			fflush(stdin);
			*(pa+i)=getchar();
		}
		while(*(pa+i)!='w' &&*(pa+i)!='x' &&*(pa+i)!='y' &&*(pa+i)!='z' &&*(pa+i)!='t' &&*(pa+i)!='l' &&*(pa+i)!='m');
	}
}

/* 
   input:*pa : pointeur de vecteur vord
   process: affichage du vecteur vord
   output : \
*/
void affichage (char *pa)
{
	int i;

	for(i=0;i<4;i++)
	{printf("%c ",*(pa+i));}
	printf("\n");
}

/* 
   input:*pa : pointeur de vecteur vord
   process: comparaison des 2 vecteurs pour verifier si gagné ou non
   output : \
*/
void verification (char *pa)
{
	int essai,i,j,b,m;
	char tmp[5],tmp2[5];

	for(essai=10;essai>0;essai--)
	{
		for(i=0;i<4;i++)
		{tmp2[i]=*(pa+i);}

		printf("\ndevinez la suite de 4 lettres parmi w x y z t l m \n"); 
		printf("il vous reste %d essais\n",essai);
		for(i=0;i<4;i++)
		{
			do
			{
				printf("tapez le %d e caractere\n",i+1);
				fflush(stdin);
				tmp[i]=getchar();
			}
			while(tmp[i]!='w' &&tmp[i]!='x' &&tmp[i]!='y' &&tmp[i]!='z' &&tmp[i]!='t' &&tmp[i]!='l' &&tmp[i]!='m');
		}

		
		for(i=0,b=0;i<4;i++) /* bonnes réponses */
		{
			if(tmp[i]==tmp2[i])
			{
				tmp[i]=tmp2[i]='b';
				b++;
			}
		}

		for(i=0,j=0,m=0;i<4;i++) /* mauvaises reponses */
		{
			if (tmp2[i]=='b'||tmp2[i]=='n')
			{
				i++;
			}

			else
			{
				if(tmp2[i]==tmp[j])
				{
					tmp2[i]=tmp[j]='n';
					m++;
				}
				else 
				{
					j++;
				}
			
			}
		}
		

		if(b==4)
		{
			printf("\nBRAVO ! vous avez gagné en %d essais",(10-essai)+1);
			essai=-1;
		}

		else
		{
			printf("\n %d a la bonne place \n %d a la mauvaise place",b,m);
		}

	}
	if (essai==0)
	{
		printf("\nVous avez Perdu !");
	}

}


 Conclusion

bon exercice pour débutants

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

11 décembre 2005 14:11:17 :
correction d'un bug
19 décembre 2005 21:50:59 :
mon vrai code modifié , excuse à dragonfly

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DES CARTES par eapaceinfo
PROGRAMME DE JEU DE MPT par KerizGarmm
Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture BASE/MOTEUR 3D EN QT/OPENGL (COMPLET ET FONCTIONNEL!) POUR U... par envi33
Source avec Zip PUCKMAN PROJET C GEII par aurelbo
Source avec Zip JEU: MARIO SOKOBAN par astro53
Source avec Zip TOUR DE HANOI EN C par astro53
Source avec Zip JEU PENDU + GRAPH par kaibacom

Commentaires et avis

Commentaire de vecchio56 le 11/12/2005 14:35:58 administrateur CS

fflush(stdin);
Ca fait quoi selon toi cette ligne?

Commentaire de Psykopat7 le 12/12/2005 15:16:17

elle vide le buffer clavier avant d'entrer de nouveau caractères sinon ça risque de faire bugger le programme

Commentaire de vecchio56 le 14/12/2005 13:52:34 administrateur CS

sauf que fflush ne s'utilise que sur des flots de sortie, renseigne toi

Commentaire de TanKu le 14/12/2005 18:18:26

Je voulais juste dire, bien que je ne m'y connaisse pas en programmation, que "fflush()" sers en effet à vider un buffer.
je rappel: int fflush(FILE *stream);
Et je rappel que le clavier est un flux d'entrée, et de la même manière que le "fgets()" ou que le "gets()" nous pouvons signaler que le flux et le clavier par "stdin".

De plus j'ai regardé dans les MSDN pour voir un peu et il y avait l'exemple suivant:
// crt_fflush.c
#include <stdio.h>
#include <conio.h>

int main( void )
{
   int integer;
   char string[81];

   /* Read each word as a string. */
   printf( "Enter a sentence of four words with scanf: " );
   for( integer = 0; integer < 4; integer++ )
   {
      scanf( "%s", string );      
      // Security caution!
      // Beware allowing user to enter data directly into a buffer
      // without checking for buffer overrun possiblity.
      printf( "%s\n", string );
   }

   /* You must flush the input buffer before using gets. */
   fflush( stdin );   // fflush on input stream is an extension to the C standard
   printf( "Enter the same sentence with gets: " );
   gets( string );
   printf( "%s\n", string );
}

Tu peux donc voir tout l'interait du "fflush(stdin)" enfin je crois avoir compris, tout comme Psykopat7
Mais si tu a encore un doute et que tu désire te renseigner comme tu le conseillais à Psy et bien teste le code sans le fflush(stdin).
Je crois que sa montre bien la nécessité du "fflush(stdin)" ici pour vider le retour chariot que le "scanf()" ne prend pas contrairement au "gets()" ou "fgets()"
Mais peut être existe-t-il une méthode plus propre pour vider le buffer clavier...

Commentaire de Psykopat7 le 17/12/2005 11:18:42

Merci Tanku de ton explication , c tout à fait exact
En fait le fflush peut aussi etre utilisé en sortie mais bon , je ne m'en sers pas souvent

En ce qui concerne le scanf(), je t'assure qu'à la fin on ne s'en sert que lorsqu'on est bien obligé ...

Commentaire de vecchio56 le 17/12/2005 11:48:30 administrateur CS

Désolé, je me suis renseigné, mais sur un livre qui décrivait le C standard ANSI (ou il est écrit que stdin a un comportement indéfini sur un flux d'entrée), et je n'étais pas au courant de cette extension

Commentaire de spirit of dragonfly le 19/12/2005 12:35:38

tient c'est bizare, ce code source ressemble comme deux goutes d'eau a celui que j'ai fait en 1ere et que j'ai envoyé a un amis pour l'aider mais qui ne semble n'avoir juste changer que les variables et pretendre que c'est son oeuvre. tu comprend pk je ne veux plus t'envoyer de code source maintenant?

Commentaire de Psykopat7 le 19/12/2005 12:43:51

Tu te trompe surement , je l'ai fait seul pour ma 2e session et en changeant la logique ...

Commentaire de spirit of dragonfly le 19/12/2005 13:09:20

aah, changer les noms de variable et changer les commentaires te permette de dire que tu a changer de logique et que c'est toi qui l'a fait^^

Commentaire de Psykopat7 le 19/12/2005 13:36:30

en acceptant ta théorie , ça veut dire que tous ceux qui on fait un mastermind en mode console un jour t'ont emprunté tes sources ...

Commentaire de spirit of dragonfly le 19/12/2005 13:41:08

t'abuse mon gars, il y a plein de maniere differente pour creer un master mind en mode console et la t'a exactement le meme code que moi, ligne pour ligne, espace pour espace. t'a juste changé les variable. alors ça te ferai koi de dire en publique que c pas toi qui l'a fait. ceux qui te connaisse le save de toute maniere. alors tant pis pour toi si ça peut te faire plaisirs d'afficher des codes qui ne sont pas tes oevres.  continue comme en C++, ça ce sont tes vraie oeuvre!!!

Commentaire de Alain Proviste le 19/12/2005 14:36:27 administrateur CS

je vais clore le débat : il n'y a pas 75000 manieres d'écrire un mastermind, la structure du code ne m'a pas l'air de transéder les méthodes normales de programmation et je pense que quiconque tenterait de faire un mastermind utiliserais logiquement ce squelette.

maintenant si on regarde les cs de demineurs sur d'autres sites, ils sont "semblables" donc spirit of dragonfly je comprends ta réaction mais il faut relativiser un peu.

Commentaire de spirit of dragonfly le 19/12/2005 14:45:09

oui oui, si tu veux je te trouve des codes sources pour ce programme qui sont radicalement different.  on est dans une ecole d'informatique et je peux te dire que tout le monde a sa propre maniere de coder, et ça peux etre radicalement different meme pour ce genre de petit programme.
et j'ai envoyé la plupart de mes codes source (dont celui la) a psyko pour l'aider dans sa comprehension (j'aurai pas du), c'est pour cela que je peux pretendre que ce code source est mon oeuvre et qu'il ne l'a pas fait.

Commentaire de vecchio56 le 19/12/2005 14:53:24 administrateur CS

Je pense que normalement, si on écrit des master mind, ils seront tous différents, et même la structure globale.
Mais si c'est l'objet d'un tp par exemple, il y a peut être des restriction ou des obligations qui font que les codes se ressembleront plus. Si seuls les noms de variables changent, c'est clair qu'il y a copie, ou alors c'est une invraisemblable coincidence

Commentaire de vecchio56 le 19/12/2005 14:56:25 administrateur CS

Ceux qui sont courageux pourront comparer avec celui-ci: http://www.asmfr.com/code.aspx?ID=15274 :)

Commentaire de Alain Proviste le 19/12/2005 16:30:10 administrateur CS

pour faire un jeu comme mastermind on va tous utiliser les mêmes méthodes que le cerveau humain ou alors une méthode classique d'algo de mastermind. dans les cas y a rien de particulierement execeptionnel à faire un mastermind, combien il aurait réelement volé le code faut pas imaginer qu'on peut s'approprier qqch de basique...

Commentaire de spirit of dragonfly le 19/12/2005 17:10:41

oui bon t'a raison, en atendant c'est mon code, ya pas foto, j'en ai rien a battre qu'il se le soit approprier, puisque je lui ai envoyé pour l'aider. ce qui me repugne, c'est qu'il pretende l'avoir fait alors que ce n'est pas le cas. c'est tout. je lui avais envoyé pour qu'il s'aide et non pour qu'il fasse du copié/coller. ya aucun mérite.

Commentaire de Alain Proviste le 19/12/2005 18:10:41 administrateur CS

expliquez vous entre vous <:
psychopat7 si tu t'es effectivement inspiré de cette source il serait poli et correct de le préciser, d'autant plus qu'il semble l'avoir pour te rendre service.

Commentaire de Psykopat7 le 19/12/2005 20:58:53

je n'ai jamais nié m'etre inspiré de lui pour le dossier que j'ai rendu mais ensuite j'ai amélioré mon code pour ma 2e session et ce n'est donc pas le meme car j'en ai changé un bon gros morceau en fonction de mes progres

Commentaire de Psykopat7 le 19/12/2005 21:44:43

je viens de me rendre compte d'un truc , j'ai envoyé effectivement le code non mis à jour , autant pour moi ...

je met ça à jour tout de suite

Commentaire de Psykopat7 le 19/12/2005 21:54:45

mes excuse publiques à dragonfly pour mon inattention légendaire et pour avoir créé des problemes en mettant le code dont je me suis effectivement inspiré pour me tirer d'affaire en février 2005

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Mode Multijoueur pour un jeux ?? [ par SnOOpss ] Salut !!Est ce que quelqu'un connaitrait des site avec des tutoriaux pour programmer en DirectPlay pour convertir en jeu en multijoueur via internet.O mastermind [ par roro79180 ] Salut,J'ai un probl&#232;me, je n'arrive pas du tout a cr&#233;er mon jeux de mastermind version num&#233;rique pour linux en language CCertes il s'ag programmation du jeu d'échecs [ par danyx ] bonsoir &#224; tousvoila ma passion c'est de d&#233;velopper mon prog d'&#233;checs (en C) . S'il y a des personnes qui d&#233;sirent discuter de ce s Créer un jeu vidéo... [ par Crepuscule3 ] Bonjour à tous,   J'ai quelques compétences en C/C++ et je souhaiterai apprendre à créer un jeu vidéo. Je sais... certains ne vont pas pouvoir s'empêc code source jeux GTK [ par polly19 ] Bonjour, Voila mon problème est simple je cherche le code source d'un jeu ! http://www.jeuxflashonline.fr/Jeux/Pipe-line,165.html Ce genre de jeux, Reseau pour jeu de combat local ? (Mugen) [ par LeSac ] Bonjours, Comme beaucoup qui connaissent le jeu de combat MUGEN j'aimerai qu'il existe un réseau ou tous les joueurs peuvent jouer entre eux. J'ai l communication avec le port série pour un jeu de rapidité [ par titan65 ] Bonjour, Je voudrais construire un jeu de buzzer à 4 joueurs (confronter 4 joueurs différents dans un jeu de rapidité) qui fonctionnerait de la maniè Comment retourner à une certaine ligne du code ? [ par BabyAzerty ] Bonjour, Je souhaiterai savoir comment retourner à un certain point du code ? Par exemple : Je lance un pendu (ou n'importe quel jeu) Et lorsque je pieces echecs [ par moripo ] bonjour je cherche a changer les pions d'un jeu d'Échec ( une image en couleur par pion ) avec des images différentes selon les camps je suis en train


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales