我正在构建一个游戏,我得到一个编译错误apply_surface was not declared in this scope.
,错误在第 95 行,在函数中User::show()
。
编辑:现在它已经确定,图像“baz”没有出现在屏幕上。抱歉编辑。
/*This source code copyrighted by Lazy Foo' Productions (2004-2013)
and may not be redistributed without written permission.*/
//The headers
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include <string>
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;
SDL_Surface *baz = NULL;
SDL_Event event;
void cleanup()
{
SDL_FreeSurface(background);
SDL_FreeSurface(screen);
SDL_FreeSurface(baz);
SDL_Quit;
}
bool quit = false;
class User
{
private:
SDL_Surface *baz = NULL;
SDL_Surface *screen = NULL;
int x;
int y;
int xVel;
int yVel;
public:
void keys();
void move();
void show();
void user();
};
void User::keys()
{
while(quit == false)
if(SDL_PollEvent(&event))
{
if( event.type == SDL_QUIT )
quit = true;
}
Uint8 *keystates = SDL_GetKeyState(NULL);
if(keystates[SDLK_d] )
{
User::xVel+=50;
}
if(keystates[SDLK_a])
{
User::xVel-=50;
}
if(keystates[SDLK_s])
{
User::yVel+=50;
}
if(keystates[SDLK_w])
{
User::yVel-=50;
}
if(keystates[SDLK_ESCAPE])
{
cleanup();
}
}
void User::user()
{
x = 0;
y = 0;
xVel = 0;
yVel = 0;
}
void User::move()
{
x+=xVel;
y+=yVel;
x-=xVel;
}
void User::show()
{
apply_surface(x,y,baz,screen);
SDL_Flip( screen );
}
void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination )
{ //Temporary rectangle to hold the offsets
SDL_Rect offset;
//Get the offsets
offset.x = x;
offset.y = y; //Blit the surface
SDL_BlitSurface( source, NULL, destination, &offset );
}
int main( int argc, char* argv[])
{
SDL_Init(SDL_INIT_EVERYTHING);
screen = SDL_SetVideoMode(640,400,32,SDL_SWSURFACE);
background = IMG_Load("background.png");
baz = IMG_Load("baz.png");
apply_surface(0,0,background,screen);
SDL_Flip(screen);
while( quit == false )
{
User Baz;
Baz.user();
Baz.keys();
Baz.move();
Baz.show();
if(quit == true)
{
cleanup();
}
}
return 0;
}