Add meta-files, board structure, and alloc function

Adds meta-files such as the Makefile and flake.lock/nix for easier
project management.

Adds board structure in connect4.h, as well as some helper functions
such as the make_board function to create a board, and the print_board
function to view the board after creation.
This commit is contained in:
Julia Lange 2024-07-14 02:45:09 -07:00
commit cc107f975c
Signed by: Julia
SSH key fingerprint: SHA256:5DJcfxa5/fKCYn57dcabJa2vN2e6eT0pBerYi5SUbto
6 changed files with 152 additions and 0 deletions

31
connect4.h Normal file
View file

@ -0,0 +1,31 @@
#ifndef CONNECT4_H_
#define CONNECT4_H_
#include <stddef.h>
enum Tile {
EMPTY = 0,
RED,
BLACK
};
struct Board {
size_t height;
size_t width;
size_t *tile_heights;
enum Tile *tilemap;
enum Tile next_player;
};
#define IDX(i, j, board) (board->tilemap[j*(board->height) + i])
// Returns a board struct with height and width based on parameters
struct Board *make_board(size_t height, size_t width);
// Drops a tile, returns 0 if successful, -1 if error, and 1 if the move won
int drop_tile(struct Board *board, size_t drop_pos);
// Prints the supplied board
void print_board(struct Board *board);
#endif // !CONNECT4_H_