begin process at 2010 02 10 17:34:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

affichage jeu mémory en sdl!!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

affichage jeu mémory en sdl!!!

mardi 30 décembre 2008 à 15:31:42 | affichage jeu mémory en sdl!!!

snakers07

bonjour, on m'a conseillé de mettre un nouveau post pour avoir de l'aide!!!
 voila mon probleme,
je viens de programmer le jeu du mémory, mais en langage c, donc l'affichage se fait sur la console de windows, maintenant j'aurai voulu y apporter quelques améliorations... c'est a dire de creer un nouvelle affichage pour rendre le jeu plus attrayant, pour cela je veux utiliser la SDL, j'ai déja creer mon fond de départ, avec une grille de 6X6 de cartes retournées, aisnsi que la gestion du curseur par le clavier, mais aprés je bloque, je ne sais pas comment faire le lien entre le programme en langage c qui représente le jeu, et  la  sdl qui repérsente l'aficchage? quelquun pourrait-il m'aider? merci d'avance pour vos réponse!!! je post mes codes



/*code affichage par la SDL!!!!!*/


/* declaration des bibliothéques*/

#include<SDL/SDL.h>
#include<stdlib.h>
#include<stdio.h>
#include <time.h>

/* declaration des variables*/

SDL_Rect dest;
SDL_Surface *ecran;
SDL_Surface *fond;
SDL_Surface *curseur;
SDL_Rect positioncurseur;
SDL_Event event;
int continuer = 1;
int x,y;

/* ddebut prog*/


/* affichage grille*/

void affichage_cartes_dos()
{
for(y=0;y<6;y++){
for(x=0;x<6;x++){
       dest.x=152*x;
       dest.y=112*y;
         SDL_BlitSurface(fond,NULL,ecran,&dest);
                    }
               }    
SDL_UpdateRect(ecran,0,0,0,0);
}



/* initialisation SDL*/
void initSDL()
{
///////////////////intialisation//////////////////////

if (SDL_Init(SDL_INIT_VIDEO)<0)
{

printf("erreur initiallisation SDL: %s",SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
ecran = SDL_SetVideoMode (900,800,24,SDL_SWSURFACE |SDL_DOUBLEBUF);
if (ecran==NULL)
{
printf("erreur initiallisation ecran: %s",SDL_GetError());
exit(2);
}
}

/* chargement images*/

void chargementimages()
{
fond=SDL_LoadBMP("carte_dos.bmp");
curseur=SDL_LoadBMP("curseur.bmp");
}
/* gestion deplacement curseur*/



int curseurdep()
{

 int i,j;

  
positioncurseur.x = 112;
positioncurseur.y = 72;

SDL_SetColorKey(curseur, SDL_SRCCOLORKEY, SDL_MapRGB(curseur->format, 0, 0, 0));
/* Transparence Alpha moyenne (128) : */
SDL_SetAlpha(curseur, SDL_SRCALPHA, 255);
 while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                switch(event.key.keysym.sym)
                {
                    case SDLK_UP: // Flèche haut
                        positioncurseur.y=positioncurseur.y-112;
                        break;
                    case SDLK_DOWN: // Flèche bas
                        positioncurseur.y=positioncurseur.y+112;
                        break;
                    case SDLK_RIGHT: // Flèche droite
                        positioncurseur.x=positioncurseur.x+152;
                        break;
                    case SDLK_LEFT: // Flèche gauche
                        positioncurseur.x=positioncurseur.x-152;
                        break;
                 case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
                 continuer = 0;
                 break; 
                }
        }

       if (positioncurseur.x==0)
       {
             positioncurseur.x=872;
       }

        if (positioncurseur.x>=880)
       {
             positioncurseur.x=112;
       }
         if (positioncurseur.y==0)
       {
             positioncurseur.y=632;
       }
         if (positioncurseur.y>=672)
       {
                  positioncurseur.y=72;
       }
  
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        affichage_cartes_dos();
       SDL_BlitSurface(curseur, NULL, ecran, &positioncurseur);
       SDL_Flip(ecran);
        SDL_UpdateRect(ecran,0,0,0,0);

    }
   return (positioncurseur.x,positioncurseur.y);
}

/* là normalement j'aurai du implanter une fonction qui représenterai le fonctionnement du jeu, que j'ai fait grâce à mon programe en langage C, mai je ne vois pas comment faire!!! d'ou mon post :) */

int main(int argc, char *argv[])

    initSDL();
    chargementimages();
    curseurdep();
    return 0;
}





mercredi 31 décembre 2008 à 13:34:37 | Re : affichage jeu mémory en sdl!!!

faucheuse

Si j'ai bien compris il n'y aucune erreur dans ton programme ...
Tout d'abord je te conseille vivement de lire le tutorial du SDZ (de M@teo) ici :
http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html#part_14186
Il est tres complet et tres facile a comprendre.

Mais si j'ai bien compris ton probleme tu veux savoir ou mettre ton code C dans tous ce code SDL : tu dois le mettre dasn ta boucle d'attente (celle qui commence par while(continuer).
Cette boucle scrupte les evenements, comme tu le sais surement, comme appui d'une touche etc etc ...
Imaginons que lorsque tu appui sur entrée tu montre une carte, tu la garde en mémoire, puis une deuxieme fois alors a la deuxieme fois tu lance le programme qui va vérifier les deux cartes. C'est a l'evenement "appui sur la touche entree" que tu met ce programme.

J'ai l'empression de m'embrouiller ^^', j'espere t'avoir aider.


Cette discussion est classée dans : ecran, affichage, curseur, sdl, positioncurseur


Répondre à ce message

Sujets en rapport avec ce message

Affichage d'Ecran EGA ou VGA [ par ldm001 ] Quelqu'un n'aurait-il pas au fond de son PC des API pour afficher des écran EGA ou VGA ainsi que du texte sous DOS à l'aide de Microsoft C6 ( et oui i Affichage d'une image a l'ecran [ par cbiron ] Je travaille initialement en C, je dispose d'une image codée en RGB dans un buffer et je veux l'afficher a l ecran.Pouvez vous me dire comment creer u probleme de souris en plein ecran [ par Adeon ] Adeon j'ai un probleme, des que je passe mes jeux en plein ecran j'ai le curseur de la souris qui est creer et ca me gache mes b Affichage d'un fond + de petits tiles avec SDL [ par cyberlewis ] Slt à tous,Qui peut m'aider la dessus svp ?Vla j'ai un blem, j'arrive afficher une image de fond avec SDL,et aussi un tile, même plusieurs ...Mais j'a SDL : comment rafraichir l'ecran? [ par smilandfly ] Bonsoir'je viens de mettre sous sdl (que je viens de decouvrir) mon awale programmé en C++ en mode texte.J'ai 2 problemes qui ne sont sans doute pas t SDL pb d'affichage en plein écran avec SDL_HWSURFACE [ par jfleouf ] Bonjour tout le monde,j'ai un petit pb d'affichage dans mon appli SDL.J'utilise la technique de la surface temporaire comme décrit ici : http://jihane AFFICHAGE ecran virtuel [ par istdasklar ] Hello tous le monde! Je viens de passer a la programmation sous windows! Avant j etais sous DOS. Pour faire des graphiques j utilise GetDC. Je voudrai (SDL) Affichage d'une map = plantage [ par MRick571 ] Bonjour j'essai de coder un petit moteur 2d pour afficher une map RPG mon code est constituer comme cela :CObjet||----CTile||----CSpriteJ'initialise u OPENGL_PB_AFFICHAGE [ par Sugata ] Bonjour,je developpe une librairie en OpenGL me permettant d'afficher des objets dans une même fenetre principale mais en repartissant chacun d'entre [C et Ncurses] Déplacement de curseur et Insertion de texte [ par gulix ] Dans le cadre d'un projet, je dois développer un éditeur de texte de type Vi. Pour cela, j'utilise la bibliothèque ncurses. J'arrive ainsi à gérer san


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 (4)

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