Bonjour à tous.
Je suis en train de faire un Bomberman avec SDL (pour un projet scolaire) et j'ai déjà un petit soucis quand je crée une fenêtre.
Enfaite, mon programme se lance, crée la fenêtre, la rempli de couleur etc, mais elle plante directe après (Bomberman.exe ne répond pas blabla blabla). Je poste mon code.
main.cpp
Engine.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <iostream> #include <vector> #include "SDL.h" #include "Engine.h" #include "Position.h" #include "Map.h" #include "Bonus.h" #include "Block.h" #include "Bomb.h" #include "Fire.h" #include "Player.h" #include "Enum.h" using namespace std; int main(int argc, char *argv[]) { Engine engine; Position position_a, position_b(10,20), position_c(46,27), position_d(3,1), position_b2(10,20), position_f(1,1), posMap(160, 60); Map map; Block b1(map.getThisMap(), position_b), b2(map.getThisMap(), position_d), b3(map.getThisMap(), position_d), b4(map.getThisMap(), position_c); Block b5(map.getThisMap(), position_d), b6(map.getThisMap(), position_d); Bomb bomb1(map.getPlayers()[0]->getThisPlayer()), bomb2(map.getPlayers()[1]->getThisPlayer()); Fire fire1(bomb2.getThisBomb()); Player p1(map.getThisMap(), 4); Position test(1,1); SDL_Surface* screen = engine.initWin(); engine.colorSurface(screen, 100, 200, 75); SDL_Surface* rectangle = engine.initSurface(480, 480, 32); engine.blitSurface(rectangle, screen, posMap); engine.refreshWin(screen); engine.waitWin(); engine.freeSurface(rectangle); engine.quitWin(); return 0; }
Voilà, merci d'avance à ceux qui m'aideront ^^
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 #include "Engine.h" Engine::Engine() { } Engine::~Engine() { } //action SDL_Surface* Engine::initWin() { SDL_Surface* screen; if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) == -1) { fprintf(stderr, "Error load SDL : %s\n", SDL_GetError()); exit(EXIT_FAILURE); } screen = SDL_SetVideoMode(WIN_WIDTH, WIN_HEIGHT, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); if (screen == NULL) { fprintf(stderr, "Error load video mode : %s\n", SDL_GetError()); exit(EXIT_FAILURE); } SDL_WM_SetCaption("Bomberman", NULL); return screen; } void Engine::quitWin() { SDL_Quit(); } void Engine::waitWin() { int wait=1; SDL_Event event; SDL_WaitEvent(&event); while (wait) { switch(event.type) { case SDL_QUIT: wait = 0; } } } void Engine::refreshWin(SDL_Surface* _screen) { SDL_Flip(_screen); } SDL_Surface* Engine::initSurface(uint _width, uint _height, uint _color) { SDL_Surface* surface; surface = SDL_CreateRGBSurface(SDL_HWSURFACE, _width, _height, _color, 0, 0, 0, 0); return surface; } void Engine::blitSurface(SDL_Surface* _surface, SDL_Surface* _ecran, Position _position) { SDL_Rect position; position.x = _position.getX(); position.y = _position.getY(); SDL_BlitSurface(_surface, NULL, _ecran, &position); } void Engine::colorSurface(SDL_Surface* _surface, uint _r, uint _g, uint _b) { SDL_FillRect(_surface, NULL, SDL_MapRGB(_surface->format, _r, _g, _b)); } void Engine::freeSurface(SDL_Surface* _surface) { SDL_FreeSurface(_surface); }
Partager