The last Quiz from Programming Concepts

This is the Questions about the last Quiz , So . today , i'm here to sharing about that . to increase my score , actually . 

1. When is the right time to use: 

      a. struct       b. pointer/reference      c.function      d.array

2. Write an example that uses combination all of items above.

Answer:
1. a. Struct
  • Struct can be used when we want to store group variables together under one name
  • When we want to allow different variables to be accessed via a single pointer
  • Organizing type for records like the mixed data types in lists of directory entries reading a hard drive or other mixed record type
b. Pointer/reference
  • Pointer can be used when we want to manipulate array and string in C Language that requires the use of pointer
  • We can use pointer for passing variables into functions. This saves memory and runs faster because no duplication of data is needed 
  • You can create dynamic data structures. Instead of claiming the memory up-front, the memory is allocated (from the heap) while the program is running
c. Function
  • Function can be used when we want to simplify coding tasks. We can use functions for small tasks that appear in many parts of the program because one function can appear many times in the codes without having to be rewritten
  • We can use function to avoid code repetition as well
d. Array
  • Array can be used when we want to store a collection of data, but it is often more useful to think of an array as a collection of variables of the same type under one name

2. 

Cara memuat music menggunakan SDL

Pelajaran ini menunjukkan kepada Anda bagaimana menggunakan SDL memuat file gambar GIF. Biasanya, bukannya menampilkan
seluruh gambar, kita hanya perlu "gambar" dalam file gambar, seperti gadis keadilan dalam kasus ini.
Jadi, kita bisa mengatakan program ini, kami hanya ingin menampilkan bagian dari file gambar ini. Untuk melakukan hal ini,
pada awalnya, kita mempersiapkan file gambar dengan gambar di dalamnya. Kemudian kita cat bagian kita tidak perlu
warna putih (RGB = 255255255 atau 0xFFFFFF). Kedua, hanya memberitahu program yang warna
harus diabaikan, yang putih di sini.

Download SDL_mixer di official website .
File musik dalam contoh ini untuk demonstrasi adalah dari Square: Final Fantasy II:

http://en.wikipedia.org/wiki/Final_Fantasy_II

Setup SDL_image into Dev-C++ :

1. Dalam compiler options, tambahkan ini ke linker "-lSDL_mixer"
2. tambah baru C / C ++ termasuk direktori file ke SDL_mixer.h
3. tambah baru perpustakaan direktori untuk SDL_mixer.dll

4. tambah baru "# include" SDL_mixer.h "" dalam kode program Anda

Untuk mendirikan sebuah perpustakaan baru, prosedur semua sangat mirip :)

Program code :


 #include "SDL.h"
#include "SDL_image.h"
#include "SDL_mixer.h"

int FPS = 50;    // Assign a FPS
int NextTick , interval ;

// Initialize FPS_Fn( )
void FPS_Initial(void) {
NextTick = 0 ;
interval = 1 * 1000 / FPS ; 
return;
}

// Frame Per Second Function  , put this in a loop
void FPS_Fn(void) {
if ( NextTick > SDL_GetTicks( ) ) SDL_Delay( NextTick - SDL_GetTicks( ) );
NextTick = SDL_GetTicks( ) + interval ;
return;
}

// This function load a image file to a surface
// Set bCKey with colorkey (R,G,B) to clear a color on the image
// Set alpha value for transparency 0(No transparent) ~ 255(Ivisible)
inline SDL_Surface *ImgLoader(char *file,bool bCKey, int r , int g , int b , int alpha)
{
    SDL_Surface *pic;
    pic = IMG_Load(file); // From SDL_image.h , load the image to pic
    // Log error message into stderr.txt if happened
    if(pic==NULL) fprintf(stderr,"Missing image %s : %s\n",file,IMG_GetError());
    if( bCKey ) {
        // Sets the color key (transparent pixel) in a blittable surface and RLE acceleration.
        SDL_SetColorKey(pic,SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(pic->format,r,g,b));
         }
    if(alpha) SDL_SetAlpha(pic, SDL_SRCALPHA|SDL_RLEACCEL , 255 - alpha);
    pic = SDL_DisplayFormat(pic);
    return (pic);
}

// Load a normal picture into a surface
inline SDL_Surface *ImgLoader(char *file)       
                { return ImgLoader(file,1,0,0,0,0) ; }
// Load a pic & set the transparent color to (255,255,255) , no alpha
inline SDL_Surface *ImgLoader(char *file,bool bCKey)
                { return ImgLoader(file,1,255,255,255,0) ; }


int main(int argc, char *argv[])
{

SDL_Event event;
bool bRun = 1;
int pidx = 0 , aTick = 0;
SDL_Surface *screen ;
enum walk { justice1 , justice2 , justice3 , justice4 
    , justice5 , justice6 , justice_No  };
SDL_Surface *anim[justice_No];
SDL_Rect animRect ;
animRect.x = 160 ;
animRect.y = 160 ;

atexit(SDL_Quit);

if( SDL_Init(SDL_INIT_VIDEO) < 0 ) exit(1);

SDL_WM_SetCaption("SDL Window", NULL);

screen = SDL_SetVideoMode( 400 , 300 , 32 , SDL_DOUBLEBUF|SDL_HWSURFACE|SDL_ANYFORMAT);

anim[0] = ImgLoader("./anim/justice1.gif",1,255,255,255,0);
anim[1] = ImgLoader("./anim/justice2.gif",1,255,255,255,0);
anim[2] = ImgLoader("./anim/justice3.gif",1,255,255,255,0);
anim[3] = ImgLoader("./anim/justice4.gif",1);
anim[4] = ImgLoader("./anim/justice5.gif",1);
anim[5] = ImgLoader("./anim/justice6.gif",1);

FPS_Initial( );

// Inilialize SDL_mixer , exit if fail
if( SDL_Init(SDL_INIT_AUDIO) < 0 ) exit(1);
// Setup audio mode
Mix_OpenAudio(22050,AUDIO_S16SYS,2,640);
Mix_Music *mus , *mus2 ;  // Background Music 
Mix_Chunk *wav , *wav2 ;  // For Sounds
mus = Mix_LoadMUS("./mixer/ff2prlde.mid");
mus2 = Mix_LoadMUS("./mixer/aria.mp3");
wav = Mix_LoadWAV("./mixer/po_p2k.wav");
wav2 = Mix_LoadWAV("./mixer/start.wav");
Mix_PlayMusic(mus,1); //Music loop=1


while(bRun) {
    aTick++;
    SDL_FillRect(screen , NULL , 0x221122);
    SDL_BlitSurface( anim[pidx] , NULL , screen , &animRect );
    SDL_Flip(screen);
    FPS_Fn();
    if( aTick%10 == 0 ) pidx++;
    if(pidx >= justice_No) pidx = 0;
    while( SDL_PollEvent( &event ) ){
        switch( event.type ){
            case SDL_KEYDOWN:
                //use -1 for the first free unreserved channel , 0-> no loop
                Mix_PlayChannel(-1,wav,0); 
                switch( event.key.keysym.sym ){
                    case SDLK_UP:
                        animRect.y = animRect.y - 10;
                        break;
                    case SDLK_DOWN:
                        animRect.y = animRect.y + 10;
                        break;
                    case SDLK_LEFT:
                        animRect.x = animRect.x - 10;
                        break;
                    case SDLK_RIGHT:
                        animRect.x = animRect.x + 10;
                        break;
                    case SDLK_1:
                        Mix_PlayMusic(mus,1); //Music loop=1
                        break;
 
                   case SDLK_2:
                        Mix_PlayMusic(mus2,2); //Music loop=twice
                        break;
                    case SDLK_ESCAPE:
                        bRun = 0 ;
                        break;
                    default:
                        //use -1 for the first free unreserved channel , 0-> no loop
                        Mix_PlayChannel(-1,wav2,0); 
                        break;
                    } // switch( event.key.keysym.sym ){ END
                break; // case SDL_KEYDOWN: END
            case SDL_QUIT:
                bRun = 0;
                break;
            default:
                break;
            } // switch( event.type ){ END
        } // while( SDLK_PollEvent( &event ) ){ END
    }; // while(bRun) { END

Mix_FreeChunk(wav);
Mix_FreeChunk(wav2);
Mix_FreeMusic(mus);
Mix_FreeMusic(mus2);

return 0;
}


Bergerak Sprite Dengan SDL

Setelah saya SDL tutorial pertama, Anda harus memiliki ide yang cukup baik tentang bagaimana untuk mengatur SDL dan menampilkan sebuah gambar pada layar. Langkah logis selanjutnya adalah untuk membaca dari keyboard dan membuat sesuatu bergerak di layar.

Program ini dibangun di atas contoh dari tutorial 1 di beberapa tempat, jadi jika Anda belum membacanya belum, atau jika Anda tidak jelas tentang dasar-dasar SDL, sekarang adalah saat yang tepat untuk pergi check it out.

The Moving Sprite Program


Berikut adalah rincian dari apa yang terjadi di contoh program ini.

1. Program ini dimulai dari seperti contoh pertama, SDL diinisialisasi, jendela dibuat, dll
2. Perbedaan pertama sedang loading sprite, kita tidak hanya mengkonversi sprite ke format tampilan, kami juga menetapkan kunci warna. Ini berarti bahwa apa pun di gambar yang ungu (255, 0, 255), akan diperlakukan sebagai transparan.
3. Program ini kemudian berlanjut seperti sebelumnya. Latar belakang dimuat, dan kita memasuki loop utama.
4. Setelah kita cek untuk acara, kita mendapatkan keadaan saat keyboard dengan SDL_GetKeyState ().  Fungsi ini mengembalikan pointer ke array data yang menggambarkan masing-masing tombol pada keyboard. Jika tombol ditekan, array akan berisi 1, jika tidak maka akan berisi 0.
5. Array keystate kemudian diuji untuk masing-masing tombol panah. Jika salah satu tombol panah ditekan, kita akan bergerak sprite arah itu.
6. Sekarang hal-hal yang bergerak, kita harus menguji untuk melihat apakah kita sudah pindah dari tepi layar. Jika demikian, sprite tersebut akan dipindahkan kembali.
7. Berikutnya untuk loop blits ubin latar belakang seluruh layar.
8. Kemudian sprite digambar di atas latar belakang.
9. Program ini berakhir seperti sebelumnya, kita membebaskan memori untuk permukaan dengan SDL_FreeSurface, dan pembersihan SDL dengan SDL_Quit ().

Simpan file ini sebagai sdlmove.cpp, atau sdlmove.c jika Anda ingin menggunakan lurus C bukan C ++. Anda juga akan membutuhkan file bitmap yang pergi dengan program ini. Mereka tersedia untuk di-download dengan kode sumber di bagian bawah halaman ini.

#include "SDL.h"

#define SCREEN_WIDTH  640
#define SCREEN_HEIGHT 480
#define SPRITE_SIZE    32

int main ( int argc, char *argv[] )
{
  SDL_Surface *screen, *temp, *sprite, *grass;
  SDL_Rect rcSprite, rcGrass;
  SDL_Event event;
  Uint8 *keystate;

  int colorkey, gameover;

  /* initialize SDL */
  SDL_Init(SDL_INIT_VIDEO);

  /* set the title bar */
  SDL_WM_SetCaption("SDL Move", "SDL Move");

  /* create window */
  screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0);

  /* load sprite */
  temp   = SDL_LoadBMP("sprite.bmp");
  sprite = SDL_DisplayFormat(temp);
  SDL_FreeSurface(temp);

  /* setup sprite colorkey and turn on RLE */
  colorkey = SDL_MapRGB(screen->format, 255, 0, 255);
  SDL_SetColorKey(sprite, SDL_SRCCOLORKEY | SDL_RLEACCEL, colorkey);

  /* load grass */
  temp  = SDL_LoadBMP("grass.bmp");
  grass = SDL_DisplayFormat(temp);
  SDL_FreeSurface(temp);

  /* set sprite position */
  rcSprite.x = 0;
  rcSprite.y = 0;

  gameover = 0;

  /* message pump */
  while (!gameover)
  {
    /* look for an event */
    if (SDL_PollEvent(&event)) {
      /* an event was found */
      switch (event.type) {
        /* close button clicked */
        case SDL_QUIT:
          gameover = 1;
          break;

        /* handle the keyboard */
        case SDL_KEYDOWN:
          switch (event.key.keysym.sym) {
            case SDLK_ESCAPE:
            case SDLK_q:
              gameover = 1;
              break;
          }
          break;
      }
    }

    /* handle sprite movement */
    keystate = SDL_GetKeyState(NULL);
    if (keystate[SDLK_LEFT] ) {
      rcSprite.x -= 2;
    }
    if (keystate[SDLK_RIGHT] ) {
      rcSprite.x += 2;
    }
    if (keystate[SDLK_UP] ) {
      rcSprite.y -= 2;
    }
    if (keystate[SDLK_DOWN] ) {
      rcSprite.y += 2;
    }
    /* collide with edges of screen */
    if ( rcSprite.x < 0 ) {
      rcSprite.x = 0;
    }
    else if ( rcSprite.x > SCREEN_WIDTH-SPRITE_SIZE ) {
      rcSprite.x = SCREEN_WIDTH-SPRITE_SIZE;
    }
    if ( rcSprite.y < 0 ) {
      rcSprite.y = 0;
    }
    else if ( rcSprite.y > SCREEN_HEIGHT-SPRITE_SIZE ) {
      rcSprite.y = SCREEN_HEIGHT-SPRITE_SIZE;
    }

    /* draw the grass */
    for (int x = 0; x < SCREEN_WIDTH / SPRITE_SIZE; x++) {
      for (int y = 0; y < SCREEN_HEIGHT / SPRITE_SIZE; y++) {
        rcGrass.x = x * SPRITE_SIZE;
        rcGrass.y = y * SPRITE_SIZE;
        SDL_BlitSurface(grass, NULL, screen, &rcGrass);
      }
    }
    /* draw the sprite */
    SDL_BlitSurface(sprite, NULL, screen, &rcSprite);

    /* update the screen */
    SDL_UpdateRect(screen, 0, 0, 0, 0);
  }

  /* clean up */
  SDL_FreeSurface(sprite);
  SDL_FreeSurface(grass);
  SDL_Quit();

  return 0;
}

Catatan, tidak ada memeriksa dalam program ini kesalahan. Jika sesuatu gagal, akan sulit untuk melacak. Aku ditinggalkan kesalahan memeriksa hanya untuk membuat program yang lebih pendek dan lebih mudah untuk mengikuti. Dalam program nyata Anda harus memeriksa kembali nilai-nilai dari semua fungsi panggilan SDL.

Compiling


Di Linux Anda dapat mengkompilasi program ini dengan mengetikkan perintah ini:

g++ sdlmove.cpp `sdl-config --cflags --libs` -o sdlmove
lalu jalankan programmnya 
./sdlmove
Jika semuanya bekerja dengan benar, window 640x480 harus membuka dengan bidang rumput dan sprite kecil yang Anda dapat bergerak dengan keyboard .
dalam Visual C++ anda harus mengikuti steps berikut :
1.buat sebuah empty folder Windows Application Project .
2.Tambahkan "sdltest.cpp" file untuk project anda.
3. Pada menu klik Project, kemudian Properties.
4. Double-klik "Konfigurasi Properties".
5. Double-klik  "C / C ++".
6. Klik "Kode Generation".
7. Ganti "Runtime Library" untuk "multi-threaded DLL".
8. Klik-ganda "Linker".
9. Klik "Input".
10. Selain "Dependensi Tambahan", ketik "sdl.lib sdlmain.lib".

 Anda harus dapat menekan F7 untuk membangun program.
Sebelum kita dapat menjalankan program, Anda harus menempatkan "SDL.dll" file mana Windows dapat menemukannya. Menyalin file dari "C: \ Program Files \ SDL-1.2.9" untuk Visual C ++ folder proyek baru Anda. Jika program anda dikompilasi tanpa kesalahan, Anda sekarang dapat menekan F5 untuk menjalankan program.

memulai dengan SDL


SDL adalah Simple DirectMedia Layer. Dari homepage SDL - "Simple DirectMedia Layer adalah perpustakaan multimedia cross-platform yang dirancang untuk menyediakan akses tingkat audio, keyboard, mouse, joystick, 3D hardware melalui OpenGL, dan video yang framebuffer 2D." Selain SDL Homepage, Anda juga dapat melihat Dokumentasi Wiki SDL untuk dokumentasi API.

Untuk memulai menggunakan SDL, pertama-tama Anda harus mendownload beberapa file dari http://www.libsdl.org/download-1.2.php. Jika Anda menggunakan Windows, yang Anda butuhkan adalah paket pengembangan. Sebagai menulis tutorial ini, file yang bernama SDL-devel-1.2.9-VC6.zip. Download file ini dan unzip ke folder, saya ingin menggunakan "C: \ Program Files \ SDL-1.2.9". Sekarang bahwa Anda telah menginstal paket pengembangan, dokumentasi tersedia di "C: \ Program Files \ SDL-1.2.9 \ docs \ index.html".

Jika Anda menggunakan Linux, Anda baik dapat menginstal perpustakaan sesuai dan paket pengembangan menggunakan RPM atau Debs, atau Anda dapat membuat sendiri dengan men-download sumber dari sini dan membangun paket sesuai dengan instruksi mereka.
Setelah Anda download dan menginstal file pembangunan di Linux, Anda siap untuk memulai kompilasi program. Pada Windows, ada beberapa langkah untuk melakukan:

1. Buka Visual C ++ kemudian pergi ke Tools, Options.
2. Klik dua kali "Projects danSolutions".
3. Klik "VC++ Directories".
4. Di bawah "Tampilkan direktori untuk:" pilih "Include files".
5. Tambahkan path "C:\Program Files\SDL-1.2.9\include" .
6. Di bawah "Tampilkan direktori untuk:" pilih "file Lib".
7. tambahkan "C: \ Program Files \ SDL-1.2.9 \ lib".

Anda sekarang siap untuk mengkompilasi program SDL pertama Anda.


Program pertama anda dengan SDL

Berikut adalah rincian dari apa yang terjadi dalam program sampel.

1. Pertama, kita initialize sistem video SDL dengan SDL_Init ().
2. Berikutnya, kita menetapkan judul untuk jendela aplikasi kita.
3. Kemudian kita membuat jendela dan mendapatkan pointer ke permukaan dengan SDL_SetVideoMode ().
4. Gambar latar belakang dimuat pada permukaan sementara.
5. SDL_DisplayFormat () membuat copy dari permukaan sementara menggunakan yang sama bit mendalam sebagai permukaan layar. Hal ini akan mempercepat rendering.
6. Memori untuk permukaan sementara dibebaskan dengan panggilan untuk SDL_FreeSurface ().
7. Sekarang kita memasuki "loop utama" dari program. Di sini kita memeriksa kejadian dan kemudian memperbarui layar.
8. Ketika pengguna menekan ESC atau 'q', kami mengakhiri "loop utama"
9. Sebelum program berakhir kita membebaskan memori untuk permukaan background dengan SDL_FreeSurface, dan pembersihan SDL dengan SDL_Quit ().
#include "SDL.h"

int main ( int argc, char *argv[] )
{
  /* initialize SDL */
  SDL_Init(SDL_INIT_VIDEO);

  /* set the title bar */
  SDL_WM_SetCaption("SDL Test", "SDL Test");

  /* create window */
  SDL_Surface* screen = SDL_SetVideoMode(640, 480, 0, 0);

  /* load bitmap to temp surface */
  SDL_Surface* temp = SDL_LoadBMP("sdl_logo.bmp");

  /* convert bitmap to display format */
  SDL_Surface* bg = SDL_DisplayFormat(temp);

  /* free the temp surface */
  SDL_FreeSurface(temp);

  SDL_Event event;
  int gameover = 0;

  /* message pump */
  while (!gameover)
  {
    /* look for an event */
    if (SDL_PollEvent(&event)) {
      /* an event was found */
      switch (event.type) {
        /* close button clicked */
        case SDL_QUIT:
          gameover = 1;
          break;

        /* handle the keyboard */
        case SDL_KEYDOWN:
          switch (event.key.keysym.sym) {
            case SDLK_ESCAPE:
            case SDLK_q:
              gameover = 1;
              break;
          }
          break;
      }
    }

    /* draw the background */
    SDL_BlitSurface(bg, NULL, screen, NULL);

    /* update the screen */
    SDL_UpdateRect(screen, 0, 0, 0, 0);
  }

  /* free the background surface */
  SDL_FreeSurface(bg);

  /* cleanup SDL */
  SDL_Quit();

  return 0;
}

Simpan file ini sebagai sdltest.cpp, atau sdltest.c jika Anda ingin menggunakan lurus C bukan C ++. Anda juga harus file bitmap yang terjadi dengan program ini. Ini tersedia untuk di-download dengan kode sumber di bagian bawah halaman ini.

Catatan, tidak ada memeriksa dalam program ini kesalahan. Jika sesuatu gagal, akan sulit untuk melacak. Aku ditinggalkan kesalahan memeriksa hanya untuk membuat program yang lebih pendek dan lebih mudah untuk mengikuti. Dalam program nyata Anda harus memeriksa kembali nilai-nilai dari semua fungsi panggilan SDL.


Compiling

Di Linux Anda dapat mengkompilasi program ini dengan mengetikkan perintah ini:

Jika semuanya bekerja dengan benar, window 640x480 harus membuka dan menampilkan logo SDL. Dalam Visual C ++ Anda harus mengikuti langkah-langkah:

1. buat project baru di Windows Application Project .
2. tambahkan  "sdltest.cpp" file untuk project anda.
3. Pada menu klik Project, kemudian Properties.
4. klik dua kali pada "Configuration Properties".
5. klik dua kali pada "C/C++".
6. klik "Code Generation".
7. Ganti "Runtime Library" untuk "Multi-threaded DLL".
8. klik dua kali pada "linker".
9.klik "input".
10. Selain "Additional Dependencies" , type "sdl.lib sdlmain.lib".
g++ sdltest.cpp `sdl-config --cflags --libs` -o sdltest
kemudian jalankan 
./sdltest
 Anda harus dapat menekan F7 untuk membangun program.
Sebelum kita dapat menjalankan program, Anda harus menempatkan "SDL.dll" file mana Windows dapat menemukannya. Menyalin file dari "C: \ Program Files \ SDL-1.2.9" untuk Visual C ++ folder proyek baru Anda. Jika program Anda mengkompilasi tanpa kesalahan, Anda sekarang dapat menekan F5 untuk menjalankan program.

cara memasukkan gambar menggunakan sdl

memasukkan gambar menggunakan sdl


jadi , gimana cara masukkin gambar menggunakan sdl? , caranya cukup mudah dan singkat guys . saya akan menunjukkan cara ini agar kalian tidak menggunakan bitmap (BMP) yang ukuran filenya terlalu besar dan tidak mendukung transparansi alpha , dan untuk mulai menggunakan format file lainnya seperti PNG , dll . 

hal pertama yang perlu anda lakukan adalah mendownload SDL_image , versi terbaru dari website utama .  anda juga dapat mengambil file ini dari perpustakaan SDL dan anda dapat membuat segalanya menjadi lebih mudah XD .

Mulailah dengan membuka project anda , dan dibawah akan ada pengaturan linker . Tambahkan SDL_image setelah SDLmain seperti ini :

mingw32
SDLmain
SDL_image
SDL

pertama , buka CSurface.h , sehingga kita dapat mencakup file header tambahan :

#ifndef _CSURFACE_H_
    #define _CSURFACE_H_
 
#include <SDL.h>
#include <SDL_image.h>


Setelah itu semua dilakukan, buka CSurface.cpp dan cari fungsi onload. kode yang terlihat saat ini adalah :

SDL_Surface* CSurface::OnLoad(char* File) {
    SDL_Surface* Surf_Temp = NULL;
    SDL_Surface* Surf_Return = NULL;
 
    if((Surf_Temp = SDL_LoadBMP(File)) == NULL) {
        return NULL;
    }
 
    Surf_Return = SDL_DisplayFormat(Surf_Temp);
    SDL_FreeSurface(Surf_Temp);
 
    return Surf_Return;
}


Ada dua perubahan untuk membuat ini, yang pertama adalah mengubah SDL_LoadBMP untuk IMG_Load. Yang kedua adalah mengubah SDL_DisplayFormat untuk SDL_DisplayFormatAlpha. Ingat Saya mengatakan BMP tidak mendukung lapisan alpha? Nah, PNGs lakukan! Dan jika Anda ingin menjaga lapisan alpha Anda harus menggunakan SDL_DisplayFormatAlpha bukan SDL_DisplayFormat. Jadi, kode kita akan terlihat seperti ini sekarang:


SDL_Surface* CSurface::OnLoad(char* File) {
    SDL_Surface* Surf_Temp = NULL;
    SDL_Surface* Surf_Return = NULL;
 
    if((Surf_Temp = IMG_Load(File)) == NULL) {
        return NULL;
    }
 
    Surf_Return = SDL_DisplayFormatAlpha(Surf_Temp);
    SDL_FreeSurface(Surf_Temp);
 
    return Surf_Return;
}
Akhirnya, jangan lupa untuk mengubah nama file yang Test Permukaan sedang mencoba untuk memuat di CApp_OnInit.cpp:

if((Surf_Test = CSurface::OnLoad("myimage.png")) == NULL) {
    return false;
}



Dan kita selesai! Saya bilang itu akan singkat. Coba kompilasi, dan mencoba format file yang berbeda. Beberapa format umum yang didukung oleh SDL_image adalah:

BMP
GIF
PNG
JGP
PCX
TIF
dan lainnya ...