Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Probleem SDL

Hallo, Ik was een begin aan het maken voor een spelletje in SDL. Volgens mij doe ik geen onmogelijke dingen. Ondanks dat alles prima compileert sluit het programma zodra ik het run. Het lijkt wel alsof hij niet eens main() in gaat omdat de printf statement niet eens wordt uitgevoerd. Wat kan hiervan de oorzaak zijn, ik gebruik Dev-C++. Alvast bedankt, Anne main.cpp [code:1:a4e382604c] #include "graphics.h" #include "input.h" bool running = true; Graphics* window = NULL; Input* input = NULL; void handleKeyboardInput(); int main(int argc, char* args[]) { printf("start "); window = new Graphics(800, 600, "lol"); input = new Input(); while (running) { input->readInput(); if (input->shutDown()) { running = false; } handleKeyboardInput(); window->beginScene(); window->endScene(); } delete window; delete input; return 0; } void handleKeyboardInput() { bool *keys = input->getInput(); } [/code:1:a4e382604c] graphics.h [code:1:a4e382604c] #ifndef GRAPHICS_H #define GRAPHICS_H #include <SDL/SDL.h> class Graphics { public: Graphics(int screenWidth, int screenHeight, const char* title); ~Graphics(); void beginScene(); void endScene(); private: SDL_Surface *screen; }; #endif [/code:1:a4e382604c] graphics.cpp [code:1:a4e382604c] #include "graphics.h" Graphics::Graphics(int screenWidth, int screenHeight, const char* title) { SDL_Init(SDL_INIT_EVERYTHING); screen = SDL_SetVideoMode(screenWidth, screenHeight, 0, SDL_HWSURFACE | SDL_DOUBLEBUF); SDL_WM_SetCaption(title, 0); } Graphics::~Graphics() { SDL_Quit(); } void Graphics::beginScene() { SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); } void Graphics::endScene() { SDL_Flip(screen); } [/code:1:a4e382604c] input.h [code:1:a4e382604c] #ifndef INPUT_H #define INPUT_H #include <SDL/SDL.h> class Input { public: Input(); ~Input(); void readInput(); bool *getInput(); bool shutDown(); private: SDL_Event event; bool keys[323]; bool shutdown; }; #endif [/code:1:a4e382604c] input.cpp [code:1:a4e382604c] #include "input.h" Input::Input() { shutdown = false; for (int i = 0; i < 323; i++) { keys[i] = false; } } Input::~Input() { } void Input::readInput() { if (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { printf("event "); shutdown = true; } if (event.type = SDL_KEYDOWN) { keys[event.key.keysym.sym] = true; if (keys[SDLK_ESCAPE]) { printf("escape "); shutdown = true; } } if (event.type == SDL_KEYUP) { keys[event.key.keysym.sym] = false; } } } bool *Input::getInput() { return keys; } bool Input::shutDown() { return shutdown; } [/code:1:a4e382604c]

anman