int Init(App* app) { // Inicializar SDL if(SDL_Init(SDL_INIT_VIDEO) != 0) // Verificar se a SDL inicializou return 1; // Criar Janela app->window = SDL_CreateWindow(WINDOW_TITLE, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WINDOW_WIDTH, WINDOW_HEIGHT, 0); if(!app->window) { // Verificar se a janela foi criada printf("Error creating window : %s", SDL_GetError()); return 2; } // Criar renderizador app->renderer = SDL_CreateRenderer(app->window, -1, 0); if(!app->renderer) { printf("Error creating window renderer : %s\n", SDL_GetError()); return 3; } // Carregar imagens app->resources.images.player = LoadIMG("player.png", app->renderer); app->resources.images.ground = LoadIMG("ground.png", app->renderer); app->resources.images.platform = LoadIMG("platform.png", app->renderer); // Passa a imagem da struct resources.images para a struct player (acho que dá para perceber). app->player.texture = &app->resources.images.player; // "Rectangulo" em volta da imagem do player app->player.box.x = (WINDOW_WIDTH + PLAYER_WIDTH) / 2; // Posição do retangulo do jogador no eixo de X app->player.box.y = WINDOW_HEIGHT - GROUND_HEIGHT - PLAYER_HEIGHT; // Posição do retangulo do jogador no eixo de Y app->player.box.w = PLAYER_WIDTH; // Largura do retangulo do jogador app->player.box.h = PLAYER_HEIGHT; // Altura do retangulo do jogador app->player.vel.x = 0; // Velocidade do jogador no eixo do X app->player.vel.y = 0; // Velocidade do jogador no eixo do Y app->player.jumping = 0; // "Velocidade" do salto do jogador // Passa a imagem da struct resources para a ground app->ground.texture = &app->resources.images.ground; // Contador do "chão" app->ground.count = GROUND_COUNT; // Alocar memória para o "retangulo" do "chão" (visto que não será desenhado um a um ?) app->ground.box = malloc(sizeof(SDL_Rect) * app->ground.count); for (int i = 0; i < app->ground.count; ++i) { app->ground.box[i].x = 0 + (i * GROUND_WIDTH); app->ground.box[i].y = WINDOW_HEIGHT - GROUND_HEIGHT; app->ground.box[i].w = GROUND_WIDTH; app->ground.box[i].h = GROUND_HEIGHT; } app->platform.texture = &app->resources.images.platform; app->platform.box = NULL; app->platform.count = 0; return 0; }
int main(int argc, char **argv) { LCUI_Widget *window; /* 载入图像资源 */ LoadIMG(); /* 初始化LCUI */ LCUI_Init(350,280,0); /* 创建窗口 */ window = Widget_New("window"); /* 设置窗口背景色 */ Widget_SetBackgroundColor( window, RGB(255,255,255) ); /* 调整窗口尺寸 */ Widget_Resize( window, Size(320, 240) ); /* 设置窗口为线条边框风格 */ Widget_SetStyleID( window, WINDOW_STYLE_NONE ); /* 将界面创建至窗口内 */ CreateGUI( window ); /* 设置定时器,用于定时更新时间显示 */ LCUITimer_Set( 1000, UpdateTimeView, NULL, TRUE ); /* 设置定时器,用于更新滑块的位置 */ LCUITimer_Set( 20, PicBtn_UpdatePos, NULL, TRUE ); /* 显示窗口 */ Widget_Show( window ); /* 在LCUI退出时释放图像资源 */ LCUIApp_AtQuit( FreeIMG ); return LCUI_Main(); }
Resource* SDL_Surface_Image::LoadPNG(File* file) { #ifdef USE_LIBPNG // if supports Image_libpng addon std::vector<SDL_Surface*> vect; Image_libpng::load_png(file, vect); if(vect.empty()) { return 0; } return new SDL_Surface_Image(vect); #else return LoadIMG(file); #endif }
void initBRETT() { BRETT_SURFACE = LoadIMG(DATADIR "gfx/characters/brett.png"); }
void initKILLERBLUUME() { KBLUM_SURFACE[0] = LoadIMG(DATADIR "gfx/characters/pirnaha1.png"); KBLUM_SURFACE[1] = LoadIMG(DATADIR "gfx/characters/pirnaha2.png"); }