Getting started with C programming - Example game (with SDL)
-
Here is a very simple shooter game made with SDL in C. This is quite a big of a jump from the last example, but everything is commented, just go to the main function at the bottom and read along, one part at a time.
This page is for Windows. You can also check the
Linux version.
Adding sound and images to SDL
SDL can't load file formats like PNG or play sounds well by default, to do it properly we need to add additional SDL modules:
- For images: SDL_image (SDL2_image-devel-X.X.X-mingw.zip). (alternate link)
- For audio: SDL_mixer (SDL2_mixer-devel-X.X.X-mingw.zip). (alternate link)
Extract those into the same place as your project. Just like SDL, you'll have to move the DLLs for both from SDL2_xxxxx-X.X.X/x86_64-w64-mingw32/bin
.
Now, I'll try my best not to go into an angry rant about why I personally avoid using third party libraries, but here's the new build file (remember to fix the paths if you have a different SDL version):
@ECHO OFF set libraries=-L"SDL2-2.26.3/x86_64-w64-mingw32/lib" -I"SDL2-2.26.3/x86_64-w64-mingw32/include/SDL2" -lSDL2 ^ -L"SDL2_mixer-2.6.3/x86_64-w64-mingw32/lib" -I"SDL2_mixer-2.6.3/x86_64-w64-mingw32/include/SDL2" -lSDL2_Mixer ^ -L"SDL2_image-2.6.3/x86_64-w64-mingw32/lib" -I"SDL2_image-2.6.3/x86_64-w64-mingw32/include/SDL2" -lSDL2_Image gcc main.c %libraries% -mwindows -o exampleshooter && ( start exampleshooter )
The code
I won't put the code on this webpage since there's about 700 lines of it, instead you can download the code and assets (not including the libraries mentioned above).
Use WASD or arrow keys to move, Space to shoot, Enter to restart, Esc to quit. The enemies will start spawning faster depending on how high your score is.
The project uses some free sounds and music from mixkit.