c++ SDL runtime errors
Hej jag får skumma runtime errors med mitt första försök till Pong i SDL. Har googlat runt lite på anledningar men hittar inte mycket. Så det får bli ytterligare en tråd.
Just nu är alla Runtime errors borta men "Paddlarna" visas inte på skärmen. Tänkte fråga om någon vet något.
Vet att jag programmerat på Svengelska men ni får leva med det hehe....
Här är main.cpp
#include <iostream>
#include <SDL.h>
#include <SDL_ttf.h>
#include <SDL_Image.h>
#include "paddle.h"
#define FPS 30
using namespace std;
SDL_Surface * screen;
SDL_Event event;
Uint32 start;
bool keys[256];
bool fullscreen = false;
bool running = true;
bool init();
int main(int argc,char** argv)
{
if((!init())){SDL_Quit(); return 0;}
paddle paddle1(1);
paddle paddle2(2);
while(running)
{
start = SDL_GetTicks();
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
running = false;
break;
case SDL_KEYUP:
keys[event.key.keysym.sym] = false;
break;
case SDL_KEYDOWN:
if(event.key.keysym.sym == SDLK_f){fullscreen = (!fullscreen);}
if(event.key.keysym.sym == SDLK_ESCAPE){running = false; break;}
keys[event.key.keysym.sym] = true;
break;
}
}
if(keys[SDLK_w]){cout << "W IS DOWN" << endl; paddle1.Up();}
else if(keys[SDLK_s]){cout << "S IS DOWN" << endl; paddle1.Down();}
if(keys[SDLK_UP]){cout << "ARROWUP IS DOWN" << endl;paddle2.Up();}
else if(keys[SDLK_DOWN]){cout << "ARROWDOWN IS DOWN" << endl; paddle2.Down();}
if(fullscreen){screen = SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);}else{screen = SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUBLEBUF);}
SDL_FillRect(screen,NULL,NULL);
paddle1.Blit();
paddle2.Blit();
SDL_Flip(screen);
if(1000/FPS > SDL_GetTicks() - start){SDL_Delay(1000/FPS - (SDL_GetTicks() - start));}
}
SDL_Quit();
return 0;
}
bool init(){
if(SDL_Init(SDL_INIT_EVERYTHING) == -1){
std::cout << "Could not initialize sdl" << std::endl;
return false;
}
std::cout << "SDL initilized" << std::endl;
screen = SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
if(screen == NULL){
std::cout << "Could not setup screen" << std::endl;
return false;
}
std::cout << "Screen is setup" << std::endl;
if(TTF_Init() == -1){
std::cout << "Could not initialize ttf" << std::endl;
return false;
}
std::cout << "TTF initilized" << std::endl;
SDL_WM_SetCaption("Pong",NULL);
return true;
}
Här är paddle.h
#pragma once
#include <iostream>
#include <SDL.h>
#include <SDL_ttf.h>
#include <SDL_Image.h>
#include "global_functions.h"
class paddle
{
public:
paddle(short nr);
~paddle(void);
void Up();
void Down();
void Blit();
private:
int YVel;
SDL_Surface * image;
SDL_Rect box;
};
Här är paddle.cpp
#include "paddle.h"
paddle::paddle(short nr)
{
global_functions f;
image = f.Load_Image("paddle.jpg");
image->refcount++;
YVel = 5;
box.w = image->w;
box.h = image->h;
box.y = SDL_GetVideoSurface()->h/2 - box.h/2;
switch(nr)
{
case 1:
box.x = 0;
break;
case 2:
box.x = SDL_GetVideoSurface()->w - box.w;
break;
}
}
void paddle::Up()
{
box.y-=YVel;
}
void paddle::Down()
{
box.y+=YVel;
}
void paddle::Blit()
{
SDL_BlitSurface(image,NULL,SDL_GetVideoSurface(),&box);
}
paddle::~paddle(void)
{
SDL_FreeSurface(image);
}
| i5 2500k | h100 | Evga 580 | Fractal Design arc | Asrock P67 Fatal1ty | Hx1050w | 24" BenQ | 16GB Vengeance Ram | Razer DeathAdder | Razer Carcharias | Razer Arctosa |