#26 Le 05/11/2006, à 11:13
- Bogoris
Re : [Résolu] Problème avec la compilation de Code::Blocks
Ah ouais toohardforyou j'avais aussi essayé de l'ouvrir avec Code::Blocks mais j'avais pas réussi
Je pense que de toute manière faut faire ça avec le Makefile...
Il me semble que j'allais dire une connerie... lol
J'allais te demander si tu avais connu le projet sur le Site du Zéro, mais c'est toi le créateur de 2H4U, non ?
Hors ligne
#27 Le 05/11/2006, à 14:08
- Piwaï[INSA]
Re : [Résolu] Problème avec la compilation de Code::Blocks
Tout à fait . Il t'a plus ?
C'est une des choses qui m'a motivé à passer sous Linux, pour tester le jeu en fait. Rmk, j'ai essayé de le faire fonctionner sous Mac, mais chui jamais passé sous Mac :s ... Lol ptet que ca coute un poil trop cher .
J'espère qu'ils vont pas trop tarder pour la version stable de Code::Blocks...
Sinon, j'ai remarqué que dans mon projet cdb, j'ai inclu les lib sdl au projet sous windows, en indiquant des chemins absolus. Je suppose qu'il faut les changer, mais faut que je regarde quoi mettre à la place...
http://www.piwai.info
Découvrez 2H4U (Too Hard For You) : http://www.sourceforge.net/projects/toohardforyou
et OpenGF : http://www.sourceforge.net/projects/opengf
Hors ligne
#28 Le 05/11/2006, à 18:57
- Bogoris
Re : [Résolu] Problème avec la compilation de Code::Blocks
Tout à fait . Il t'a plus ?
Bah en fait j'ai désespérément essayé de le faire fonctionner sous Linux mais je sais pas vraiment compiler en console (sauf les pilotes de mon modem ).
C'est vrai que j'aurais pû essayer de l'installer sous Windows mais j'essayais de me désolidariser un max de Windows donc...
Mais le fait que tu aies toi aussi Ubuntu fait que je ne désespère pas de l'essayer un jour sous Linux .
Dernière modification par Bogoris (Le 05/11/2006, à 18:58)
Hors ligne
#29 Le 07/11/2006, à 23:36
- zedtux
Re : [Résolu] Problème avec la compilation de Code::Blocks
Ben je l'aime bien ton jeu Piwaï[INSA] mais dommage que l'on puisse pas changer la config clavier... car j'avais un clavier qwerty, et j'avais séléctionné azerty... du coup pour jouer...
mais sinon, nikel !
RECOLLER VOS FICHIERS XTM AVEC TUXTREMSPLIT !!
Adhérant April numéro 4985 [Rejoindre l'April moi aussi !].
Hors ligne
#30 Le 08/11/2006, à 13:46
- Piwaï[INSA]
Re : [Résolu] Problème avec la compilation de Code::Blocks
Donc, quelques réponses, qui ont peu de rapport avec le sujet original de ce post :
1) Pour le compiler sous Linux, il suffit d'aller avec un terminal dans le dossier /scripts de 2H4U, puis de taper make.
Normalement le makefile doit se charger de tout.
http://www.piwai.info
Découvrez 2H4U (Too Hard For You) : http://www.sourceforge.net/projects/toohardforyou
et OpenGF : http://www.sourceforge.net/projects/opengf
Hors ligne
#31 Le 09/11/2006, à 19:32
- Bogoris
Re : [Résolu] Problème avec la compilation de Code::Blocks
Donc, quelques réponses, qui ont peu de rapport avec le sujet original de ce post :
1) Pour le compiler sous Linux, il suffit d'aller avec un terminal dans le dossier /scripts de 2H4U, puis de taper make.
Normalement le makefile doit se charger de tout.
Ah okay...
En fait moi je trouvais pas l'exécutable qui était en fait dans le dossier racine... (je l'avais pas vu ^^).
Donc en fait ton jeu est très sympa.
Il manque juste une petite chose selon moi : pouvoir tourner les pièces (dommage pour un casse-briques).
Sinon, je trouvais déjà le concept de mélanger un tétris et un casse-brique novateur, mais en plus la réalisation est vraiment pas mal (les carrés grisés et tout, quoique pour les carrés, j'ai pas compris tout de suite parce que je m'attendait à ce qu'ils disparraisent ).
Je viens de finir mon premier essai :
- Score : 18790
- Niveau : 1
- Lignes à faire (c'est quoi ?) : 10
- Lignes : 10
Sinon la musique est sympa aussi, qui l'a faite ?
Bogoris
PS: deuxième partie : je viens de comprendre pourquoi les cases étaient grisées plutôt que de disparaître...
PPS: Ah mais si en fait, on peut tourner les blocs... {révélation de l'année 2006}
PPPS: Comment tu fais en SDL pour savoir quand quelqu'un appuie simultanément sur deux touches ?
PPPPS: 3ème partie, score : 236780, niveau: 10, ligne à faire: 1, lignes: 154.
Le docteur Kamawashi t'as pas appelé pour le mettre dans son programme d'entraînement célébral ? Sur Nintendo DS ça doit déchirer 8)
Encore félicitations à toi, ça a dû te demander énormément de travail tout ça o_O
Dernière modification par Bogoris (Le 09/11/2006, à 20:10)
Hors ligne
#32 Le 14/11/2006, à 13:51
- Piwaï[INSA]
Re : [Résolu] Problème avec la compilation de Code::Blocks
-> MERCI
Effectivement, on peut faire tourner les pièces lol. On peut les faire descendre plus vite (s), voir meme les faire descendre d'un coup (espace). Les fichiers d'aide, ca sert .
La musique, elle vient directement d'un site de téléchargement de musiques libres.
Lignes à faire, c'est le nombre de lignes restant à faire pour passer au niveau suivant.
Lol, les cases sont grisées, pour permettre de continuer à faire des lignes avec le Tetris. Une ligne remplie de cases grisées (ou vides) est détruite.
Pour la SDL, j'ai une pile d'évenements, je la vide à chaque tour de boucle. Il suffit de voir comment fonctionne la SDL (cf les excellents tutos du site du zéro : www.siteduzero.com).
Voila, bonne continuation. Un jour, peut-etre, 2H4U existera en réseau... Quand j'aurai du temps, et des cours de réseau...
http://www.piwai.info
Découvrez 2H4U (Too Hard For You) : http://www.sourceforge.net/projects/toohardforyou
et OpenGF : http://www.sourceforge.net/projects/opengf
Hors ligne
#33 Le 14/11/2006, à 18:36
- Bogoris
Re : [Résolu] Problème avec la compilation de Code::Blocks
On devrait peut-être créer un autre sujet sur ce superbe jeu pour continuer à en parler parce que là je crois qu'on a trop dérivé... (j'ose pas le créer vu que c'est ton jeu ). Remarques peut-être qu'il existe déjà un topic sur ubuntu-fr.org ?
Une pile d'évènement donc ?
Je me demandais comment tu faisais ça mais j'ai ma petite idée...
Moi en fait je fais un switch avec des break; pour gérer les évènements.
Or toi tu dois faire une structure avec des if à la suite, et même pas des elseif, je me tompe ?
@+
Bogoris
Hors ligne
#34 Le 16/11/2006, à 16:26
- ssderrthu
Re : [Résolu] Problème avec la compilation de Code::Blocks
Et pour en faire un paquage deb ??? Comment faire ??
Car le recompiler sous edgy 64, ca me saoul
Quand tu créer un paquet, tu compiles de toute manière, sauf qu'à la place de l'installer dans ton système de fichier, tu l'installes dans un paquet.
#35 Le 17/11/2006, à 10:12
- Piwaï[INSA]
Re : [Résolu] Problème avec la compilation de Code::Blocks
Voici en gros le code pour la pile d'évenements :
SDL_Event event;
while ( SDL_PollEvent( &event ) )
{
switch ( event.type )
{
case SDL_KEYDOWN:
//Une touche est enfoncée
KeyDown( event.key.keysym.sym );
break;
case SDL_KEYUP:
//Une touche est relachée
KeyUp( event.key.keysym.sym );
break;
case SDL_QUIT:
m_bQuit = true;
break;
//Si on minimize la fenêtre, le jeu passera en pause.
case SDL_ACTIVEEVENT:
if ( (event.active.state & SDL_APPACTIVE) || (event.active.state & SDL_APPINPUTFOCUS)) {
if ( event.active.gain ) {
m_bMinimized = false;
WindowActive();
} else {
m_bMinimized = true;
WindowInactive();
}
}
break;
}
}
Donc c'est bien un switch, mais dans un while qui vide la pile d'évenements.
Sinon, j'essayerai bien de faire un paquet pour ubuntu, jvai chercher de la doc la dessus , ca doit po etre bien compliqué...
@++
Piwaï
http://www.piwai.info
Découvrez 2H4U (Too Hard For You) : http://www.sourceforge.net/projects/toohardforyou
et OpenGF : http://www.sourceforge.net/projects/opengf
Hors ligne
#36 Le 17/11/2006, à 17:23
- Bogoris
Re : [Résolu] Problème avec la compilation de Code::Blocks
Donc c'est bien un switch, mais dans un while qui vide la pile d'évenements.
Hum... pourquoi vider la pile d'évènements ? Ça sert à quoi ?
Et ça peut marcher aussi avec un SDL_wait_event() ?
Mais en fait, la pile d'évènements, c'est quoi ?
Un truc que toi tu as inventé ? Tu stockes des trucs dans des variables ?
Merci encore et merci d'avance .
Dernière modification par Bogoris (Le 17/11/2006, à 17:23)
Hors ligne
#37 Le 18/11/2006, à 17:17
- Piwaï[INSA]
Re : [Résolu] Problème avec la compilation de Code::Blocks
En fait, une pile c'est... Et bien, comme une pile d'assiettes.
Je ne sais plus s'il s'agit ici d'une pile ou d'une queue (en fait c'est ptet plutot une queue), mais voici le principe en gros
Mon programme s'effectue dans une boucle.
A chaque tour de boucle, je dois traiter tous les évènements extérieurs qui agissent sur le programme : quelqu'un appuie sur une touche, ferme la fenêtre, minimise la fenêtre, bouge la souris...
Donc, dès qu'un tel évènement se produit, le système d'exploitation l'ajoute à la queue d'évenements. Ensuite, avec SDL_PollEvent, je vide la queue, message par message.
Exemple : entre 2 tour de boucle, l'utilisateur a appuyé sur 1 touche, puis minimisé la fenetre. J'ai donc 2 évenements dans ma queue. Quand je fais poll event la première fois, je récupère l'évenement touche enfoncée. Puis quand je le fais la 2e fois, je récupère la fenetre minimisée. Et ainsi de suite jusqu'a ce qu'il n'y ai plus d'évenements a traiter, d'ou le while ..
J'espère avoir bien expliqué... Sinon, une petite recherche sur Wiki devrait te permettre d'en apprendre plus sur les piles et les queues d'évenements.
http://www.piwai.info
Découvrez 2H4U (Too Hard For You) : http://www.sourceforge.net/projects/toohardforyou
et OpenGF : http://www.sourceforge.net/projects/opengf
Hors ligne
#38 Le 18/11/2006, à 20:45
- Bogoris
Re : [Résolu] Problème avec la compilation de Code::Blocks
Merci des informations... je crois que je commence à comprendre .
J'ai regardé les différences entre SDL_WaitEvent et SDL_PollEvent dans la documentation française téléchargeable et en fait SDL_WaitEvent() consiste à attendre un évenement (d'où le nom ^^) alors que SDL_PollEvent(), c'est questionner la file d'évènements.
J'ai donc fait ce petit code là :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
int main(int argc, char *argv[])
{
long const SCREEN_WIDTH = 400;
long const SCREEN_HEIGHT = 300;
if (SDL_Init(SDL_INIT_VIDEO) == -1) // Démarrage de la SDL. Si erreur alors...
{
fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError()); // Ecriture de l'erreur
exit(EXIT_FAILURE); // On quitte le programme
}
// Titre de la fenêtre
SDL_WM_SetCaption("Ma super fenêtre SDL !", NULL);
// Ouverture du mode vidéo et création de la surface "ecran"
SDL_Surface *ecran = NULL; // Le pointeur qui va stocker la surface de l'écran
ecran = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
if (ecran == NULL) // Si l'ouverture a échoué, on écrit l'erreur et on arrête
{
fprintf(stderr, "Impossible de charger le mode vidéo : %s\nq", SDL_GetError());
exit(EXIT_FAILURE);
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 122, 50));
// Fond
SDL_Surface *fond = NULL;
fond = SDL_CreateRGBSurface(SDL_HWSURFACE, SCREEN_WIDTH, SCREEN_HEIGHT, 32, 0, 0, 0, 0);
SDL_FillRect(fond, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_Rect position_fond;
position_fond.x = 0;
position_fond.y = 0;
// Zozor
SDL_Surface *zozor = NULL;
zozor = SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
SDL_Rect position_zozor;
position_zozor.x = 0;
position_zozor.y = 0;
// Déplacer Zozor
typedef struct DeplacerZozor DeplacerZozor;
struct DeplacerZozor
{
int haut;
int droite;
int bas;
int gauche;
};
// Initialisation des variables
DeplacerZozor AuClavier;
AuClavier.haut = 0;
AuClavier.droite = 0;
AuClavier.bas = 0;
AuClavier.gauche = 0;
// Répétition des touches
SDL_EnableKeyRepeat(10, 10);
int continuer = 1;
SDL_Event event;
while (continuer)
{
// On attend tous les évènements, on les enregistre
while (SDL_PollEvent(&event)) /* Récupèration de l'évènement dans event */
{
switch(event.type) /* Test du type d'évènement */
{
case SDL_QUIT: /* Si c'est un évènement de type "Quitter" */
continuer = 0;
break;
case SDL_KEYDOWN: /* Si appui d'une touche */
switch (event.key.keysym.sym)
{
case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
continuer = 0;
break;
case SDLK_UP:
if (position_zozor.y > 0)
{
AuClavier.haut = 1;
}
break;
case SDLK_DOWN:
AuClavier.bas = 1;
break;
case SDLK_LEFT:
if (position_zozor.x > 0)
{
AuClavier.gauche = 1;
}
break;
case SDLK_RIGHT:
AuClavier.droite = 1;
break;
default:
break;
}
break;
default:
break;
}
}
// On traite les évènements
if (AuClavier.haut)
position_zozor.y--;
if (AuClavier.droite)
position_zozor.x++;
if (AuClavier.bas)
position_zozor.y++;
if (AuClavier.gauche)
position_zozor.x--;
// On nettoie les évènements
AuClavier.haut = 0;
AuClavier.droite = 0;
AuClavier.bas = 0;
AuClavier.gauche = 0;
SDL_BlitSurface(fond, NULL, ecran, &position_fond);
SDL_BlitSurface(zozor, NULL, ecran, &position_zozor);
SDL_Flip(ecran);
}
SDL_FreeSurface(zozor);
SDL_FreeSurface(fond);
SDL_Quit();
return EXIT_SUCCESS;
}
Mais en fait, tout ce qu'il fait ça fait pareil, à savoir : Zozor ne peut pas bouger en diagonale.
Mais je pense que ça doit venir du fait que toi tu ne sort de la boucle qu'au bout d'un certain temps (genre 500 milisecondes) grâce au temps géré par la SDL.
Je me trompe ?
Hors ligne
#39 Le 18/11/2006, à 21:15
- Piwaï[INSA]
Re : [Résolu] Problème avec la compilation de Code::Blocks
Hum. Je ne crois pas.
Honetement je ne sais pas trop quoi te dire.
Essaie d'enlever le EnableKeyRepeat(10,10) au début,
tu enlève aussi la partie "// On nettoie les évènements".
Enfin, après : case SDL_KEYDOWN: /* Si appui d'une touche */
Tu ajoute une section :
case SDL_KEYUP: /* Si relache une touche */
Dans laquelle tu gère les évenements de touche relachée.
Comme ca, tant qu'on laisse une touche enfoncée, le personnage avancera.
Après, il faudra en plus définir une vitesse de déplacement, dépendant du temps, au lieu des x++,y++,x-- et y--....
Mais tu ferais mieux de poser ces questions sur les forums sdz
http://www.piwai.info
Découvrez 2H4U (Too Hard For You) : http://www.sourceforge.net/projects/toohardforyou
et OpenGF : http://www.sourceforge.net/projects/opengf
Hors ligne
#40 Le 18/11/2006, à 22:07
- Bogoris
Re : [Résolu] Problème avec la compilation de Code::Blocks
C'est bon, j'ai tout compris, merci beaucoup.
Donc je peux faire avec SDL_PollEvent, ici, sans la gestion de la vitesse (car j'ai pas encore appris à maîtriser le temps avec la SDL), et du coup, la vitesse doit dépendre de l'ordi ^^ :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
int main(int argc, char *argv[])
{
long const SCREEN_WIDTH = 400;
long const SCREEN_HEIGHT = 300;
if (SDL_Init(SDL_INIT_VIDEO) == -1) // Démarrage de la SDL. Si erreur alors...
{
fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError()); // Ecriture de l'erreur
exit(EXIT_FAILURE); // On quitte le programme
}
// Titre de la fenêtre
SDL_WM_SetCaption("Ma super fenêtre SDL !", NULL);
// Ouverture du mode vidéo et création de la surface "ecran"
SDL_Surface *ecran = NULL; // Le pointeur qui va stocker la surface de l'écran
ecran = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
if (ecran == NULL) // Si l'ouverture a échoué, on écrit l'erreur et on arrête
{
fprintf(stderr, "Impossible de charger le mode vidéo : %s\nq", SDL_GetError());
exit(EXIT_FAILURE);
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 122, 50));
// Fond
SDL_Surface *fond = NULL;
fond = SDL_CreateRGBSurface(SDL_HWSURFACE, SCREEN_WIDTH, SCREEN_HEIGHT, 32, 0, 0, 0, 0);
SDL_FillRect(fond, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_Rect position_fond;
position_fond.x = 0;
position_fond.y = 0;
// Zozor
SDL_Surface *zozor = NULL;
zozor = SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
SDL_Rect position_zozor;
position_zozor.x = 0;
position_zozor.y = 0;
// Déplacer Zozor
typedef struct DeplacerZozor DeplacerZozor;
struct DeplacerZozor
{
int haut;
int droite;
int bas;
int gauche;
};
// Initialisation des variables
DeplacerZozor AuClavier;
AuClavier.haut = 0;
AuClavier.droite = 0;
AuClavier.bas = 0;
AuClavier.gauche = 0;
int continuer = 1;
SDL_Event event;
while (continuer)
{
// On attend tous les évènements, on les enregistre
while (SDL_PollEvent(&event)) /* Récupèration de l'évènement dans event */
{
switch(event.type) /* Test du type d'évènement */
{
case SDL_QUIT: /* Si c'est un évènement de type "Quitter" */
continuer = 0;
break;
case SDL_KEYUP:
switch (event.key.keysym.sym)
{
case SDLK_UP:
AuClavier.haut = 0;
break;
case SDLK_DOWN:
AuClavier.bas = 0;
break;
case SDLK_LEFT:
AuClavier.gauche = 0;
break;
case SDLK_RIGHT:
AuClavier.droite = 0;
break;
default:
break;
}
break;
case SDL_KEYDOWN: /* Si appui d'une touche */
switch (event.key.keysym.sym)
{
case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
continuer = 0;
break;
case SDLK_UP:
if (position_zozor.y > 0)
{
AuClavier.bas = 0;
AuClavier.haut = 1;
}
break;
case SDLK_DOWN:
AuClavier.haut = 0;
AuClavier.bas = 1;
break;
case SDLK_LEFT:
if (position_zozor.x > 0)
{
AuClavier.droite = 0;
AuClavier.gauche = 1;
}
break;
case SDLK_RIGHT:
AuClavier.gauche = 0;
AuClavier.droite = 1;
break;
default:
break;
}
break;
default:
break;
}
}
// On traite les évènements
if (AuClavier.haut)
position_zozor.y--;
if (AuClavier.droite)
position_zozor.x++;
if (AuClavier.bas)
position_zozor.y++;
if (AuClavier.gauche)
position_zozor.x--;
SDL_BlitSurface(fond, NULL, ecran, &position_fond);
SDL_BlitSurface(zozor, NULL, ecran, &position_zozor);
SDL_Flip(ecran);
}
SDL_FreeSurface(zozor);
SDL_FreeSurface(fond);
SDL_Quit();
return EXIT_SUCCESS;
}
Ou alors, autre possibilité : avec SDL_WaitEvent() : dans ce cas là, je garde la répétition des touches car si je ne la mets pas, Zozor n'avance plus après avoir avancé de son premier pixel dans une direction car il ne se passe plus d'évènements une fois la touche enfoncée (il faudrait alors la ré-enfoncer) :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
int main(int argc, char *argv[])
{
long const SCREEN_WIDTH = 400;
long const SCREEN_HEIGHT = 300;
if (SDL_Init(SDL_INIT_VIDEO) == -1) // Démarrage de la SDL. Si erreur alors...
{
fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError()); // Ecriture de l'erreur
exit(EXIT_FAILURE); // On quitte le programme
}
// Titre de la fenêtre
SDL_WM_SetCaption("Ma super fenêtre SDL !", NULL);
// Ouverture du mode vidéo et création de la surface "ecran"
SDL_Surface *ecran = NULL; // Le pointeur qui va stocker la surface de l'écran
ecran = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
if (ecran == NULL) // Si l'ouverture a échoué, on écrit l'erreur et on arrête
{
fprintf(stderr, "Impossible de charger le mode vidéo : %s\nq", SDL_GetError());
exit(EXIT_FAILURE);
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 122, 50));
// Fond
SDL_Surface *fond = NULL;
fond = SDL_CreateRGBSurface(SDL_HWSURFACE, SCREEN_WIDTH, SCREEN_HEIGHT, 32, 0, 0, 0, 0);
SDL_FillRect(fond, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_Rect position_fond;
position_fond.x = 0;
position_fond.y = 0;
// Zozor
SDL_Surface *zozor = NULL;
zozor = SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
SDL_Rect position_zozor;
position_zozor.x = 0;
position_zozor.y = 0;
// Déplacer Zozor
typedef struct DeplacerZozor DeplacerZozor;
struct DeplacerZozor
{
int haut;
int droite;
int bas;
int gauche;
};
// Initialisation des variables
DeplacerZozor AuClavier;
AuClavier.haut = 0;
AuClavier.droite = 0;
AuClavier.bas = 0;
AuClavier.gauche = 0;
int continuer = 1;
SDL_Event event;
// Répétition des touches
SDL_EnableKeyRepeat(10, 10);
while (continuer)
{
// On attend tous les évènements, on les enregistre
SDL_WaitEvent(&event); /* Récupèration de l'évènement dans event */
switch(event.type) /* Test du type d'évènement */
{
case SDL_QUIT: /* Si c'est un évènement de type "Quitter" */
continuer = 0;
break;
case SDL_KEYUP:
switch (event.key.keysym.sym)
{
case SDLK_UP:
AuClavier.haut = 0;
break;
case SDLK_DOWN:
AuClavier.bas = 0;
break;
case SDLK_LEFT:
AuClavier.gauche = 0;
break;
case SDLK_RIGHT:
AuClavier.droite = 0;
break;
default:
break;
}
break;
case SDL_KEYDOWN: /* Si appui d'une touche */
switch (event.key.keysym.sym)
{
case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
continuer = 0;
break;
case SDLK_UP:
if (position_zozor.y > 0)
{
AuClavier.bas = 0;
AuClavier.haut = 1;
}
break;
case SDLK_DOWN:
AuClavier.haut = 0;
AuClavier.bas = 1;
break;
case SDLK_LEFT:
if (position_zozor.x > 0)
{
AuClavier.droite = 0;
AuClavier.gauche = 1;
}
break;
case SDLK_RIGHT:
AuClavier.gauche = 0;
AuClavier.droite = 1;
break;
default:
break;
}
break;
default:
break;
}
// On traite les évènements
if (AuClavier.haut)
position_zozor.y--;
if (AuClavier.droite)
position_zozor.x++;
if (AuClavier.bas)
position_zozor.y++;
if (AuClavier.gauche)
position_zozor.x--;
SDL_BlitSurface(fond, NULL, ecran, &position_fond);
SDL_BlitSurface(zozor, NULL, ecran, &position_zozor);
SDL_Flip(ecran);
}
SDL_FreeSurface(zozor);
SDL_FreeSurface(fond);
SDL_Quit();
return EXIT_SUCCESS;
}
Et là la vitesse de départ dépend de SDL_KEY_REPEAT.
Bon bah c'est bon j'ai plus de question, merci beaucoup pour ton aide .
Mais tu ferais mieux de poser ces questions sur les forums sdz
C'est bien vrai .
Merci encore
Hors ligne
#41 Le 18/11/2006, à 22:41
- Piwaï[INSA]
Re : [Résolu] Problème avec la compilation de Code::Blocks
De rien
Sinon, j'ai un prob avec Code::blocks sous Linux: j'ai créé un nouveau projet (un autre mini jeu sdl), j'ai tout bien fait et tout, il m'ouvre bien les fichiers, mais le seul qu'il affiche, c'est main.c. Autrement dit, quand j'ouvre les autres, il me les ouvre comme s'il n'y avait rien dedans. Cependant, quand je lui demande de compiler, tout passe niquel (rmk, c'est indépendant, il utilise GCC). Ce qui est bizarre, c'est qu'il ne m'affiche que main.c, alors que celui ci se trouve dans le meme dossier que les autres, et j'ai vérifié dans le fichier xml monprojet.cpb, main.c est ajouté de la meme manière que les autres... bizarre...
Dernière modification par Piwaï[INSA] (Le 18/11/2006, à 22:43)
http://www.piwai.info
Découvrez 2H4U (Too Hard For You) : http://www.sourceforge.net/projects/toohardforyou
et OpenGF : http://www.sourceforge.net/projects/opengf
Hors ligne
#42 Le 19/11/2006, à 09:14
- Bogoris
Re : [Résolu] Problème avec la compilation de Code::Blocks
Étrange...
Faudrait peut-être aller demander tout ça sur les forums de Code::Blocks .
Hors ligne