begin process at 2012 02 07 09:26:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > DÉMINEUR EN SDL

DÉMINEUR EN SDL


 Description

Cliquez pour voir la capture en taille normale
Voilà un démineur classique. L'intéret de cette source réside dans l'utilisation de la SLD et la gestion des évènements souris.
On peut aussi voir comment charger et afficher des images.

Et éventuellement on peux jouer :D

Source

  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <SDL/SDL.h>
  • #include <string>
  • #include <iostream>
  • using namespace std;
  • # define NBRE_MINES 40
  • //
  • // PROGRAMME POUR OBTENIR UN NOMBRE ALEATOIRE ENTRE 1 ET MAXI
  • //
  • int aleat(int maxi)
  • {
  • return 1 + (rand() % maxi);
  • }
  • //
  • // PROGRAMME DE GESTION DES ACTIONS
  • //
  • void execute_action(int (&matr)[21][16], string &status, string action, int a=0, int b=0)
  • {
  • if(action=="drapeau" && matr[a][b]<0)
  • {
  • if(matr[a][b]==-2 || matr[a][b]==-4) {matr[a][b]++;}
  • else {matr[a][b]--;}
  • int nbre_drapeaux=0; bool bon_placement=true; int i,j;
  • for(i=1; i<=19; i++)
  • {
  • for(j=1; j<=14; j++)
  • {
  • switch(matr[i][j])
  • {
  • case -4:
  • nbre_drapeaux++;
  • break;
  • case -2:
  • nbre_drapeaux++;
  • bon_placement=false;
  • break;
  • }
  • }
  • }
  • if(nbre_drapeaux==NBRE_MINES && bon_placement) status = "gagne";
  • if(nbre_drapeaux==NBRE_MINES && !bon_placement) status = "perdu";
  • }
  • if(action=="essai" && matr[a][b]==-3)
  • {
  • status="perdu";
  • }
  • if(action=="essai" && matr[a][b]==-1)
  • {
  • int k=0;
  • if(matr[a-1][b-1]<=-3) k++;
  • if(matr[a-1][b]<=-3) k++;
  • if(matr[a-1][b+1]<=-3) k++;
  • if(matr[a][b-1]<=-3) k++;
  • if(matr[a][b+1]<=-3) k++;
  • if(matr[a+1][b-1]<=-3) k++;
  • if(matr[a+1][b]<=-3) k++;
  • if(matr[a+1][b+1]<=-3) k++;
  • matr[a][b]=k;
  • if(k==0)
  • {
  • if(a != 1 && b!= 1) execute_action(matr,status,"essai",a-1,b-1);
  • if(a != 1) execute_action(matr,status,"essai",a-1,b);
  • if(a != 1 && b != 14) execute_action(matr,status,"essai",a-1,b+1);
  • if(b != 1) execute_action(matr,status,"essai",a,b-1);
  • if(b != 14) execute_action(matr,status,"essai",a,b+1);
  • if(a != 19 && b!= 1) execute_action(matr,status,"essai",a+1,b-1);
  • if(a != 19) execute_action(matr,status,"essai",a+1,b);
  • if(a != 19 && b != 14) execute_action(matr,status,"essai",a+1,b+1);
  • }
  • }
  • }
  • //
  • // PROGRAMME DE GESTION DES EVENEMENTS
  • //
  • void gere_even(int (&matr)[21][16], string &status, int &curseurX, int &curseurY)
  • {
  • bool reste = true;
  • string action="";
  • SDL_Event event;
  • while (reste)
  • {
  • SDL_Delay(5);
  • SDL_WaitEvent(&event);
  • switch(event.type)
  • {
  • case SDL_QUIT:
  • status="quitte";
  • reste=false;
  • break;
  • case SDL_MOUSEMOTION:
  • if(event.button.x>=20 && event.button.x<779 && event.button.y>=20 && event.button.y<579)
  • {
  • curseurX = (event.button.x-19)/40 + 1;
  • curseurY = (event.button.y-19)/40 + 1;
  • }
  • else
  • {
  • curseurX = 0; curseurY = 0;
  • }
  • reste=false;
  • break;
  • case SDL_MOUSEBUTTONUP:
  • switch(event.button.button)
  • {
  • case SDL_BUTTON_RIGHT:
  • if(curseurX != 0) execute_action(matr, status, "drapeau", curseurX, curseurY);
  • break;
  • case SDL_BUTTON_LEFT:
  • if(curseurX != 0) execute_action(matr, status, "essai", curseurX, curseurY);
  • break;
  • }
  • reste=false;
  • break;
  • }
  • }
  • }
  • //
  • // PROGRAMME DE CONSTRUCTION DE LA FENETRE
  • //
  • void construction(int (&matr)[21][16], SDL_Surface *&ecran ,int &curseurX, int &curseurY, int a, int b)
  • {
  • if(a==0) SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 17, 206, 112));
  • if(a==-1) SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 17+(238*b)/30, 206-(206*b)/30, 112-(112*b)/30));
  • if(a==1) SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 17+(63*b)/30, 206-(126*b)/30, 112+(143*b)/30));
  • SDL_Surface *rectangle;
  • SDL_Rect position;
  • int i,j;
  • for (i=1; i<=14; i++)
  • {
  • for(j=1; j<=19; j++)
  • {
  • position.x = 40*j-20;
  • position.y = 40*i-20;
  • switch(matr[j][i])
  • {
  • case -4:
  • rectangle = SDL_LoadBMP("bloc_drapeau.bmp");
  • break;
  • case -2:
  • rectangle = SDL_LoadBMP("bloc_drapeau.bmp");
  • break;
  • case 0:
  • rectangle = SDL_LoadBMP("bloc_0.bmp");
  • break;
  • case 1:
  • rectangle = SDL_LoadBMP("bloc_1.bmp");
  • break;
  • case 2:
  • rectangle = SDL_LoadBMP("bloc_2.bmp");
  • break;
  • case 3:
  • rectangle = SDL_LoadBMP("bloc_3.bmp");
  • break;
  • case 4:
  • rectangle = SDL_LoadBMP("bloc_4.bmp");
  • break;
  • case 5:
  • rectangle = SDL_LoadBMP("bloc_5.bmp");
  • break;
  • case 6:
  • rectangle = SDL_LoadBMP("bloc_6.bmp");
  • break;
  • case 7:
  • rectangle = SDL_LoadBMP("bloc_7.bmp");
  • break;
  • case 8:
  • rectangle = SDL_LoadBMP("bloc_8.bmp");
  • break;
  • case 100:
  • rectangle = SDL_LoadBMP("bloc_erreur.bmp");
  • break;
  • default:
  • rectangle = SDL_LoadBMP("bloc_inconnu.bmp");
  • break;
  • }
  • SDL_BlitSurface(rectangle, NULL, ecran, &position);
  • SDL_FreeSurface(rectangle);
  • }
  • }
  • rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 760, 1, 32, 0, 0, 0, 0);
  • SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
  • position.x=19;
  • for(i=1; i<= 15; i++)
  • {
  • position.y=40*i-21;
  • SDL_BlitSurface(rectangle, NULL, ecran, &position);
  • }
  • rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 1, 560, 32, 0, 0, 0, 0);
  • SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
  • position.y=19;
  • for(i=1; i<= 20; i++)
  • {
  • position.x=40*i-21;
  • SDL_BlitSurface(rectangle, NULL, ecran, &position);
  • }
  • if(curseurX != 0)
  • {
  • if(matr[curseurX][curseurY]==-1 || matr[curseurX][curseurY]==-3)
  • {
  • rectangle = SDL_LoadBMP("bloc_selectionne.bmp");
  • position.x = 40*curseurX-20;
  • position.y = 40*curseurY-20;
  • SDL_BlitSurface(rectangle, NULL, ecran, &position);
  • SDL_FreeSurface(rectangle);
  • }
  • }
  • SDL_Flip(ecran);
  • }
  • //
  • // MAIN
  • //
  • int main(int argc, char** argv)
  • {
  • srand(time(NULL));
  • SDL_Surface *ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
  • SDL_WM_SetCaption("Demineur", NULL);
  • SDL_WM_SetIcon(SDL_LoadBMP("icone.bmp"), NULL);
  • int matr[21][16]; int i,j,k; //Initialisation de MATR, qui contiendra les valeurs
  • for(i=0; i<=20; i++) //matr[i][j] contiendra l'élément (i,j) sachant que ceux du bord vaudront toujours -1
  • { // -4 : Pas découvert, Drapeau , Mine
  • for(j=0; j<=15; j++) // -3 : Pas découvert, Pas Drapeau, Mine
  • { // -2 : Pas découvert, Drapeau , Pas mine
  • matr[i][j]=-1; // -1 : Pas découvert, Pas drapeau, Pas mine
  • } // 0..8 : Découvert, a proximité il y a 0..8 mines
  • } // 100 : Erreur, une mine !
  • for(k=1; k<=NBRE_MINES; k++) //
  • { //
  • i=aleat(19); j=aleat(14); //
  • if(matr[i][j] != -3) //
  • { matr[i][j] = -3; //
  • cout<<"Mine "<<k<<" posée en ["<<i<<"x"<<j<<"]"<<endl;
  • } //
  • else //
  • { k--; } //
  • } //
  • int curseurX=0, curseurY=0; //CURSEUR qui contient la donnée en X et Y de la case en cours. OxO : en dehors.
  • string status = "en jeu"; //STATUS, qui donne le status en cours.
  • while(status=="en jeu")
  • {
  • construction(matr, ecran, curseurX, curseurY,0,0);
  • gere_even(matr, status, curseurX, curseurY);
  • }
  • if(status=="perdu")
  • {
  • for(i=1; i<=19; i++)
  • {
  • for(j=1; j<=14; j++)
  • {
  • if(matr[i][j]==-3) matr[i][j]=100;
  • if(matr[i][j]==-2) matr[i][j]=-1;
  • }
  • }
  • for(i=1; i<=30; i++)
  • {
  • construction(matr, ecran, curseurX, curseurY,-1,i);
  • }
  • }
  • if(status=="gagne")
  • {
  • for(i=1; i<=30; i++)
  • {
  • construction(matr, ecran, curseurX, curseurY,1,i);
  • }
  • }
  • if(status != "quitte")
  • {
  • SDL_Event event; bool fin=false;
  • while(!fin)
  • {
  • SDL_WaitEvent(&event);
  • if(event.type == SDL_QUIT) fin=true;
  • }
  • }
  • SDL_Quit();
  • return 1;
  • }
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <string>
#include <iostream>
using namespace std;

# define NBRE_MINES     40

//
//    PROGRAMME POUR OBTENIR UN NOMBRE ALEATOIRE ENTRE 1 ET MAXI
//
int aleat(int maxi)
{
    return 1 + (rand() % maxi);
}

//
//    PROGRAMME DE GESTION DES ACTIONS
//
void execute_action(int (&matr)[21][16], string &status, string action, int a=0, int b=0)
{
    if(action=="drapeau" && matr[a][b]<0)
    {
        if(matr[a][b]==-2 || matr[a][b]==-4) {matr[a][b]++;}
        else {matr[a][b]--;}
        int nbre_drapeaux=0; bool bon_placement=true; int i,j;
        for(i=1; i<=19; i++)
        {
            for(j=1; j<=14; j++)
            {
                switch(matr[i][j])
                {
                    case -4:
                        nbre_drapeaux++;
                        break;
                    case -2:
                        nbre_drapeaux++;
                        bon_placement=false;
                        break;
                }
            } 
        }
        if(nbre_drapeaux==NBRE_MINES && bon_placement) status = "gagne";
        if(nbre_drapeaux==NBRE_MINES && !bon_placement) status = "perdu";
    }

    if(action=="essai" && matr[a][b]==-3)
    {
        status="perdu";
    }

    if(action=="essai" && matr[a][b]==-1)
    {
        int k=0;
        if(matr[a-1][b-1]<=-3) k++;
        if(matr[a-1][b]<=-3) k++;
        if(matr[a-1][b+1]<=-3) k++;
        if(matr[a][b-1]<=-3) k++;
        if(matr[a][b+1]<=-3) k++;
        if(matr[a+1][b-1]<=-3) k++;
        if(matr[a+1][b]<=-3) k++;
        if(matr[a+1][b+1]<=-3) k++;
        matr[a][b]=k;
        if(k==0)
        {
            if(a != 1 && b!= 1) execute_action(matr,status,"essai",a-1,b-1);
            if(a != 1) execute_action(matr,status,"essai",a-1,b);
            if(a != 1 && b != 14) execute_action(matr,status,"essai",a-1,b+1);
            if(b != 1) execute_action(matr,status,"essai",a,b-1);
            if(b != 14) execute_action(matr,status,"essai",a,b+1);
            if(a != 19 && b!= 1) execute_action(matr,status,"essai",a+1,b-1);
            if(a != 19) execute_action(matr,status,"essai",a+1,b);
            if(a != 19 && b != 14) execute_action(matr,status,"essai",a+1,b+1);
        }
    }
}

//
//    PROGRAMME DE GESTION DES EVENEMENTS
//
void gere_even(int (&matr)[21][16], string &status, int &curseurX, int &curseurY)
{
    bool reste = true;
    string action="";
    SDL_Event event;
    while (reste)
    {
        SDL_Delay(5);
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                status="quitte";
                reste=false;
                break;
            case SDL_MOUSEMOTION:
                if(event.button.x>=20 && event.button.x<779 && event.button.y>=20 && event.button.y<579)
                {
                    curseurX = (event.button.x-19)/40 + 1;
                    curseurY = (event.button.y-19)/40 + 1;
                }
                else
                {
                    curseurX = 0; curseurY = 0;
                }
                reste=false;
                break;
            case SDL_MOUSEBUTTONUP:
                switch(event.button.button)
                {
                    case SDL_BUTTON_RIGHT:
                        if(curseurX != 0) execute_action(matr, status, "drapeau", curseurX, curseurY);
                        break;
                    case SDL_BUTTON_LEFT:
                        if(curseurX != 0) execute_action(matr, status, "essai", curseurX, curseurY);
                        break;
                }
                reste=false;
                break;
        }
    }
}


//
//    PROGRAMME DE CONSTRUCTION DE LA FENETRE
//
void construction(int (&matr)[21][16],  SDL_Surface *&ecran ,int &curseurX, int &curseurY, int a, int b)
{
    if(a==0) SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 17, 206, 112));
    if(a==-1) SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 17+(238*b)/30, 206-(206*b)/30, 112-(112*b)/30));
    if(a==1) SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 17+(63*b)/30, 206-(126*b)/30, 112+(143*b)/30));
    SDL_Surface *rectangle;
    SDL_Rect position;
    int i,j;
    for (i=1; i<=14; i++)
    {
        for(j=1; j<=19; j++)
        {
            position.x = 40*j-20;
            position.y = 40*i-20;
            switch(matr[j][i])
            {
                case -4:
                    rectangle = SDL_LoadBMP("bloc_drapeau.bmp");
                    break;
                case -2:
                    rectangle = SDL_LoadBMP("bloc_drapeau.bmp");
                    break;
                case 0:
                    rectangle = SDL_LoadBMP("bloc_0.bmp");
                    break;
                case 1:
                    rectangle = SDL_LoadBMP("bloc_1.bmp");
                    break;
                case 2:
                    rectangle = SDL_LoadBMP("bloc_2.bmp");
                    break;
                case 3:
                    rectangle = SDL_LoadBMP("bloc_3.bmp");
                    break;
                case 4:
                    rectangle = SDL_LoadBMP("bloc_4.bmp");
                    break;
                case 5:
                    rectangle = SDL_LoadBMP("bloc_5.bmp");
                    break;
                case 6:
                    rectangle = SDL_LoadBMP("bloc_6.bmp");
                    break;
                case 7:
                    rectangle = SDL_LoadBMP("bloc_7.bmp");
                    break;
                case 8:
                    rectangle = SDL_LoadBMP("bloc_8.bmp");
                    break;
                case 100:
                    rectangle = SDL_LoadBMP("bloc_erreur.bmp");
                    break;
                default:
                    rectangle = SDL_LoadBMP("bloc_inconnu.bmp");
                    break;
            }
            SDL_BlitSurface(rectangle, NULL, ecran, &position);
            SDL_FreeSurface(rectangle);
        }
    }
    rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 760, 1, 32, 0, 0, 0, 0);
    SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
    position.x=19;
    for(i=1; i<= 15; i++)
    {
        position.y=40*i-21;
        SDL_BlitSurface(rectangle, NULL, ecran, &position);
    }
    rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 1, 560, 32, 0, 0, 0, 0);
    SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
    position.y=19;
    for(i=1; i<= 20; i++)
    {
        position.x=40*i-21;
        SDL_BlitSurface(rectangle, NULL, ecran, &position);
    }

    if(curseurX != 0)
    {
    if(matr[curseurX][curseurY]==-1 || matr[curseurX][curseurY]==-3)
    {
        rectangle = SDL_LoadBMP("bloc_selectionne.bmp");
        position.x = 40*curseurX-20;
        position.y = 40*curseurY-20;
        SDL_BlitSurface(rectangle, NULL, ecran, &position);
        SDL_FreeSurface(rectangle);
    }
    }

    SDL_Flip(ecran);
}

//
//    MAIN
//
int main(int argc, char** argv)
{
    srand(time(NULL));
    SDL_Surface *ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption("Demineur", NULL);
    SDL_WM_SetIcon(SDL_LoadBMP("icone.bmp"), NULL);    
    int matr[21][16]; int i,j,k;                       //Initialisation de MATR, qui contiendra les valeurs
    for(i=0; i<=20; i++)                               //matr[i][j] contiendra l'élément (i,j) sachant que ceux du bord vaudront toujours -1
    {                                                  //   -4   : Pas découvert, Drapeau    , Mine
        for(j=0; j<=15; j++)                           //   -3   : Pas découvert, Pas Drapeau, Mine
        {                                              //   -2   : Pas découvert, Drapeau    , Pas mine
            matr[i][j]=-1;                             //   -1   : Pas découvert, Pas drapeau, Pas mine
        }                                              //   0..8 : Découvert, a proximité il y a 0..8 mines
    }                                                  //   100  : Erreur, une mine !
    for(k=1; k<=NBRE_MINES; k++)                       //
    {                                                  //
        i=aleat(19); j=aleat(14);                      //
        if(matr[i][j] != -3)                           //
        { matr[i][j] = -3;                             //
        cout<<"Mine "<<k<<" posée en ["<<i<<"x"<<j<<"]"<<endl;
        }                                              //
        else                                           //
        { k--; }                                       //
    }                                                  //

    int curseurX=0, curseurY=0;                        //CURSEUR qui contient la donnée en X et Y de la case en cours. OxO : en dehors.
    string status = "en jeu";                          //STATUS, qui donne le status en cours.

    while(status=="en jeu")
    {
        construction(matr, ecran, curseurX, curseurY,0,0);
        gere_even(matr, status, curseurX, curseurY);
    }

if(status=="perdu")
{
    for(i=1; i<=19; i++)
    { 
        for(j=1; j<=14; j++)
        {
            if(matr[i][j]==-3) matr[i][j]=100;
            if(matr[i][j]==-2) matr[i][j]=-1;
        }
    }
    for(i=1; i<=30; i++)
    {
        construction(matr, ecran, curseurX, curseurY,-1,i);
    }
}

if(status=="gagne")
{
    for(i=1; i<=30; i++)
    {
        construction(matr, ecran, curseurX, curseurY,1,i);
    }
}

if(status != "quitte")
{
    SDL_Event event; bool fin=false;
    while(!fin)
    {
        SDL_WaitEvent(&event);
        if(event.type == SDL_QUIT) fin=true;
    }
}

    SDL_Quit();
    return 1;
}

 Conclusion

L'exécutable est renommé en .ex_ à renommer en .exe
Pour le lancer, décompresser la totalité du zip dans un répertoire, seuls les fichiers .dev, .layout et .cpp ne sont pas nécessaires.

 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


 Sources du même auteur

Source avec Zip Source avec une capture [CLIENT TCP/IP AVEC L'API WIN 32] REQUETEUR V2.0

 Sources de la même categorie

Source avec Zip APPLICATION DE DESSIN DE QUELQUES FIGURES par laguchori
Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture IRC CLIENT MULTISERVEUR EN MFC (TXIRC) par TeniX
Source avec Zip ENTETE DU FICHIER BMP (BIPMAP) par k.Lutchi
Source avec Zip Source avec une capture XCOUPE : COUPE 2D par pop70

 Sources en rapport avec celle ci

Source avec Zip HORLOGE EN SDL par PLA
Source avec Zip LIBRAIRIE GRAPHIQUE SDL par PLA
Source avec Zip HORLOGE GRAPHIQUE EN SDL par Snoupy
Source avec Zip QUELQUES FONCTIONS POUR FACILITER LA PRISE EN MAIN DE LA SDL par le_duche
Source avec Zip Source avec une capture EFFET MATRIX EN SDL [CODE EN C] par omer9311

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Librairie graphique et controle... [ par frednet01 ] J'ai un projet personnelle, qui consisterais a déplacer des images (des pions) sur une autre image (une carte) avec différent effet graphique ( smog, initiation interface graphique [ par developvbdebut ] Bonjour tout le mondeApres avoir passé de moi à étudié la language c en mode console,  je souhaiterais m'initier au interface graphique en c.Je souhai Position du curseur. [ par mohdaef ] Bonsoir tout le monde. Je me trouve confronté à un légé soucis. J'utilise la SDL afin de créer une fenêtre initialisée avec OpenGl. J'utilise donc la MASTERMIND (MODE GRAPHIQUE EN SDL) [ par imadonline ] slt tt le monde,je viens de m'initier un peu dans le SDL m&#233; g encor un probl&#233;m avec les sprites et la gestion de clavier,etant donn&#233; ke Recherche d'une source de calculatrice graphique [ par max12 ] Voila je connais l'existence d'une source sur le site m&#234;me, d'une calculatrice avec un affichage graphique tr&#232;s avanc&#233; qui pouvais r&#2 SDL et FPS [ par tazkeum ] Bonjour, Voici un petit code qui ne fait rien d'autre qu'afficher un ecran noir. Le calcul des FPS donne 50 images par secondes. C'est lent pour un P4 comment tester les collisions avec sdl? [ par StrikerFred ] Bonjour, je commence &#224; faire des petits prog en me servant de sdlJ'aimerais juste savoir comment on teste les collisions ? la mani&#232;re plus e SDL getion de souris [ par imadonline ] slt tout le monde,g pa trouv&#233; la ou apprendr la gestion de souri en SDL g besoin de votr aid Message d'erreur de SDL [ par The_Sin ] Salut,J'ai fais un programme en SDL en C, il marche bien mais que je le lance dans un terminal ( je suis sous Ubuntu Linux) &#224; la fermeture je m'a Lire des données puis exploiter sur un graphique [ par Refrigerator ] Bonjour &#224; tous.Dans le cadre de mes TPE, cette ann&#233;e, je dois cr&#233;er un logiciel [langage de programmation au choix] qui permet de lire


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 1,919 sec (3)

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