Code cleanup on the shot validation path
[Project_algorithmic_C.git] / lib / othello.h
CommitLineData
4ddf6f1a
JB
1/*
2 * =====================================================================================
3 *
4 * Filename: othello.h
5 *
6 * Description: Header for othello board handling functions
7 *
8 * Version: 1.0
9 * Created: 25/04/2017 15:16:37
10 * Revision: none
11 * Compiler: gcc
12 *
13 * Author: Jerome Benoit (fraggle), jerome.benoit@piment-noir.org
14 * Organization: Piment Noir
15 *
16 * =====================================================================================
17 */
18
19#ifndef OTHELLO_H
20#define OTHELLO_H
21
a80646b7
JB
22#include <stdbool.h>
23
2e5c1894 24#include "constants.h"
54f1c58c 25#include "list.h"
2e5c1894 26
45ce2fe3 27/* linked list of can play shots */
a80646b7 28struct shots_list_s {
54f1c58c 29 struct list_head list;
45ce2fe3
JB
30 int y;
31 int x;
a80646b7 32 unsigned int type; /* can be white or black or hint allowed or hint_fordidden */
54f1c58c 33};
74e2b93b
JB
34
35unsigned int current_player(unsigned int round_count);
a8b54576 36unsigned int eval_winner(unsigned int nb_white, unsigned int nb_black);
74e2b93b 37
a80646b7
JB
38void zero_pawns(unsigned int pawn_array[board_size][board_size]);
39void init_pawns(unsigned int pawn_array[board_size][board_size]);
a8b54576 40unsigned int get_box_value(int y, int x, unsigned int pawn_array[board_size][board_size]);
a80646b7 41void set_pawn(int y, int x, unsigned int type, unsigned int pawn_array[board_size][board_size]);
74e2b93b
JB
42
43bool is_box_type(int y, int x, unsigned int pawn_array[board_size][board_size], unsigned int type);
54f1c58c 44bool is_board_full(unsigned int pawn_array[board_size][board_size]);
74e2b93b 45
a80646b7
JB
46unsigned int count_pawns_type(unsigned int pawn_array[board_size][board_size], unsigned int type);
47
3243371e 48bool is_legal_shot(int y, int x, unsigned int current_player, unsigned int pawn_array[board_size][board_size]);
bbbe0570 49unsigned int valid_shot(int y, int x, unsigned int current_player, unsigned int pawn_array[board_size][board_size]);
2e5c1894 50
9240af1a
JB
51void build_playable_shots_list(unsigned int current_player, struct shots_list_s* shots_list, unsigned int pawn_array[board_size][board_size]);
52void free_shots_list(struct shots_list_s* shots_list);
53
4ddf6f1a 54#endif /* OTHELLO_H */