Ce programme vous permet de tirer des numeros manuellement ou automatiquement, et de vérifier si vous avez gagné en comparant vos grilles et les résultats de la FRANCAISE DES JEUX LOTO.
Source / Exemple :
// PROGRAMME EN C SOUS DOS DEV C++ 4
// ecrit le 07-06-2002 par cmarsc
// GRILLES DE LOTO
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.c>
#include <ctype.h>
#include <time.h>
#include <dos.h>
#define ENTER 13 // touches du clavier ENTREE
#define ESC 27 // ESC
#define F1 59 // Fonction F1
#define F2 60 // Fonction F2
#define F3 61 // Fonction F3
#define F4 62 // Fonction F4
#define LEFT 75 // fleche gauche
#define RIGHT 77 // fleche droite
#define UP 72 // fleche monter
#define DOWN 80 // fleche descendre
// temps d'attente entre les grilles en millisecondes 1000 = 1 seconde
#define VITESSE_TIRAGE 395
#define VITESSE 50 // ralentir l'affichage
#define NBRE_LIGNES 17
#define COL_MENU 20
#define LIGNE_MENU 6
#define NBRE_NUMEROS_TIRES 6
#define NBRE_GRILLES 8
#define NBRE_GAGNANT 3
#define NUMERO_MAX 50
#define COUL_ECRAN 155
#define COUL_FOND 63
#define COUL_BOULES 31
#define COUL_CURSEUR 110
#define COUL_INVITE 154
#define COUL_COMPL 78
#define COUL_BAR_PROGRESSE 238
static int numero_tire[NBRE_NUMEROS_TIRES];
static int mes_numeros_tires[NBRE_GRILLES][NBRE_NUMEROS_TIRES];
static int trouves[NBRE_GRILLES][NBRE_NUMEROS_TIRES+2];
static int numero_deja_tire[NUMERO_MAX];
int c_mon_choix(void);
void effacer_ecran(void);
void effet_effacer(char *menu[],int col, int ligne);
void color(int couleur);
void menu_principal (int col, int ligne);
void afficher_menu(char *menu[],int col, int ligne, int effet, int couleur);
void tirer_6_numeros(int type_tirage,int grille_numero);
int trier( const void *nombre1, const void *nombre2);
void afficher_grille(int col,int ligne,int grille_numero,int effet);
void afficher_numero_dans_grille(int col,int ligne,int grille_numero);
void afficher_mes_numeros(void);
int AFFICHER_RESULTATS_LOTO(int curs_y, int coul_curs,int box);
void entree_clavier_RESULTATS_LOTO(void);
int verifier_concordances(int numero_du_tirage);
void afficher_aide(int col, int ligne);
enum reponse {NON, OUI};
enum mon_choix {TIRER = 1, CONSULTER = 3, TIRAGES_FD_JEUX, NUMEROS_TROUVES};
char *tirage[] = {NULL,"Premier" , "Deuxieme"};
static int mon_choix_principal = 0;
static int NUMERO_DU_TIRAGE_LOTO = 0;
// initialiser le tableau avec les resultats de la FRANCAISE DES JEUX
struct RESULTATS_LOTO_FD_JEUX { // FD_JEUX = francaise des jeux
int num_tirage;
char date_tirage[11];
int premier_2eme_tirage;
union BOULES_SORTIES { // 6 boules + complementaire
int numero[NBRE_NUMEROS_TIRES + 1];
} BOULES;
char numero_joker[7];
} RESULTATS_LOTO [] = {
//³ Nø ³Date tirage ³1/2³ B1 ³ B2 ³ B3 ³ B4 ³ B5 ³ B6 ³comp³ NøJoker ³
{ 27, "03-04-2002", 1, 15, 38, 29, 18, 43, 6, 36, ""},
{ 27, "03-04-2002", 2, 36, 24, 33, 38, 15, 7, 25, "3655671"},
{ 28, "06-04-2002", 1, 16, 25, 19, 9, 4, 2, 34, ""},
{ 28, "06-04-2002", 2, 15, 10, 2, 8, 13, 28, 25, "4308966"},
{ 29, "10-04-2002", 1, 4, 13, 12, 47, 35, 42, 21, ""},
{ 29, "10-04-2002", 2, 27, 9, 36, 22, 46, 23, 20, "4186603"},
{ 30, "13-04-2002", 1, 12, 24, 30, 1, 38, 11, 2, ""},
{ 30, "13-04-2002", 2, 34, 15, 8, 18, 22, 33, 23, "0620308"},
{ 31, "17-04-2002", 1, 15, 31, 11, 7, 27, 44, 28, ""},
{ 31, "17-04-2002", 2, 15, 27, 6, 33, 26, 24, 23, "2114795"},
{ 32, "20-04-2002", 1, 46, 34, 11, 20, 16, 5, 39, ""},
{ 32, "20-04-2002", 2, 33, 3, 20, 41, 11, 6, 25, "0253876"},
{ 33, "24-04-2002", 1, 36, 25, 10, 26, 41, 16, 39, ""},
{ 33, "24-04-2002", 2, 44, 13, 32, 16, 49, 33, 23, "2478121"},
{ 34, "27-04-2002", 1, 12, 44, 24, 37, 20, 11, 10, ""},
{ 34, "27-04-2002", 2, 12, 29, 2, 16, 4, 48, 33, "3926446"},
{ 35, "01-05-2002", 1, 12, 38, 17, 16, 18, 14, 5, ""},
{ 35, "01-05-2002", 2, 11, 39, 4, 34, 16, 3, 46, "5933436"},
{ 36, "04-05-2002", 1, 22, 13, 38, 7, 46, 34, 19, ""},
{ 36, "04-05-2002", 2, 39, 31, 15, 5, 34, 6, 20, "7728862"},
{ 37, "08-05-2002", 1, 35, 10, 31, 23, 6, 33, 14, ""},
{ 37, "08-05-2002", 2, 8, 42, 44, 32, 22, 27, 41, "1948780"},
{ 38, "11-05-2002", 1, 23, 38, 44, 48, 47, 9, 40, ""},
{ 38, "11-05-2002", 2, 14, 22, 35, 46, 23, 45, 12, "6215850"},
{ 39, "15-05-2002", 1, 32, 18, 39, 22, 30, 1, 12, ""},
{ 39, "15-05-2002", 2, 47, 36, 45, 22, 39, 42, 3, "9573339"},
{ 40, "18-05-2002", 1, 11, 48, 30, 13, 31, 37, 32, ""},
{ 40, "18-05-2002", 2, 25, 34, 1, 46, 6, 24, 41, "2813674"},
{ 41, "22-05-2002", 1, 34, 19, 42, 49, 46, 28, 41, ""},
{ 41, "22-05-2002", 2, 39, 31, 9, 36, 22, 43, 46, "2187988"},
{ 42, "25-05-2002", 1, 6, 8, 32, 27, 29, 24, 18, ""},
{ 42, "25-05-2002", 2, 38, 31, 5, 4, 20, 33, 34, "9639100"},
{ 43, "29-05-2002", 1, 21, 5, 39, 32, 38, 36, 22, ""},
{ 43, "29-05-2002", 2, 5, 10, 8, 9, 11, 20, 39, "1361775"},
{ 44, "01-06-2002", 1, 38, 1, 28, 8, 19, 4, 45, ""},
{ 44, "01-06-2002", 2, 46, 5, 40, 1, 47, 27, 33, "4192113"},
{ 45, "05-06-2002", 1, 32, 12, 8, 34, 28, 30, 36, ""},
{ 45, "05-06-2002", 2, 34, 12, 20, 8, 13, 9, 15, "2160503"},
{ 46, "08-06-2002", 1, 34, 42, 49, 1, 19, 6, 7, ""},
{ 46, "08-06-2002", 2, 35, 13, 26, 11, 5, 15, 8, "5218755"},
{ 47, "12-06-2002", 1, 29, 36, 1, 2, 35, 41, 48, ""},
{ 47, "12-06-2002", 2, 35, 21, 37, 27, 43, 30, 42, "9447659"},
{ 48, "15-06-2002", 1, 21, 30, 34, 2, 42, 45, 15, ""},
{ 48, "15-06-2002", 2, 40, 42, 45, 33, 28, 23, 21, "2625949"},
{ 49, "19-06-2002", 1, 32, 34, 2, 7, 29, 13, 41, ""},
{ 49, "19-06-2002", 2, 14, 36, 13, 27, 17, 8, 19, "7697848"},
{ 50, "22-06-2002", 1, 37, 13, 7, 31, 35, 3, 9, ""},
{ 50, "22-06-2002", 2, 25, 2, 10, 26, 23, 44, 47, "3299826"},
{ 51, "26-06-2002", 1, 3, 9, 37, 19, 10, 32, 12, ""},
{ 51, "26-06-2002", 2, 38, 25, 12, 20, 43, 26, 34, "9725177"},
{ 52, "29-06-2002", 1, 34, 38, 39, 45, 9, 42, 15, ""},
{ 52, "29-06-2002", 2, 25, 2, 44, 12, 13, 10, 35, "9085115"},
{ 53, "03-07-2002", 1, 33, 31, 19, 9, 1, 39, 2, ""},
{ 53, "03-07-2002", 2, 40, 22, 32, 13, 19, 37, 11, "3826789"},
{ 54, "06-07-2002", 1, 15, 9, 17, 34, 27, 22, 7, ""},
{ 54, "06-07-2002", 2, 10, 29, 22, 2, 35, 41, 48, "8401726"},
{ 55, "10-07-2002", 1, 7, 38, 8, 11, 26, 22, 37, ""},
{ 55, "10-07-2002", 2, 2, 34, 16, 40, 8, 10, 15, "9981090"},
{ 56, "13-07-2002", 1, 25, 4, 41, 2, 22, 48, 15, ""},
{ 56, "13-07-2002", 2 ,13, 46, 29, 43, 45, 17, 49, "1733531"},
{ 57, "17-07-2002", 1, 7, 3, 28, 22, 44, 23, 16, ""},
{ 57, "17-07-2002", 2, 12, 7, 23, 25, 32, 47, 49, "9040735"},
{ 58, "20-07-2002", 1, 12, 48, 20, 25, 10, 2, 11, ""},
{ 58, "20-07-2002", 2, 9, 13, 47, 38, 16, 12, 10, "2422204"},
{ 59, "24-07-2002", 1, 24, 7, 49, 19, 21, 46, 11, ""},
{ 59, "24-07-2002", 2, 19, 33, 6, 18, 16, 4, 48, "0225225"},
{ 60, "27-07-2002", 1, 29, 33, 19, 46, 44, 21, 11, ""},
{ 60, "27-07-2002", 2, 42, 45, 47, 9, 18, 20, 28, "8925914"},
{ 61, "31-07-2002", 1, 17, 6, 39, 11, 16, 46, 22, ""},
{ 61, "31-07-2002", 2, 38, 45, 31, 42, 21, 41, 44, "6300290"},
};
int main(void) {
menu_principal(COL_MENU ,LIGNE_MENU);
// entrer au clavier du choix principal
c_mon_choix();
return EXIT_SUCCESS;
}
void effacer_ecran(void) {
int i1;
// supprimer le curseur clignotant
_setcursortype(_NOCURSOR);
color(COUL_ECRAN);
for (i1 = 1; i1 < 25; i1++) {
gotoxy (1, 25); cprintf("%80c\n",'\0');
}
}
void color(int couleur) {
textcolor (couleur);
} // fin de la fonction color
void afficher_menu(char *menu[],int col, int ligne, int effet, int couleur) {
int i1, i2;
if (effet == OUI) {
for (i2 = 0; i2 <= strlen(menu[1]) ; ++i2) {
for (i1 = 0; menu[i1] != NULL; ++i1) {
if (i2) {
color(BLACK); // dessiner l'ombre
gotoxy (col+i2,1+ligne +i1);
cprintf("%2c",219);
}
color(couleur);
gotoxy(col,ligne + i1);
cprintf( "%1s", strlen(menu[i1]) + menu[i1] -i2);
} // fin for (i1)
sleep(3);
} // fin for (i2)
} else {
// afficher menu sans effet
for (i1 = 0; menu[i1] != NULL; ++i1) {
color(BLACK); // dessiner l'ombre
gotoxy (col+strlen(menu[i1]),1+ligne +i1);
cprintf("%2c",'\0');
if (i1 ==20) {
gotoxy (col+1,1+ligne +i1);
cprintf("%27c",'\0');
}
color(COUL_FOND);
gotoxy(col,ligne + i1 );
cprintf( "%s", menu[i1]);
}
} // fin if effet == OUI
return ;
} // fin de la fonction afficher_menu
void menu_principal(int col, int ligne) {
char *menu[] = {
"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",
"³ 1) Tirer les numeros automatiquement..³",
"³ 2) Tirer les numeros manuellement.....³",
"ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
"³ 3) Consulter mes numeros..............³",
"ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
"³ 4) Tirages de la FRANCAISE DES JEUX...³",
"ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
"³ 5) Quitter le programme...............³",
"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",
NULL,
};
effacer_ecran();
color(COUL_FOND);
afficher_menu(menu, col, ligne + 1,OUI,COUL_FOND);
// tester si la fonction est active
if (!mes_numeros_tires[0][0]) color(55);
// texte en gris non actif
gotoxy (col+1,1+ligne + 4);
cprintf("%0.39s",menu[4]+1);
color(27);
gotoxy (col+10,ligne );
cprintf(" Faites votre choix ");
return ;
}; //fin de la fonction menu_principal
int c_mon_choix(void) {
char mon_choix;
int i1;
// emplacement de la grille en colonne
int position_grille_x;
// emplacement de la grille en ligne
int position_grille_y;
mon_choix = '0';
while (mon_choix != 27) {
mon_choix = getch();
switch(mon_choix) {
case '1': // tirage automatique ou manuel
case '2':
effacer_ecran();
mon_choix_principal = TIRER;
for (i1 = 0; i1 < NBRE_GRILLES; i1++) {
// tirage automatique tirage manuel
(mon_choix == '1') ? tirer_6_numeros(1,i1) : tirer_6_numeros(2,i1);
position_grille_x = 52; // colonne
position_grille_y = 2; // ligne
afficher_grille(position_grille_x,position_grille_y,i1,OUI);
if (mon_choix == '1') sleep(VITESSE_TIRAGE);
} // fin de for
menu_principal(COL_MENU ,LIGNE_MENU);
break;
case '3':
mon_choix_principal = CONSULTER;
afficher_mes_numeros();
break;
case '4':
mon_choix_principal = TIRAGES_FD_JEUX;
effacer_ecran();
entree_clavier_RESULTATS_LOTO();
break;
case '5': // quitter le programme
case ESC:
if (mon_choix) return EXIT_SUCCESS;
break;
default:
break;
} // fin de switch()
} // fin de while()
return EXIT_SUCCESS;
} //fin de la fonction c_mon_choix
void tirer_6_numeros(int type_tirage,int grille_numero){
int i0, i1,i3, numero_ok, col,ligne;
int numero_tire1,SELECTIONNER_A;
char votre_choix,votre_choix2,nombre[2];
time_t t;
i1 = i3 = 0;
numero_ok = 0;
numero_tire1 = 0;
col = 17; ligne = 9;
// selectionner les 6 premiers sortis au moins 40 fois
SELECTIONNER_A = 40;
srand((unsigned) time(&t));
color (COUL_ECRAN);
gotoxy(col,ligne+4); cprintf("%31c",'\0');
for (i1 = 0;i1 <= NUMERO_MAX; i1++) {
// initialiser a zero
if (i1 <= NBRE_NUMEROS_TIRES) {
numero_tire[i1] = 0;
trouves[grille_numero][i1] = 0;
mes_numeros_tires[grille_numero][i1] = 0;
}
numero_deja_tire[i1] = 0;
}
gotoxy(col ,ligne);
if (type_tirage == 1) // tirage automatique
cprintf(" Selection des numeros en cours ");
else
cprintf("%7cENTREZ LES NUMEROS%6c",'\0','\0');
color (COUL_FOND);
for (i1 = 0; i1 <= ligne+2; i1++) {
color (COUL_ECRAN);
gotoxy(col,24-i1); cprintf("%31c",'\0');
color (COUL_FOND);
gotoxy(col,21-i1); cprintf("ÚÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿");
gotoxy(col,22-i1); cprintf("³%4c³%4c³%4c³%4c³%4c³%4c³",
'\0','\0','\0','\0','\0','\0');
gotoxy(col,23-i1); cprintf("ÀÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ");
sleep(10);
}
while (numero_ok < NBRE_NUMEROS_TIRES ) {
if (type_tirage == 1) { // tirage automatique
tirer_un_autre_numero:
// tirer les numeros pseudo aleatoirement
numero_tire1 = rand() % (NUMERO_MAX);
// tester si numero valide sinon en tirer un autre
if (!numero_tire1 || (numero_tire1 > NUMERO_MAX)) {
goto tirer_un_autre_numero;
}
// compter le nombre de fois que le numero sort
numero_deja_tire[ numero_tire1 ]++;
if ( numero_deja_tire[ numero_tire1 ] == SELECTIONNER_A) {
numero_tire[numero_ok] = numero_tire1;
color (COUL_BAR_PROGRESSE);
gotoxy(col+(numero_ok*30) / NBRE_NUMEROS_TIRES,ligne+4);
cprintf("ÛÛÛÛÛÛ"); // barre de progression
++numero_ok;
}
i1++;
if (! (i1 % 6) ) i3 = 0;
i3 += 5; // se placer dans la bonne case
color (COUL_FOND);
gotoxy(col-3 +i3 ,ligne+2); cprintf("%2d", numero_tire1);
for (i0 = 0; i0 <30; i0++) {
gotoxy(1,1); cprintf("");
}
} else { // debut tirage manuel
i3 += 5; // se placer dans la bonne case
votre_choix2 = '0';
numero_deja_tape:
_setcursortype(_NORMALCURSOR);
color (COUL_FOND);
gotoxy(col-3+i3,ligne+2);
votre_choix = getch();
if (isdigit(votre_choix)) cprintf("%2c",votre_choix);
// annuler la tache puis retourner au menu principal
if (votre_choix == ESC || votre_choix2 == ESC) return;
votre_choix2 = getch();
sprintf(nombre,"%c%c",votre_choix,votre_choix2);
nombre[2] = '\0';
numero_tire1 = atoi(nombre); // convertir char en entier
// Verifier si le nombre est valide (de 1 a 49)
if (numero_tire1 <= 0 || numero_tire1 > NUMERO_MAX-1) {
erreur1:
color (78); nombre[2] = '\0';
gotoxy(col,ligne+4); cprintf("ERREUR : ENTREZ UN AUTRE NUMERO");
do {
} while(!kbhit());
color (COUL_ECRAN);
gotoxy(col,ligne+4); cprintf("%31c",'\0');
goto numero_deja_tape;
}
// compter le nombre de fois que le numero sort
numero_deja_tire[ numero_tire1 ]++ ;
// Verifier si le nombre tape l'est deja
if (numero_deja_tire[ numero_tire1 ] > 1 ) goto erreur1;
numero_tire[numero_ok] = numero_tire1;
gotoxy(col-3+i3,ligne+2);
cprintf("%2d",numero_tire[numero_ok]);
++numero_ok; // compter les numeros arreter a 6
}
}
// quicksort algorithme de tri dans stdlib.h
qsort((void *)numero_tire,
NBRE_NUMEROS_TIRES, sizeof(numero_tire[0]), trier);
// copier les numeros tires tries
for (i1 = 0 ; i1 < NBRE_NUMEROS_TIRES; ++i1) {
mes_numeros_tires[grille_numero][i1] = numero_tire[i1];
}
for (i1 = 0 , i3 = 5; i1 < NBRE_NUMEROS_TIRES; ++i1,i3 += 5) {
gotoxy(col-3+i3 ,ligne+2);
cprintf("%2d",numero_tire[i1]);
}
return ;
} // fin de la fonction tirer_6_numeros
int trier( const void *nombre1, const void *nombre2)
{
return( strcmp(nombre1,nombre2) );
} // fin de la fonction trier
void afficher_grille(int col,int ligne, int grille_numero,int effet){
static char *menu[] = {
"ÚÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿",
"³....³ 10 ³ 20 ³ 30 ³ 40 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 01 ³ 11 ³ 21 ³ 31 ³ 41 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 02 ³ 12 ³ 22 ³ 32 ³ 42 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 03 ³ 13 ³ 23 ³ 33 ³ 43 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 04 ³ 14 ³ 24 ³ 34 ³ 44 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 05 ³ 15 ³ 25 ³ 35 ³ 45 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 06 ³ 16 ³ 26 ³ 36 ³ 46 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 07 ³ 17 ³ 27 ³ 37 ³ 47 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 08 ³ 18 ³ 28 ³ 38 ³ 48 ³",
"ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"³ 09 ³ 19 ³ 29 ³ 39 ³ 49 ³",
"ÀÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ",
NULL,
};
color(COUL_FOND);
if (effet == OUI) {
effet_effacer(menu, col, ligne);
color(COUL_FOND);
afficher_menu(menu, col, ligne,OUI,COUL_FOND);
} else {
afficher_menu(menu, col, ligne,NON,COUL_FOND);
} // fin effet == OUI
color (COUL_INVITE);
gotoxy (col+9,ligne-1);
cprintf("Grille %-3d",1 + grille_numero);
afficher_numero_dans_grille(col+1,ligne,grille_numero);
return ;
}; // fin de la fonction afficher_grille
void afficher_mes_numeros(void){
static char *tableau[4] = {
"ÚÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄ¿",
"³Grille³ B1 ³ B2 ³ B3 ³ B4 ³ B5 ³ B6 ³Trouves³",
"ÃÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄÄ´",
"ÀÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÙ"
};
static int i1, i2, i3, col, ligne, numero1, numero2;
static int MAX_MENU, curseur_y,curseur_x;
char votre_choix, votre_choix2,nombre[2];
col = 2; ligne = 1;
MAX_MENU = NBRE_GRILLES;
effacer_ecran();
color (COUL_INVITE);
gotoxy (col+15,ligne);
cprintf("Mes numeros tires");
gotoxy (2, 25);
cprintf("F1 Aide ESC Menu F2 MES NUMEROS F3 TROUVES " //
" F4 RESULTATS DES TIRAGES");
debut_tableau_mes_numeros:
color (COUL_FOND);
// dessiner le haut du TABLEAU
for (i2 = 0; i2 <=2; ++i2) {
gotoxy (col,1+ligne+i2); cprintf("%s",tableau[i2]);
}
debut_afficher_mes_numeros:
// afficher mes 6 numeros
for (i1 = 0; i1 < NBRE_GRILLES; ++i1) {
// dessiner le trait de separation
gotoxy (col,5+ligne+(i1 *2)); cprintf("%s",tableau[2]);
// afficher le numero de la grille
gotoxy (col, 4+ligne + (i1*2)); cprintf("³%3d%3c³",1+i1,'\0');
for (i2 = 0, i3 = 0; i2 < NBRE_NUMEROS_TIRES; ++i2,i3 += 5) {
gotoxy (col+8+i3, 4 +ligne + (i1*2));
cprintf("%3d%1c³", mes_numeros_tires[i1][i2],'\0');
}
// afficher le nombre de numeros gagnants (Trouves)
gotoxy (col+8+i3, 4+ligne + (i1*2));
if (trouves[i1][7]) {
// retirer 1 pour ne pas compter le complementaire
cprintf("%2d +%2c%c³",trouves[i1][6]-1,'C','\0');
} else {
cprintf("%2d%5c³",trouves[i1][6],'\0');
}
if (trouves[i1][6] >= NBRE_GAGNANT) {
// mettre en evidence si au moins 3 numeros gagnants
color (95); // couleur magenta
gotoxy (col+8+i3, 4+ligne + (i1*2));
if (trouves[i1][7]) {
trouves[i1][6]--; // ne pas compter le complementaire
if (trouves[i1][6] < NBRE_GAGNANT) color (COUL_FOND);
cprintf("%2d +%2c%c",trouves[i1][6],'C','\0');
} else {
cprintf("%2d%5c",trouves[i1][6],'\0');
}
// } else {
} // fin de if (trouves[i1][6] >= NBRE_GAGNANT)
color (COUL_FOND);
} // fin de for (i1)
// FERMER LE BAS DU TABLEAU
gotoxy (col, 3 + ligne+(i1*2)); cprintf("%s",tableau[3]);
color (COUL_INVITE);
// afficher les resultats du LOTO DE LA FD_JEUX
i1 = NUMERO_DU_TIRAGE_LOTO ;
gotoxy (2,24);
cprintf("%s Tirage du LOTO nø %d du %s:",
tirage[RESULTATS_LOTO[i1].premier_2eme_tirage],
RESULTATS_LOTO[i1].num_tirage,
RESULTATS_LOTO[i1].date_tirage);
// afficher les 6 boules + le complementaire
for (i2 = 0, i3 = 0; i2 <= NBRE_NUMEROS_TIRES; ++i2,i3 += 5) {
gotoxy (46+i3, 24);
// couleur du numero complementaire
if (i2 == NBRE_NUMEROS_TIRES) color (COUL_COMPL);
cprintf(" %2d ", RESULTATS_LOTO[i1].BOULES.numero[i2]);
}
color (COUL_BOULES);
// Placer les numeros TROUVES dans le cadre
for (i1 = 0; i1 < NBRE_GRILLES; ++i1) {
for (i2 = 0, i3 = 0; i2 <= NBRE_NUMEROS_TIRES; ++i2,i3 += 5) {
if (i2 < NBRE_NUMEROS_TIRES) {
gotoxy (10+i3, 4 + ligne + (i1*2));
numero1 = trouves[i1][i2];
numero2 = RESULTATS_LOTO[NUMERO_DU_TIRAGE_LOTO].BOULES.numero[6];
if (numero1) {
// mettre en couleur differente le complementaire
if (numero1 == numero2) {
color (COUL_COMPL);
} else {
color (COUL_BOULES);
}
cprintf(" %2d ", trouves[i1][i2]);
} // fin de if (numero1)
} // fin de if (i2 < NBRE_NUMEROS_TIRES)
} // fin de for (i2)
} // fin de for (i1)
votre_choix = '0';
while (votre_choix != ESC) {
if (curseur_y < 0) curseur_y = MAX_MENU-1;
if (curseur_y >= MAX_MENU) curseur_y = 0;
if (curseur_x < 0) curseur_x = NBRE_NUMEROS_TIRES-1;
if (curseur_x >= NBRE_NUMEROS_TIRES) curseur_x = 0;
afficher_grille(52,2,curseur_y,NON);
color (COUL_CURSEUR);
// clignoter si le numero est gagnant
if (trouves[curseur_y][curseur_x]) color (206);
// deplacements sur boules
gotoxy (col+8+(curseur_x*5), 4 +ligne + (curseur_y*2));
cprintf("%3d%1c", mes_numeros_tires[curseur_y][curseur_x],'\0');
votre_choix = getch();
if (isdigit(votre_choix)) { // tester si c'est un chiffre
color (COUL_FOND);
gotoxy (col+8+(curseur_x*5), 4 +ligne + (curseur_y*2));
cprintf("%3c ",votre_choix);
votre_choix2 = getch();
sprintf(nombre,"%c%c",votre_choix,votre_choix2);
numero1 = atoi(nombre);
nombre[2] = '\0';
if (numero1 > 0 && numero1 < NUMERO_MAX)
mes_numeros_tires[curseur_y][curseur_x] = numero1;
goto debut_afficher_mes_numeros;
} // if isdigit(votre_choix)
if (votre_choix != ESC && votre_choix != F1) {
color (COUL_FOND);
if (trouves[curseur_y][curseur_x]) {
// retablir la couleur du numero
if (mes_numeros_tires[curseur_y][curseur_x] ==
RESULTATS_LOTO[NUMERO_DU_TIRAGE_LOTO].BOULES.numero[6])
color (COUL_COMPL);
else
color (COUL_BOULES);
}
// deplacements sur boules
gotoxy (col+8+(curseur_x*5), 4 +ligne + (curseur_y*2));
cprintf("%3d%1c", mes_numeros_tires[curseur_y][curseur_x],'\0');
}
switch(votre_choix) {
case UP: // monter avec la fleche
--curseur_y;
break;
case DOWN: // descendre avec la fleche
++curseur_y;
break;
case LEFT: // aller vers la gauche
--curseur_x;
break;
case RIGHT: // aller vers la droite
++curseur_x;
break;
case F1: afficher_aide(5,5);
goto debut_tableau_mes_numeros;
break;
case F2: mon_choix_principal = CONSULTER; break;
case F3: mon_choix_principal = NUMEROS_TROUVES; break;
case F4:
effacer_ecran();
mon_choix_principal = TIRAGES_FD_JEUX;
entree_clavier_RESULTATS_LOTO();
if (votre_choix) return ;
break;
case ESC:
menu_principal (COL_MENU ,LIGNE_MENU);
if (votre_choix) return ;
break;
default:
break;
} // switch(votre_choix)
} // while (votre_choix != ESC)
return ;
} // fin de la fonction afficher_mes_numeros
int AFFICHER_RESULTATS_LOTO(int curs_y, int coul_curs,int box) {
static char *tableau[4] = {
"ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿",
"³Date tirage³ B1 ³ B2 ³ B3 ³ B4 ³ B5 ³ B6 ³comp³",
"ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´",
"ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ"
};
static int MAX_MENU; // nbre maximum de lignes dans le menu
int i1, i2, i3, i5, col,ligne;
col = 2; ligne = 2;
MAX_MENU = sizeof RESULTATS_LOTO / sizeof(struct RESULTATS_LOTO_FD_JEUX)-1;
if (box == OUI) {
color (COUL_INVITE);
gotoxy (col + 10,1);
cprintf("Resultats des tirages du LOTO");
gotoxy (20,25);
cprintf("ESC Menu ENTREE pour lancer l'EXECUTION");
color(COUL_FOND);
// dessiner le le haut du TABLEAU
for (i2 = 0; i2 <=2; ++i2) {
gotoxy (col,ligne+i2); cprintf("%s",tableau[i2]);
}
} // fin if (box == OUI)
i1 = curs_y;
i5 = (curs_y % (NBRE_LIGNES));
color (coul_curs);
gotoxy (col,3+ligne + i5);
if (i1 <= MAX_MENU) {
cprintf("³%s ³", RESULTATS_LOTO[i1].date_tirage);
// afficher les 6 boules + le complementaire
for (i2 = 0, i3 = 0; i2 <= NBRE_NUMEROS_TIRES; ++i2,i3 += 5) {
gotoxy (col+13+i3,3 + ligne + i5);
cprintf(" %2d ³", RESULTATS_LOTO[i1].BOULES.numero[i2]);
}
color (COUL_INVITE);
gotoxy (col, 4 + ligne + NBRE_LIGNES);
cprintf("Tirage N%3d %13s tirage", RESULTATS_LOTO[i1].num_tirage,
tirage[RESULTATS_LOTO[i1].premier_2eme_tirage]);
// afficher le JOKER
if (RESULTATS_LOTO[i1].premier_2eme_tirage == 2)
cprintf(" N Joker %0.7s", RESULTATS_LOTO[i1].numero_joker);
else
cprintf("%16c",'\0');
} else {
// lignes vides
cprintf("³%11c³%4c³%4c³%4c³%4c³%4c³%4c³%4c³",
'\0','\0','\0','\0','\0','\0','\0','\0');
} // fin if ( i1 < MAX_MENU)
if (box == OUI) { // FERMER LE BAS DU TABLEAU
color (coul_curs);
gotoxy (col,3+ligne+NBRE_LIGNES); cprintf("%s",tableau[3]);
}
return MAX_MENU;
} // fin de la fonction AFFICHER_RESULTATS_LOTO
void entree_clavier_RESULTATS_LOTO(void) {
char votre_choix;
static int curs_y = 0;
static int dep = 0;
int i1, PAGE_SUIVANTE;
int MAX_MENU; // nbre maximum de lignes dans le menu
PAGE_SUIVANTE = OUI;
MAX_MENU = AFFICHER_RESULTATS_LOTO(dep,COUL_FOND,OUI);
votre_choix = '0';
while (votre_choix != ESC) {
if (curs_y < 0) curs_y = 0;
if (curs_y >= MAX_MENU) curs_y = MAX_MENU;
if (PAGE_SUIVANTE == OUI) {
for (i1 = 0; i1 < NBRE_LIGNES; ++i1) {
AFFICHER_RESULTATS_LOTO(i1+dep,COUL_FOND,NON);
}
PAGE_SUIVANTE = NON;
} // fin if (PAGE_SUIVANTE)
AFFICHER_RESULTATS_LOTO(curs_y,COUL_BOULES,NON);
afficher_grille (52,2,curs_y,NON);
votre_choix = getch();
if (votre_choix != ENTER) {
AFFICHER_RESULTATS_LOTO(curs_y,COUL_FOND,NON);
}
switch(votre_choix) {
case UP: // monter avec la fleche
--curs_y;
if ( (curs_y % NBRE_LIGNES) == NBRE_LIGNES-1) {
dep = curs_y - (NBRE_LIGNES-1);
PAGE_SUIVANTE = OUI;
}
break;
case DOWN: // descendre avec la fleche
++curs_y;
if ( (curs_y % NBRE_LIGNES) == 0 ) {
dep = curs_y;
PAGE_SUIVANTE = OUI;
}
break;
case ENTER:
if (!mes_numeros_tires[0][0]) {
// si le tableau est sans numeros
color(27);
gotoxy(2,1);
cprintf("VOUS DEVEZ TIRER LES NUMEROS AU PREALABLE");
do {
} while (!kbhit());
menu_principal (COL_MENU ,LIGNE_MENU);
} else {
mon_choix_principal = NUMEROS_TROUVES;
NUMERO_DU_TIRAGE_LOTO = curs_y;
verifier_concordances (NUMERO_DU_TIRAGE_LOTO);
}
if (votre_choix) return ;
break;
case ESC:
// retourner menu principal
menu_principal (COL_MENU ,LIGNE_MENU);
if (votre_choix) return ;
break;
default:
break;
} // switch()
} // fin while (votre_choix != ESC)
return ;
} // fin de la fonction entree_clavier_RESULTATS_LOTO
void afficher_numero_dans_grille(int col,int ligne, int grille_numero) {
int i1 , i2 , i3, i4,numero1;
i2 = 0; i4 = 0;
color (COUL_BOULES);
for (i1 = 0; i1 < NUMERO_MAX; ++i1, i2 = ( !(i1 % 10 ) ) ? i2 += 5 : i2 ) {
// calculer la position du numero dans la grille
gotoxy (col + i2 ,1 + ligne + ( (i1 % 10) * 2) );
if (i1) { // N'afficher que les nombres positifs
for (i3 = 0; i3 <= NBRE_NUMEROS_TIRES; ++i3) {
switch(mon_choix_principal) {
case TIRER:
case CONSULTER:
// afficher mes 6 numeros tires
if (i3 < NBRE_NUMEROS_TIRES) {
numero1 = mes_numeros_tires[grille_numero][i3];
} else {
numero1 = 0;
}
break;
case TIRAGES_FD_JEUX:
numero1 = RESULTATS_LOTO[grille_numero].BOULES.numero[i3];
// mettre le NUMERO COMPLEMENTAIRE en evidence
if (numero1 == RESULTATS_LOTO[grille_numero].BOULES.numero[6] ) {
color (COUL_COMPL);
} else {
color (COUL_BOULES);
} // fin de if en evidence
break;
case NUMEROS_TROUVES:
if (i3 < NBRE_NUMEROS_TIRES) {
numero1 = trouves[grille_numero][i3];
} else {
numero1 = 0;
}
break;
default:
break;
} // fin de switch()
if (i1 == numero1) {
// compter le nombre de numero afficher en couleur
++i4;
cprintf("%1c%2d%1c",'\0',numero1,'\0');
}
} // fin de for (i3)
if (i4 == NBRE_NUMEROS_TIRES + 1) return; // fin de tache
} // fin N'afficher que les nombres positifs
} // fin de for (i1)
return ;
} //fin de la fonction afficher_numero_dans_grille
int verifier_concordances(int numero_du_tirage) {
int trouvees;
int i0, i1 , i2 , i3, numero1, numero2;
// initialiser a zero
for (i1 = 0; i1 < NBRE_GRILLES; ++i1) {
for (i2 = 0; i2 <= NBRE_NUMEROS_TIRES+1; ++i2) {
trouves[i1][i2] = 0;
}
}
for (i0 = 0; i0 < NBRE_GRILLES; ++i0) { // grille numero
trouvees = 0;
trouves[i0][7] = NON; // complementaire
for (i1 = 0; i1 <= NBRE_NUMEROS_TIRES; ++i1) {
for (i3 = 0; i3 < NBRE_NUMEROS_TIRES; ++i3) {
numero1 = mes_numeros_tires[i0][i3];
numero2 = RESULTATS_LOTO[numero_du_tirage].BOULES.numero[i1];
// rechercher les concordances
if (numero1 == numero2) {
// detecter le numero complementaire
if (numero1 == (RESULTATS_LOTO[numero_du_tirage].BOULES.numero[6])) {
trouves[i0][7] = OUI;
}
trouvees++;
trouves[i0][i3] = numero1;
} // fin if (numero1 == numero2)
// nbre numeros gagnants
trouves[i0][6] = trouvees;
} // fin de for (i3)
} // fin de for (i1)
} // fin de for (i0)
afficher_mes_numeros();
return trouvees;
} // fin de la fonction verifier_concordances
void afficher_aide(int col, int ligne) {
char clavier;
int i1;
char *menu[] = {
"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",
"³ F2 Affiche mes numeros tires dans la grille........................³",
"ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
"³ F3 Affiche les numeros gagnants en couleur dans le tableau et dans.³",
"³ la grille, le nombre est inscrit dans la colonne du TABLEAU Trouves³",
"³ avec un C si le numero Complementaire est present dans mes numeros.³",
"ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
"³ F4 Affiche le tableau avec les numeros des differents tirages de la³",
"³ FRANCAISE DES JEUX : RESULTATS OFFICIELS DU LOTO...................³",
"ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´",
"³ ................Appuyez sur ESC pour revenir.......................³",
"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",
NULL,
};
afficher_menu(menu, col, ligne,OUI,159);
do { // appuyer sur ESC
clavier = getch();
} while (clavier != ESC);
color (COUL_ECRAN);
for (i1 = ligne; i1 <= 17; i1++) {
gotoxy (48, i1); cprintf("%4c",'\0');
} // effacer cadre de l'aide
return ;
}
void effet_effacer(char *menu[],int col, int ligne) {
int i1, i2;
color(COUL_ECRAN);
for (i2 = 0; i2 <= strlen(menu[1]) ; ++i2) {
for (i1 = 0; i1 <= 21; ++i1) {
gotoxy((col+strlen(menu[0]))-1 - i2,ligne + i1 );
cprintf( "%3c", '\0');
}
sleep(1);
}
return ;
} // fin de la fonction effet_effacer
Conclusion :
// PROGRAMME EN C SOUS DOS DEV C++ 4
// ecrit le 07-06-2002 par cmarsc
// GRILLES DE LOTO
SI VOUS TROUVEZ DES BOGUES
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.