hi there, I am trying to create a pong game but I can't get my paddles to move. This is my code, the error should be somewhere here:
void Movement()
{
bool GameOver = false;
while(!GameOver)
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
GameOver == true;
running = false;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP:
if(paddle1Y > head1->h+20)
{
paddle1X--;
}
break;
case SDLK_DOWN:
if(paddle1Y < screen->h-10)
{
paddle1Y++;
}
break;
case SDLK_ESCAPE:
GameOver== true;
break;
}
break;
}
SDL_Flip(screen);
}
}
}
as soon as I call this function, input is ignoredm I don't know why. this is the full source if needed:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
using namespace std;
void CreateImage(SDL_Surface *dialog, int x, int y);
void LoadSurfaces();
void StartGame();
void Movement();
SDL_Surface *head1, *head2, *dialog, *screen, *background;
SDL_Surface *newgame1, *newgame2, *highscores1, *highscores2, *changechar1, *changechar2;
SDL_Surface *paddle1, *paddle2;
int paddle1X = 200, paddle1Y = 450, paddle2X = 600, paddle2Y = 450;
bool running = true;
int main(int argc, char *argv[])
{
//Initiate SDL
if((SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0)
{
cout<< "Error Initiating SDL\n";
}
atexit(SDL_Quit);
//Create the screen surface
screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
if(screen == NULL)
{
cout<< "Error setting video mode 640x480\n";
return -1;
}
int highlight = 1;
//Load Surfaces
LoadSurfaces();
CreateImage(background, 0, 0);
CreateImage(head1, 10, 10);
CreateImage(head2, 580, 10);
CreateImage(dialog, 10, 320);
CreateImage(newgame2, 250, 50);
CreateImage(highscores1, 250, 100);
CreateImage(changechar1, 250, 150);
while(running)
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
running = false;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
running = false;
break;
case SDLK_UP:
if(highlight > 1){highlight--;}
break;
case SDLK_DOWN:
if(highlight < 3){highlight++;}
break;
case SDLK_RETURN:
if(highlight == 1)
StartGame();
break;
}
break;
}
switch(highlight)
{
case 1:
CreateImage(newgame2, 250, 50);
CreateImage(highscores1, 250, 100);
CreateImage(changechar1, 250, 150);
break;
case 2:
CreateImage(newgame1, 250, 50);
CreateImage(highscores2, 250, 100);
CreateImage(changechar1, 250, 150);
break;
case 3:
CreateImage(newgame1, 250, 50);
CreateImage(highscores1, 250, 100);
CreateImage(changechar2, 250, 150);
break;
}
SDL_Flip(screen);
}
}
return 0;
}
void CreateImage(SDL_Surface *image, int x, int y)
{
SDL_Rect field;
field.x = x;
field.y = y;
SDL_BlitSurface(image, NULL, screen, &field);
}
void LoadSurfaces()
{
head1 = SDL_LoadBMP("heads.bmp");
head2 = SDL_LoadBMP("heads.bmp");
dialog = SDL_LoadBMP("dialog.bmp");
background = SDL_LoadBMP("background.bmp");
newgame1 = SDL_LoadBMP("newgame1.bmp");
newgame2 = SDL_LoadBMP("newgame2.bmp");
highscores1 = SDL_LoadBMP("highscores1.bmp");
highscores2 = SDL_LoadBMP("highscores2.bmp");
changechar1 = SDL_LoadBMP("changechar1.bmp");
changechar2 = SDL_LoadBMP("changechar2.bmp");
paddle1 = SDL_LoadBMP("paddle.bmp");
paddle2 = SDL_LoadBMP("paddle.bmp");
}
void StartGame()
{
CreateImage(paddle1, paddle1X, paddle1Y);
CreateImage(paddle2, paddle2X, paddle2Y);
Movement();
}
void Movement()
{
bool GameOver = false;
while(!GameOver)
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
GameOver == true;
running = false;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP:
if(paddle1Y > head1->h+20)
{
paddle1X--;
}
break;
case SDLK_DOWN:
if(paddle1Y < screen->h-10)
{
paddle1Y++;
}
break;
case SDLK_ESCAPE:
GameOver== true;
break;
}
break;
}
SDL_Flip(screen);
}
}
}
hope anyone can help me out,
Joshua