- World Game Library
Learn asycnronous C programming by a game.
-The library implements a game loop for a character-based ncurses game;
-The library finds out the event types:
--
-
- start and end -
- mouse events -
- keyboard events -
- screen resize events -
It can print colors and arbitrary characters on the screen. -Running is interrupted when character is drawn out of the screen.
-- Installation and Running
Make sure, that ncurses
is installed.
Clone this repository.
-Compile:
-make
Run:
-./game
- Make your own game
The game happens in a rectangular world of colorful characters. -Your goal as a programmer is to modify the world according to the pressed keys and the internal game state. -The library implements the game loop and draws the world to screen.
-Your game in file game.c
consists of two functions:
-
-
void* init_game()
is called in the beginning. Here you can initialize the internal state of the game. -The function should return a pointer to an instance of the initial game stategame
.
-int game_event(struct event* event,void* game)
-is called by the game loop in periodic interval or when a key was pressed. Non-zero return value orCtrl+C
key interrupts the game loop.
-
The world variable represents state of two-dimensional grid of characters on the screen. The screen matrix looks like this:
- origin
- [0,0] width
- +--------------------+
-h | |
-e | |
-i | |
-g | |
-h | |
-t | |
- +--------------------+
-
The world has the following parameters:
--
-
int height
: y-dimension of the grid.
-int width
: x-dimension of the grid.
-int interval
: maximum time between steps in milliseconds.
-
- The Event Function
The int game_event(struct event* event,void* game)
-function should:
-
-
- Read the game state (from the
void* game
) pointer.
- - Examine the pressed key from event pointer. If the
key
variable is non-zero, a key was pressed. According to the pressed key, modify the game stategame
.
- - Draw the game state. In the beginning of the step function the screen is empty. -
- Returning non-zero value ends the game loop. -