/**
* @file main.c
* @author Зайченко Д.І., гр. 515i
* @date 04 квітня 2023
* @brief Лабораторна робота No 3
*
* Використання масивів. Завдання 4
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SUIT_NUM 4
#define RANK_NUM 13
#define PLAYERS 4
#define CARDS_NUMBER 6
int main() {
int cards_poll[PLAYERS][CARDS_NUMBER];
int check[SUIT_NUM][RANK_NUM];
int rank, suit,trump,trump_number, * card_poll = &cards_poll[0][0];
const char rank_code[RANK_NUM] = { '2','3','4','5','6','7','8','9','t','j','q','k','a' };
const char suit_code[SUIT_NUM] = { 'c','d','h','s' };
srand(time(0));
//генерація і виведення козирної масті
trump = rand() % 4;
printf("trump = %c", suit_code[trump]);
//цикл в якому генеруються карти та підраховується кількість коризів
for (card_poll = &cards_poll[0][0]; card_poll- &cards_poll[0][0] < PLAYERS*CARDS_NUMBER; ) {
//генерація рангу та масті карти
rank = (rand() % 13);
suit = (rand() % 4);
//перевірка на повторення карти
if (check[suit][rank] != 1) {
check[suit][rank] = 1;
//виведення руки гравця та скидання кількості козирів
if ((card_poll - &cards_poll[0][0]) % 6 == 0) {
trump_number = 0;
printf("\nPlayer %d hand =", (card_poll - &cards_poll[0][0]) / 6 + 1);
}
//кількість козирів в руці +1
if (suit == trump)
trump_number++;
//виведення карти
printf(" %c%c ",rank_code[rank],suit_code[suit]);
//виведення кількості козирів
if (((card_poll - &cards_poll[0][0])+1 ) % 6 == 0)
printf("\nNumber of trumps in player %d hand = %d\n", (card_poll - &cards_poll[0][0]) / 6 + 1, trump_number);
//генерація наступної карти
card_poll++;
}
}
}