begin process at 2012 05 27 20:15:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > JEUX DE MÉMOIRE, SANS POINTEURS!

JEUX DE MÉMOIRE, SANS POINTEURS!


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Classé sous :structure Niveau :Débutant Date de création :25/02/2006 Vu :2 990

Auteur : esselfe

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

 Description

J'ai débuté ce projet il y a 4 mois, et je viens de le terminer! Il ne contient pas de pointeurs, mais un systeme de structures....

Source

  • /* memo v.1.2 06-02-16/17/18/20 jouable
  • todo:
  • -menus et options!
  • */
  • #include <iostream>
  • #include <conio.h> // getch()
  • #include <algorithm> // random_shuffle()
  • using namespace std;
  • //1,2,3,4,5,6,11,12,13,14,15,16,17
  • char poss_char[17] ={1,2,3,4,5,6,112,113,1,2,3,4,5,6,112,113}; // double copy
  • int flag_cart[16] ={0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1}; // the showit or not part.
  • int pp[17] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; // poss_positions..mixed up
  • bool end =false;
  • bool sound =false;
  • struct Grid{
  • char coox; // a,b,c,d
  • char cooy; // 1,2,3,4
  • int value; // une de poss_char[]
  • bool flag; // On l'affiche ou pas
  • } g[16]; // 16 copies of the structure. Donc... a1=112
  • class Game{
  • private:
  • char x1, x2, y1, y2; // get_coord(), user's guess.
  • int temp_1, temp_2; // search_values()/valid_values()
  • int mempos; // search_values()/valid_values()
  • public:
  • void mix_positions(){ // mix position array before attributing.
  • random_shuffle(pp, pp+16);
  • }
  • void attrib_coord(){ // 16 attributions 'structs'...coordonnées seulement.
  • char tmp_cart[5] ={'a','b','c','d'};
  • int count1_4 =0;
  • char rowcount ='1';
  • for(int z=0; z!=16; z++){
  • g[z].coox =tmp_cart[count1_4]; // ++ quand rowcount==5
  • g[z].cooy =rowcount;
  • g[z].flag =false; // par défaut
  • ++rowcount;
  • if (rowcount=='5') {rowcount ='1'; ++count1_4;}
  • }
  • }
  • void attrib_values(){ // attribution des valeurs.
  • for (int zz=0; zz!=16 ;zz++){
  • g[pp[zz]].value =poss_char[zz];
  • if (flag_cart[zz]==1) g[pp[zz]].flag =true;
  • else g[pp[zz]].flag =false;
  • }
  • }
  • char chk1(int x){ // tri pour grille pleine.
  • return (char)g[x].value;
  • }
  • char chk2(int x){ // tri pour moitié de grille.
  • if (g[x].flag==false) return (char)g[x].value;
  • else return 0;
  • }
  • void show_full_grid(){
  • cout <<"4 "<<chk1(3)<<chk1(7)<<chk1(11)<<chk1(15)<<endl;
  • cout <<"3 "<<chk1(2)<<chk1(6)<<chk1(10)<<chk1(14)<<endl;
  • cout <<"2 "<<chk1(1)<<chk1(5)<<chk1(9)<<chk1(13)<<endl;
  • cout <<"1 "<<chk1(0)<<chk1(4)<<chk1(8)<<chk1(12)<<endl;
  • cout <<" abcd" <<endl;
  • cout <<endl;
  • }
  • void show_half_grid(){
  • cout <<"4 "<<chk2(3)<<chk2(7)<<chk2(11)<<chk2(15)<<endl;
  • cout <<"3 "<<chk2(2)<<chk2(6)<<chk2(10)<<chk2(14)<<endl;
  • cout <<"2 "<<chk2(1)<<chk2(5)<<chk2(9)<<chk2(13)<<endl;
  • cout <<"1 "<<chk2(0)<<chk2(4)<<chk2(8)<<chk2(12)<<endl;
  • cout <<" abcd" <<endl;
  • cout <<endl;
  • }
  • void valid_values(int a, int b){ // moment décisif!
  • if (a==b) {
  • cout <<"Bonnes"; getch();
  • g[mempos].flag =false;
  • }
  • else {
  • cout <<"Mauvaises"; getch();
  • }
  • }
  • void search_values(char n1, char n2, char n3, char n4){
  • for (int z=0; z!=16; z++){ // "Moteur" de recherche.
  • if (g[z].coox==n1 && g[z].cooy==n2) temp_1 =g[z].value;
  • if (g[z].coox==n3 && g[z].cooy==n4) {temp_2 =g[z].value; mempos =z;}
  • }
  • }
  • void get_coord(){ // une meilleure facon???
  • cout <<"Coords= ";
  • x1 =getch(); cout <<x1;
  • y1 =getch(); cout <<y1;
  • cout <<", ";
  • x2 =getch(); cout <<x2;
  • y2 =getch(); cout <<y2;
  • search_values(x1, y1, x2, y2);
  • valid_values(temp_1, temp_2);
  • }
  • void chkend(){
  • int flagcount =0;
  • for(int z =0; z!=16; z++){
  • if (g[z].flag ==true) ++flagcount;
  • }
  • if (flagcount ==0) {
  • cout <<endl <<"BRAVO!" <<endl; getch();
  • system("CLS");
  • end =true;
  • }
  • }
  • };
  • class Runnage{
  • public:
  • void runme(){
  • Game try_1;
  • try_1.attrib_coord();
  • while(true){
  • system("CLS");
  • try_1.mix_positions();
  • try_1.attrib_values();
  • try_1.show_full_grid();
  • cout <<"Appuyer sur une touche lorsque vous êtes prêt(e)...";
  • getch();
  • while(!end){
  • system("CLS");
  • try_1.show_half_grid();
  • try_1.get_coord();
  • try_1.chkend();
  • }
  • }
  • }
  • };
  • int main(){
  • Runnage test;
  • test.runme();
  • }
/* memo v.1.2     06-02-16/17/18/20 jouable
todo:
-menus et options!
*/

#include <iostream>
#include <conio.h> // getch()
#include <algorithm> // random_shuffle()
using namespace std;

//1,2,3,4,5,6,11,12,13,14,15,16,17
char poss_char[17] ={1,2,3,4,5,6,112,113,1,2,3,4,5,6,112,113}; // double copy
int flag_cart[16] ={0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1}; // the showit or not part.
int pp[17] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; // poss_positions..mixed up
bool end =false;
bool sound =false;

struct Grid{
    char coox; // a,b,c,d
    char cooy; // 1,2,3,4
    int value; // une de poss_char[]
    bool flag; // On l'affiche ou pas
} g[16]; // 16 copies of the structure. Donc... a1=112

class Game{
 private:
    char x1, x2, y1, y2; // get_coord(), user's guess.
    int temp_1, temp_2; // search_values()/valid_values()
    int mempos; // search_values()/valid_values()
 public:
    void mix_positions(){ // mix position array before attributing.
         random_shuffle(pp, pp+16);
    }
    void attrib_coord(){ // 16 attributions 'structs'...coordonnées seulement.
         char tmp_cart[5] ={'a','b','c','d'};
         int count1_4 =0;
         char rowcount ='1';
         for(int z=0; z!=16; z++){
                 g[z].coox =tmp_cart[count1_4]; // ++ quand rowcount==5
                 g[z].cooy =rowcount;
                 g[z].flag =false; // par défaut
                 ++rowcount;
                 if (rowcount=='5') {rowcount ='1'; ++count1_4;}
         }
    }         
    void attrib_values(){ // attribution des valeurs.
         for (int zz=0; zz!=16 ;zz++){
             g[pp[zz]].value =poss_char[zz];
             if (flag_cart[zz]==1) g[pp[zz]].flag =true;
             else g[pp[zz]].flag =false;
         }
    }       
       
    char chk1(int x){ // tri pour grille pleine.
         return (char)g[x].value; 
    }
    char chk2(int x){ // tri pour moitié de grille.
        if (g[x].flag==false) return (char)g[x].value;
        else return 0;
    }
    void show_full_grid(){
        cout <<"4 "<<chk1(3)<<chk1(7)<<chk1(11)<<chk1(15)<<endl;
        cout <<"3 "<<chk1(2)<<chk1(6)<<chk1(10)<<chk1(14)<<endl;
        cout <<"2 "<<chk1(1)<<chk1(5)<<chk1(9)<<chk1(13)<<endl;
        cout <<"1 "<<chk1(0)<<chk1(4)<<chk1(8)<<chk1(12)<<endl;
        cout <<"  abcd" <<endl;
        cout <<endl; 
    }
    void show_half_grid(){
        cout <<"4 "<<chk2(3)<<chk2(7)<<chk2(11)<<chk2(15)<<endl;
        cout <<"3 "<<chk2(2)<<chk2(6)<<chk2(10)<<chk2(14)<<endl;
        cout <<"2 "<<chk2(1)<<chk2(5)<<chk2(9)<<chk2(13)<<endl;
        cout <<"1 "<<chk2(0)<<chk2(4)<<chk2(8)<<chk2(12)<<endl;
        cout <<"  abcd" <<endl;
        cout <<endl;
    }    
     
    void valid_values(int a, int b){ // moment décisif!
        if (a==b) {
           cout <<"Bonnes"; getch();
           g[mempos].flag =false;
        }
        else {
             cout <<"Mauvaises"; getch();
        }       
    }
    
    void search_values(char n1, char n2, char n3, char n4){
        for (int z=0; z!=16; z++){ // "Moteur" de recherche.
            if (g[z].coox==n1 && g[z].cooy==n2) temp_1 =g[z].value;
            if (g[z].coox==n3 && g[z].cooy==n4) {temp_2 =g[z].value; mempos =z;}          
        }
    }
     
    void get_coord(){ // une meilleure facon???
        cout <<"Coords= ";
        x1 =getch(); cout <<x1;
        y1 =getch(); cout <<y1;
        cout <<", ";
        x2 =getch(); cout <<x2;
        y2 =getch(); cout <<y2;
        search_values(x1, y1, x2, y2);
        valid_values(temp_1, temp_2);
    }
    void chkend(){
         int flagcount =0;
         for(int z =0; z!=16; z++){
                  if (g[z].flag ==true) ++flagcount;
         }
         if (flagcount ==0) {
            cout <<endl <<"BRAVO!" <<endl; getch();
            system("CLS");
            end =true;
         }
    }
};      

class Runnage{
 public:
      void runme(){
           Game try_1;
           try_1.attrib_coord();
           while(true){
               system("CLS");
               try_1.mix_positions();
                try_1.attrib_values();
                try_1.show_full_grid();
                cout <<"Appuyer sur une touche lorsque vous êtes prêt(e)...";
                getch();
                while(!end){
                    system("CLS");
                    try_1.show_half_grid();
                    try_1.get_coord();
                    try_1.chkend();
                }
           }
      }
};

int main(){
    Runnage test;
    test.runme();
}


 Conclusion

Rem: J'ai WinXP et Dev-c++(4.9.9.2) a++


 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 JEU DES PETIT CHEVAUX par flamt
Source avec Zip STRUCTURE DES FICHIERS DBF par Stanel
ENSEMBLE DISJOINT par mehdi7604
FILE DE PRIORITÉ DYNAMIQUE par mehdi7604
Source avec Zip CALCULER NOMBRE DE MERSENNE AVEC BIBLIOTHÈQUE DE GESTION DE ... par mehdi7604

Commentaires et avis

Commentaire de vecchio56 le 25/02/2006 18:27:49 administrateur CS

Et tu as fait quoi entre le moment ou tu as commencé ce "projet" et celui ou tu l'a terminé?
4 mois pour ca, ça me semble plutot long
En plus tu as oublié certaines choses, comme aligner ta structure

Commentaire de le_duche le 26/02/2006 00:38:09

Petite note technique (de pinailleur...):
poss_char, flag_cart, pp, tmp_cart, g,... sont des pointeurs. Mais ils ne sont pas exprimés comme tels.
Tu peux faire l'expérience de compiler ceci:

int test[25];
test[0] = 47;
test[1] = 151;
test[11] = 99;
cout << *test;
test++;
cout << *test;
cout << *(test+10);

et tu verra que test est bien un pointeur de type int*


Sur ce, bonne prog à tous !

Commentaire de DeAtHCrAsH le 26/02/2006 17:49:46

vecchio> A ce stade je doute que l'alignement des pointeurs soit une nécéssité. De plus certains compilo le font en auto.
Sinon pour les 4 mois il est vrai que ca fait un peu long... Peut etre un projet scolaire?

Commentaire de BruNews le 26/02/2006 18:06:28 administrateur CS

Certes le compilo devrait avoir aligné les données correctement mais ce n'est pas une raison pour s'y fier, d'autant plus qu'on n'est pas chez VB, qu'il doit apprendre correctement et que le compilo les laissera à leur place, ce qui fera augmenter inutilment la taille de la struct.
Pour t'en convaincre, l'originale sizeof(GRIDA) = 12 alors que refaite correctement GRIDB = 8:

typedef struct _GRIDA {
  char coox;
  char cooy;
  int value;
  bool flag;
} GRIDA;

typedef struct _GRIDB {
  int value;
  bool flag;
  char coox;
  char cooy;
} GRIDB;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
  char buf[12];
  ultoa(sizeof(GRIDA), buf, 10);
  MessageBox(0, buf, "GRIDA", 0);
  
  ultoa(sizeof(GRIDB), buf, 10);
  MessageBox(0, buf, "GRIDB", 0);
  
  return 0;
}

Commentaire de esselfe le 26/02/2006 21:34:19

Merci à tous!
Ainsi je ne regrette pas d'avoir publié cette source.
Au départ je ne comprennais pas ce que voulais dire aligner la structure...
Et le `jeux`de pointeurs me parait une chose interessante...
Cette source est l'issu d'un 'Contest' avec ma soeur...

Vive cppfrance!
a++

Commentaire de kikaanouar le 11/04/2006 22:51:22

merci pour le projet mais j ai pas trouver des bibliotheques

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

structure [ par valoide ] sous visual c++, je voudrais que ma fonction renvoie un type structure afin de l'exploiter dans d'autres fonction???help dessiner des polygones a partir d'n fichier [ par NICKO ] Bonjour,Je cherche à dessiner des polygones (2 triangles pour commencer) dont les informations sont contenues dans un fichier.J'utilise les fonctions bleme avec les structures [ par djamine ] j'ai un bleme j'aimerais que tu m'aide avec les structuresTAF:en utilisant un tableau de structure Je dois ecrire un programme qui saisi les noms et l Structure tm [ par ranouf ] j'utilise visual c++au depart je mets #include &lt;iostream.h&gt;mon but arrivé a recuper le tps actuel dans une structure "temps"pouvoir afficher un tableau dynamique de structure en C ? [ par axl79 ] salutje voudrai faire un tableau dynamique de structures. voici ma structure: struct struct_arete { int sommet1; int sommet2; int quantite;} arete;com Taille de ma structure [ par crocejf2000 ] Salut a tous, J'ai un tres gros probleme qui me bloque toute mon avancé dans mon prog : j'ai une structure : typedef struct{ unsigned short Locate; ch [BCB C++ et MySQL] recuperer la structure des tables mysql [ par hhakim ] La meilleure contribution de chacun est celle d'aider les autresSalut a Tous,je travail avec Borland C++ builder, j'ai un petit probleme concernant la imprimer en ayant le mode paysage par défaut [ par keuf ] Bonjour,J'utilise une structure PrintDLg pour lancer une imprimer. Je voudrais modifier cette structure pour pouvoir avoir le mode paysage par défaut passer d'un widget a une autre structure [ par khaledtaib ] bonjourj' ai un petit programme de traitement d'image en language C, que je veux lui creer une interface graphique en GTK+.ce programme doit afficher sockets: envoi d'une structure... [ par julien20vt ] Maintenant que j'ai réussi à envoyer des char, des int[], je voudrais envoyer un structure faite maison.Le pb est que le socket n'accepte que les char


Nos sponsors


Sondage...

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,702 sec (4)

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