/*
* @file lab3_4.cpp
* @author Гавалян Д.Є, гр. 515i
* @date 5 квiтня 2025
* @brief Лабораторна робота № 3, варiант 19
*
* Використання масивiв. Завдання 3
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include "module.h"
int main() {
setlocale(LC_ALL, "Ukr");
/* Карти на руках */
int in_hand[NUM_SUITS][NUM_RANKS] = { 0 };
int num_cards;
int trump_card = 0;
const char rank_code[] = { '2', '3', '4', '5', '6', '7', '8', '9', 't', 'J', 'Q', 'K', 'A' };
const char suit_code[] = { 'c', 'd', 'h', 's' };
/* генератор випадкових чисел */
srand(time(0));
printf("Введiть кiлькiсть карт: ");
scanf("%d", &num_cards);
/* Обрання випадкової козирної мастi */
RandomTrumpCard(&trump_card, suit_code);
int MyTrumpCards = 0;
int JohnTrumpCards = 0;
int HavierTrumpCards = 0;
printf("\nВашi карти:");
PlayerCards(num_cards, in_hand, rank_code, suit_code, trump_card, &MyTrumpCards);
printf("\nКарти суперника John:");
FirstRivalCards(num_cards, in_hand, rank_code, suit_code, trump_card, &JohnTrumpCards);
printf("\nКарти суперника Havier:");
SecondRivalCards(num_cards, in_hand, rank_code, suit_code, trump_card, &HavierTrumpCards);
printf("\nВашi козирнi карти: %d", MyTrumpCards);
printf("\nКозирнi карти Джона: %d", JohnTrumpCards);
printf("\nКозирнi карти Хавьера: %d\n", HavierTrumpCards);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include "module.h"
/* Обрання випадкової козирної мастi */
void RandomTrumpCard(int* trump_card, const char suit_code[]) {
*trump_card = rand() % NUM_SUITS;
printf("\nКозирна масть: %c", suit_code[*trump_card]);
}
/* Роздача карт гравця */
void PlayerCards(int num_cards, int in_hand[NUM_SUITS][NUM_RANKS], const char rank_code[], const char suit_code[], int trump_card, int* MyTrumpCards) {
int suit, rank;
while (num_cards > 0) {
suit = rand() % NUM_SUITS;
rank = rand() % NUM_RANKS;
if (!in_hand[suit][rank]) {
in_hand[suit][rank] = 1; /* карта обрана */
num_cards--;
printf(" %c%c", rank_code[rank], suit_code[suit]);
if (suit == trump_card) {
(*MyTrumpCards)++;
}
}
}
}
/* Роздача карт першого суперника */
void FirstRivalCards(int num_cards, int in_hand[NUM_SUITS][NUM_RANKS], const char rank_code[], const char suit_code[], int trump_card, int* JohnTrumpCards) {
int suit, rank;
int firstRivalCards = 0;
while (firstRivalCards < 9) {
suit = rand() % NUM_SUITS;
rank = rand() % NUM_RANKS;
if (!in_hand[suit][rank]) {
in_hand[suit][rank] = 1; /* карта обрана */
printf(" %c%c", rank_code[rank], suit_code[suit]);
firstRivalCards++;
if (suit == trump_card) {
(*JohnTrumpCards)++;
}
}
}
}
/* Роздача карт другого суперника */
void SecondRivalCards(int num_cards, int in_hand[NUM_SUITS][NUM_RANKS], const char rank_code[], const char suit_code[], int trump_card, int* HavierTrumpCards) {
int suit, rank;
int secondRivalCards = 0;
while (secondRivalCards < 9) {
suit = rand() % NUM_SUITS;
rank = rand() % NUM_RANKS;
if (!in_hand[suit][rank]) {
in_hand[suit][rank] = 1; /* карта обрана */
printf(" %c%c", rank_code[rank], suit_code[suit]);
secondRivalCards++;
if (suit == trump_card) {
(*HavierTrumpCards)++;
}
}
}
}
#ifndef MODULE_H
#define MODULE_H
#define NUM_SUITS 4 /* кiлькiсть мастей */
#define NUM_RANKS 13 /* кiлькiсть рангiв */
void RandomTrumpCard(int* trump_card, const char suit_code[]);
void PlayerCards(int num_cards, int in_hand[NUM_SUITS][NUM_RANKS], const char rank_code[], const char suit_code[], int trump_card, int* MyTrumpCards);
void FirstRivalCards(int num_cards, int in_hand[NUM_SUITS][NUM_RANKS], const char rank_code[], const char suit_code[], int trump_card, int* JohnTrumpCards);
void SecondRivalCards(int num_cards, int in_hand[NUM_SUITS][NUM_RANKS], const char rank_code[], const char suit_code[], int trump_card, int* HavierTrumpCards);
#endif