begin process at 2010 02 09 22:27:18
  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 Source avec une capture VIEWER COMPLET POUR LE TRAITEMENT DE L'IMAGE : IMANALYSE par Pistol_Pete
Source avec Zip DECOUPAGE DE SPRITES par Jackyzgood
Source avec Zip Source avec une capture SIMULATION DE LA DIFFUSION THERMIQUE par ncoder
Source avec Zip Source avec une capture Source .NET (Dotnet) TRANSFORMÉ DE FOURIER RAPIDE EN TRAITEMENT D'IMAGE par reyken
Source avec Zip Source avec une capture 2D GAME DIRECT X 9 par nanonavich

 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 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 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 probléme de linker "SDL" [ par yoshiv ] Bonjour, bonsoir. J'ai un probléme avec un exercice (morpion en SDL) [u]mon system[/u]: vista. visual c++ express 2008. Le code ou il y a le probléme C++ interface graphique [ par maohacker ] Salut a tous je suis un programmeur C ki sinitie au C++ et je voudrai savoir kel environement me conseillez vous? PS: jutilise Dev Cpp problème sdl [ par gameditor ] Je ne sait pas me servir de codes::bloks pour la sdl et à ton besoin d'apprendre le c++ qu'est qu'un code sources[^^choc][^^confus2][^^confus2][^^conf moteur physique [ par Jackyzgood ] Bonjour à tous ! J'essaye actuellement de créer une fonction qui me gère des trajectoires simple dans un champ de pesanteur avec rebond. Mon problème [HELP] Créer une fenêtre GUI de forme personnalisé avec SDL [ par etoileastrale ] Bonjour, je souhaite en utilisant la bibliothèque SDL et VC++ 2008 pour créer une fenêtre non pas carré comme d'habitude mais de forme personnalisé. tablette graphique wacom bamboo alterner mode souris / stylet Code por gerer la tablette? [ par gregroar ] Bonjour voilà mon probleme: je souhaiterais pouvoir gerer moi meme les réglages de ma tablette graphique et recupérer notemment les clics gauche et le


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,608 sec (3)

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