Bonjour, je pensais enfin pouvoir commencer mon projet pour de vrai, mais je suis tombé sur une erreur que je n'arrive même pas à comprendre pourquoi elle est là Oo
Voici le code concerné:
Events.h:
Events.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #pragma once #include "..\Header.h" class Events { protected: char key[SDLK_LAST]; int mousex,mousey; int mousexrel,mouseyrel; char mousebuttons[8]; char quit; Events(); ~Events(){} public: void updateEvents(); inline char& Key(int i){return key[i];} inline int MouseX(){return mousex;} inline int MouseY(){return mousey;} inline int MouseXrel(){return mousexrel;} inline int MouseYrel(){return mouseyrel;} inline int MouseButton(int i){return mousebuttons[i];} inline int Quit(){return quit;} };
Game.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #include "Events.h" Events::Events(void) { memset(this,0,sizeof(*this)); } void Events::updateEvents(){ SDL_Event event; mousebuttons[SDL_BUTTON_WHEELUP] = 0; mousebuttons[SDL_BUTTON_WHEELDOWN] = 0; while(SDL_PollEvent(&event)) { fprintf(stderr,"1"); switch (event.type) { case SDL_KEYDOWN: fprintf(stderr,"2"); key[event.key.keysym.sym]=1; break; case SDL_KEYUP: key[event.key.keysym.sym]=0; break; case SDL_MOUSEMOTION: mousex=event.motion.x; mousey=event.motion.y; mousexrel=event.motion.xrel; mouseyrel=event.motion.yrel; break; case SDL_MOUSEBUTTONDOWN: mousebuttons[event.button.button]=1; break; case SDL_MOUSEBUTTONUP: if (event.button.button!=SDL_BUTTON_WHEELUP && event.button.button!=SDL_BUTTON_WHEELDOWN) mousebuttons[event.button.button]=0; break; case SDL_QUIT: quit = 1; break; default: break; } } }
MenuGame.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #pragma once #include "..\Header.h" #include "Events.h" class View : public Events { #define WIDTH_TILE 51 #define HEIGHT_TILE 51 #define WINDOWS_WIDTH 1000 #define WINDOWS_HEIGHT 800 #define WINDOWS_BPP 32 protected: SDL_Surface *m_screen; View(); ~View(); };
MenuGame.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include "..\Base\Modules\Observer_Observable\Observer.h" #include "Game.h" #include "..\Base\Modules\Thread\Thread.h" class ControlMenu; class Observable; class MenuGame : public View, public Observer, public Thread { private: ControlMenu *m_control; public: MenuGame(ControlMenu *control); void Setup(); void Execute(void*); void update(Observable*); };
Le programme ce lance ainsi : MenuGame est un Thread, sa fonction principale est composé de Setup qui s'occupe d'envoyer les premier paramètre pour l'affichage, suivit de la fonction Run que vous avez sous les yeux, si vous voulez je peut rajouter le module Thread.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #include "MenuGame.h" #include "..\Model\MenuModel.h" #include "..\Control\ControlMenu.h" MenuGame::MenuGame(ControlMenu *control) : m_control(control) { } void MenuGame::update(Observable *model){ MenuModel *menu = dynamic_cast<MenuModel*>(model); SDL_BlitSurface(menu->getBackground(),NULL,View::m_screen,NULL); SDL_BlitSurface(menu->getCursor(),NULL,View::m_screen,&menu->getPositionCursor()); } void MenuGame::Setup(){ m_control->assitSetup(); } void MenuGame::Execute(void*){ bool continuer= true; while(continuer){ this->updateEvents(); if (Key(SDL_QUIT)){ continuer=false; } } }
Et quand j’exécute mon programme le fichier stderr contient 1111, ce qui signifie qu'il est entré 4 fois dans la boucle de PolEvent ce qui devrai être possible uniquement si il y a un évènement en attente, hors ce résultat est le même que je martel les touches ou que je ne touche à rien oO
Quelqu'un aurait une idée de mon problème?
Merci d'avance
Partager