Jeux du keno mode graphique turbo c++

Description

JEUX DU KENO

Source / Exemple :


/*  PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
	ecrit le 11-07-2002 par cmarsc
	KENO  MODE GRAPHIQUE */

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <graphics.h>
#include <time.h>
#include <dos.h>

#define KEY_ENTER 13       /* touche du clavier ENTER */
#define KEY_ESC  27        /* touche du clavier ESC */

#define NBRE_BOULES 10
#define MAX_NUMERO 70

#define COUL_ECRAN BLUE
#define COUL_KENO  LIGHTCYAN
#define COUL_CADRE LIGHTGREEN
#define COUL_BANDE BLACK

void tirer_les_numeros(void);
int trier( const void *nombre1, const void *nombre2);
void afficher_les_numeros(void);

static int numero_tire[NBRE_BOULES];
static int numero_deja_tire[MAX_NUMERO+1];

int main(void) {

	 int i1,TEMPS_DE_PAUSE;
	 static char mon_choix_de_tirage ,entree_clavier;
	 char saisir_temps[2];
	 char texte1[50];

	 int gdriver = DETECT, gmode, errorcode;
	 initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

 	errorcode = graphresult();
	if (errorcode != grOk)
	{
		printf("Graphics error: %s\n", grapherrormsg(errorcode));
		printf("Press any key to halt:");
		getch();

	  exit(1);
	}

	/* cadre d'introduction */
	setfillstyle(SOLID_FILL,LIGHTCYAN);
	bar (5,170,632,242 );
	setfillstyle(SOLID_FILL, BLUE);
	bar (7,172,630,240 );

	settextstyle(SMALL_FONT, HORIZ_DIR, 4);
	setusercharsize(4,1,4,1);
	strcpy(texte1 , "1 AUTOMATIQUE   2 MANUEL");

	setcolor(LIGHTCYAN);
	outtextxy(20,180, texte1);
	setcolor(DARKGRAY);
	outtextxy(21,181, texte1);

	do {

		mon_choix_de_tirage = getch();
		if (mon_choix_de_tirage == KEY_ESC) {
			closegraph();
			exit(0);
		}

	} while (mon_choix_de_tirage != '1' && mon_choix_de_tirage != '2');

	 /* saisir le temps de pause en secondes valeur entre 1 et 9 */
	 if ( mon_choix_de_tirage == '1') {      /* TIRAGE AUTOMATIQUE */
		setcolor(WHITE);
		/* effacer le texte precedent du cadre bleu */
		bar (7,172,630,240 );

		settextstyle(SMALL_FONT, HORIZ_DIR, 4);
	    strcpy(texte1,"Entrez le temps de pause entre les tirages 1 a 9");

		setusercharsize(2,1,4,1);
		setcolor(LIGHTCYAN);
		outtextxy(20,180, texte1);

		setcolor(DARKGRAY);
		outtextxy(21,180, texte1); 

		do {
			saisir_temps[0] = getch();
			TEMPS_DE_PAUSE =  atoi(saisir_temps);
		} while (TEMPS_DE_PAUSE < 1 && saisir_temps[0] != KEY_ESC);

		/* valeur par defaut si ESC */
		if (TEMPS_DE_PAUSE < 1) TEMPS_DE_PAUSE = 3;

	 } /* fin de if( mon_choix_de_tirage...) */

	 setcolor(COUL_CADRE);
	 /* dessiner le grand cadre avec un effet en relief */
	 for (i1 = 0; i1 < 3; i1++) {
		 (i1 == 1 ) ? setcolor(WHITE) : setcolor(COUL_CADRE);
		 rectangle (i1,i1,getmaxx()-i1,getmaxy()-i1);
	 }

  while ( !kbhit() ) {

   settextstyle(SANS_SERIF_FONT, HORIZ_DIR, 2);

	 /* afficher le titre KENO */
	 for (i1 = 1; i1 < 10; i1++) {

		setusercharsize(16-i1,10-i1,12-i1, 1);
		setcolor(COUL_KENO);

		outtextxy(65,10, "KENO");
		delay(35);
		setfillstyle(SOLID_FILL,COUL_ECRAN);
		/* effacer l'ecran */
		if (i1 < 9) bar (4,4,getmaxx()-4,getmaxy()-3);

	 } /* fin de for (i1...) */

	 tirer_les_numeros();

	 /* quicksort algorithme de tri dans stdlib.h */
	 qsort((void *)numero_tire, NBRE_BOULES, sizeof(numero_tire[0]), trier);

	 afficher_les_numeros();

	 /* attente entre chaque tirage */

	 if ( mon_choix_de_tirage == '1') {      /* TIRAGE AUTOMATIQUE */
		 sleep(TEMPS_DE_PAUSE);

	 } else if (mon_choix_de_tirage == '2') { /* TIRAGE MANUEL */

	     setcolor(WHITE);
	     setusercharsize(2,1,2,1);
		 outtextxy(150, 450, "ESC Quitter    ENTREE suivant");

	     do {
	         entree_clavier = getch();
	         if (entree_clavier == KEY_ESC) {
		          closegraph();
		          exit(0);
	         }
	     } while ( entree_clavier != KEY_ENTER);

	 } /* fin de if (mon_choix_de_tirage ...) */

  } /* fin de while (!kbhit) */

  /* effacer l'ecran */

  setcolor(BLACK);
  for (i1 = 0; i1 < getmaxy(); i1++) {
	  rectangle (0,i1,getmaxx()-i1,getmaxy());
	 delay(2);
   }

	 delay(500);
	/* fermer le mode graphique */
	 closegraph();

return EXIT_SUCCESS;
} /* fin de main */

void tirer_les_numeros(void) {

   int i1;

   /* initialiser le generateur aleatoire */
   srand((unsigned) time(NULL));

tirer_autres_numeros:

   /* tout initialiser a zero */
   for (i1 = 0; i1 <= MAX_NUMERO; i1++) {
	 if (i1 < NBRE_BOULES) numero_tire[i1] = 0;
	 numero_deja_tire[i1] = 0;
   }

   for (i1 = 0; i1 < NBRE_BOULES; i1++) {

	  numero_tire[i1] = (rand () % (MAX_NUMERO))+1;
	  numero_deja_tire[ numero_tire[i1] ]++;

	  /* tester si numero deja tire */
	  if (numero_deja_tire[ numero_tire[i1] ] > 1) {
		  goto tirer_autres_numeros;
	  }

   } /* fin de for (i1) */

return ;
} /* fin de la fonction tirer_les_numeros */

int trier( const void *nombre1, const void *nombre2)
{
   return( strcmp(nombre1,nombre2) );
} /* fin de la fonction trier */

void afficher_les_numeros(void) {

   int i1,i2,i3,x;
   char texte[4];

   settextstyle(SMALL_FONT, HORIZ_DIR, 8);

   /* afficher la bande du fond du texte */
   for (i2 = getmaxx()- 5; i2 > 3; i2 -=5) {
	  setfillstyle(SOLID_FILL,COUL_BANDE);
	  bar (i2,195,getmaxx()-4 ,255);
	  delay(2);
   }

   /* x = ecarts entre les cadres 63 */
   for (i3 = 0 ,x = 0; i3 < NBRE_BOULES; i3++,x += 63) {

	   /* dessiner le cadre des numeros */
	   for (i1 = 0; i1 < 5; i1++) {
		  /* couleur du cadre rouge */
		  (i1 == 2 ) ? setcolor(LIGHTRED) : setcolor(RED);

		  /* couleur du cadre vert desactive */
/*		  (i1 == 2 ) ? setcolor(LIGHTCYAN) : setcolor(CYAN); */
		  rectangle (10+i1+x,200+i1,57-i1+x,250-i1);
	   } /* fin de for (i1) */

	  /* convertir le nombre */
	  sprintf(texte,"%02d",numero_tire[i3]);

	  /* afficher le numero en relief */
	  setcolor(CYAN);
	  outtextxy( 15+ i1+x ,205+i1, texte);

	  setcolor(LIGHTCYAN);
	  outtextxy( 16+ i1+x ,206+i1, texte);

	  /* temps entre chaque numero affiche */
	  delay(10);
   } /* fin de for (i3) */

return ;
} /* fin de la fonction afficher_les_numeros */

Conclusion :


// PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
// ecrit le 11-07-2002 par cmarsc
// KENO MODE GRAPHIQUE

Codes Sources

A voir également

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.