diff options
author | scratko <m@scratko.xyz> | 2024-08-02 15:55:08 +0300 |
---|---|---|
committer | scratko <m@scratko.xyz> | 2024-08-02 15:55:08 +0300 |
commit | 0733ff24c89c8208b7e5d2789d0913d435b9e0fa (patch) | |
tree | 0ae94c1f3ce9d9c76d8bd07d89b9a1ee78a75834 /server_game_process.h | |
download | durak-0733ff24c89c8208b7e5d2789d0913d435b9e0fa.tar.gz durak-0733ff24c89c8208b7e5d2789d0913d435b9e0fa.tar.bz2 durak-0733ff24c89c8208b7e5d2789d0913d435b9e0fa.zip |
Initial commit
Diffstat (limited to 'server_game_process.h')
-rw-r--r-- | server_game_process.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/server_game_process.h b/server_game_process.h new file mode 100644 index 0000000..1518c8c --- /dev/null +++ b/server_game_process.h @@ -0,0 +1,72 @@ +#ifndef SERVER_GAME_PROCESS_H_SENTRY +#define SERVER_GAME_PROCESS_H_SENTRY + +#include "card_stack.h" +#include "server.h" +#include "card_queue.h" + +enum { + start_deck_size = 6 +}; + +enum { + max_shuffled_deck_size = 52, + max_card_arr_size = 18 +}; + +struct game_info { + int players_number; + int *card_quantity_arr; + int shuffled_cards_left; + const char* trump_suit; + int position_whose_turn; + struct cards_on_table cot; + struct card_queue *cq; +}; + +char** get_shuffled_deck(); +void deal_first_cards(char **shuffled_deck, int *cards_left, + player_cards *deck); + +const char* find_trump_suit(char **shuffled_deck, int *cards_left); +int find_lowest_trump(player_cards deck, char *trump); +void shift_turn_queue_to_first(struct session **turn_queue, int size); +void update_card_quantity_arr(struct server *serv); + +struct game_info* get_new_game_info(int players_number, int *card_quantity_arr, + int shuffled_cards_left, char *trump_suit, + int number_whose_turn); + +int is_card_bit(const char *attack_card, const char *defend_card, + const char *trump_suit); + +int check_defender_can_defend(struct cards_on_table *cot, + struct player_cards deck, const char *trump_suit); + +void update_game_info(struct game_info *gi, int players_number, + int shuffled_cards_left, int position_whose_turn); + +int check_someone_can_toss_card(struct session **turn_queue, + int players_quantity, + struct card_queue *cq); + +int check_player_can_toss_card(player_cards deck, struct cards_on_table *cot); +int is_correct_tossing_card(const char *card, struct cards_on_table *cot); + +void put_all_cards_from_queue_to_table(struct cards_on_table *cot, + struct card_queue *cq); + +void put_one_card_from_queue_to_table(struct cards_on_table *cot, + struct card_queue *cq); + +void put_defender_card_on_table(struct cards_on_table *cot, const char *card) + +void move_all_cards_to_defender(struct cards_on_table *cot, + struct card_queue *cq, player_cards *deck); +void remove_cards_from_table(struct cards_on_table *cot); + +int calculate_defense_card_quantity_on_table(const struct cards_on_table *cot); +int calculate_attack_card_quantity_on_table(const struct cards_on_table *cot); +int check_all_answers_were_received(const session **turn_queue, int size); + +#endif |