Replace space with tabs

This commit is contained in:
Night Kaly 2024-10-01 13:47:20 +01:00
parent 35c058f954
commit f1b97c1fdb
Signed by: night0721
GPG key ID: 957D67B8DB7A119B

182
ace.c
View file

@ -9,8 +9,8 @@
#define RESET_COLOR() printf("\033[0m") #define RESET_COLOR() printf("\033[0m")
typedef struct { typedef struct {
int value; /* 1 to 13 (Ace to King) */ int value; /* 1 to 13 (Ace to King) */
int suit; /* 0 to 3 (Hearts, Spades, Diamonds, Clubs) */ int suit; /* 0 to 3 (Hearts, Spades, Diamonds, Clubs) */
} card; } card;
card deal_card(); card deal_card();
@ -21,14 +21,14 @@ struct termios orig_termios;
int main() int main()
{ {
srand(time(NULL)); srand(time(NULL));
card player_hand[10], cpu_hand[10]; card player_hand[10], cpu_hand[10];
int player_num_cards = 0, cpu_num_cards = 0; int player_num_cards = 0, cpu_num_cards = 0;
char action; char action;
/* Set terminal to return read syscall without enter */ /* Set terminal to return read syscall without enter */
struct termios new_termios; struct termios new_termios;
tcgetattr(STDIN_FILENO, &orig_termios); tcgetattr(STDIN_FILENO, &orig_termios);
new_termios = orig_termios; new_termios = orig_termios;
@ -45,7 +45,7 @@ int main()
int player_score; int player_score;
int cpu_score; int cpu_score;
while (1) { while (1) {
CLEAR_SCREEN(); CLEAR_SCREEN();
MOVE_CURSOR(1, 1); MOVE_CURSOR(1, 1);
printf("You Computer\n"); printf("You Computer\n");
@ -57,32 +57,32 @@ int main()
display_hand(player_hand, player_num_cards, 1, player_score); display_hand(player_hand, player_num_cards, 1, player_score);
display_hand(cpu_hand, cpu_num_cards, 0, cpu_score); display_hand(cpu_hand, cpu_num_cards, 0, cpu_score);
/* Check if the player has busted */ /* Check if the player has busted */
if (player_score > 21) { if (player_score > 21) {
printf("\n\033[38;2;255;0;0mBust! You lose.\033[0m\n"); printf("\n\033[38;2;255;0;0mBust! You lose.\033[0m\n");
break; break;
} }
printf("\nHit (h) or stand (s)? "); printf("\nHit (h) or stand (s)? ");
fflush(stdout); fflush(stdout);
char action; char action;
read(STDIN_FILENO, &action, 1); read(STDIN_FILENO, &action, 1);
if (action == 'h') { if (action == 'h') {
player_hand[player_num_cards++] = deal_card(); player_hand[player_num_cards++] = deal_card();
} else if (action == 's') { } else if (action == 's') {
break; break;
} }
} }
/* Computer's turn to deal /* Computer's turn to deal
* Customise here if you want more wins * Customise here if you want more wins
*/ */
while (cpu_score < 17) { while (cpu_score < 17) {
cpu_hand[cpu_num_cards++] = deal_card(); cpu_hand[cpu_num_cards++] = deal_card();
cpu_score = calculate_score(cpu_hand, cpu_num_cards); cpu_score = calculate_score(cpu_hand, cpu_num_cards);
} }
CLEAR_SCREEN(); CLEAR_SCREEN();
MOVE_CURSOR(1, 1); MOVE_CURSOR(1, 1);
@ -91,102 +91,102 @@ int main()
cpu_score = calculate_score(cpu_hand, cpu_num_cards); cpu_score = calculate_score(cpu_hand, cpu_num_cards);
/* Determine win or lose */ /* Determine win or lose */
if (player_score > 21) { if (player_score > 21) {
printf("\033[38;2;255;0;0mComputer wins!\033[0m\n", cpu_score); printf("\033[38;2;255;0;0mComputer wins!\033[0m\n", cpu_score);
} else if (cpu_score > 21) { } else if (cpu_score > 21) {
printf("\033[38;2;0;255;0mYou win!\033[0m\n", player_score); printf("\033[38;2;0;255;0mYou win!\033[0m\n", player_score);
} else if (player_score > cpu_score) { } else if (player_score > cpu_score) {
printf("\033[38;2;0;255;0mYou win!\033[0m\n", player_score); printf("\033[38;2;0;255;0mYou win!\033[0m\n", player_score);
} else if (player_score < cpu_score) { } else if (player_score < cpu_score) {
printf("\033[38;2;255;0;0mComputer wins!\033[0m\n", cpu_score); printf("\033[38;2;255;0;0mComputer wins!\033[0m\n", cpu_score);
} else { } else {
printf("\033[38;2;255;255;0mDraw!\033[0m\n", player_score); printf("\033[38;2;255;255;0mDraw!\033[0m\n", player_score);
} }
display_hand(player_hand, player_num_cards, 1, player_score); display_hand(player_hand, player_num_cards, 1, player_score);
display_hand(cpu_hand, cpu_num_cards, 0, cpu_score); display_hand(cpu_hand, cpu_num_cards, 0, cpu_score);
printf("\n"); printf("\n");
/* Reset terminal */ /* Reset terminal */
tcsetattr(STDIN_FILENO, TCSANOW, &orig_termios); tcsetattr(STDIN_FILENO, TCSANOW, &orig_termios);
return 0; return 0;
} }
card deal_card() card deal_card()
{ {
card card; card card;
card.value = rand() % 13 + 1; card.value = rand() % 13 + 1;
card.suit = rand() % 4; card.suit = rand() % 4;
return card; return card;
} }
int calculate_score(card hand[], int num_cards) int calculate_score(card hand[], int num_cards)
{ {
int score = 0, num_aces = 0; int score = 0, num_aces = 0;
for (int i = 0; i < num_cards; i++) { for (int i = 0; i < num_cards; i++) {
if (hand[i].value == 1) { if (hand[i].value == 1) {
score += 11; score += 11;
num_aces++; num_aces++;
} else if (hand[i].value > 10) { } else if (hand[i].value > 10) {
score += 10; score += 10;
} else { } else {
score += hand[i].value; score += hand[i].value;
} }
} }
while (score > 21 && num_aces > 0) { while (score > 21 && num_aces > 0) {
score -= 10; score -= 10;
num_aces--; num_aces--;
} }
return score; return score;
} }
void display_hand(card hand[], int num_cards, int is_player, int total) void display_hand(card hand[], int num_cards, int is_player, int total)
{ {
const char *suits[] = {"\033[38;2;255;0;0m♥\033[0m", "\033[38;2;0;0;255m♠\033[0m", "\033[38;2;255;0;255m♦\033[0m", "\033[38;2;0;255;0m♣\033[0m"}; const char *suits[] = {"\033[38;2;255;0;0m♥\033[0m", "\033[38;2;0;0;255m♠\033[0m", "\033[38;2;255;0;255m♦\033[0m", "\033[38;2;0;255;0m♣\033[0m"};
if (is_player) { if (is_player) {
printf("Cards - "); printf("Cards - ");
} else { } else {
/* Alignment */ /* Alignment */
MOVE_CURSOR(2, 28); MOVE_CURSOR(2, 28);
printf("Cards - "); printf("Cards - ");
} }
for (int i = 0; i < num_cards; i++) { for (int i = 0; i < num_cards; i++) {
/* Bold */ /* Bold */
printf("\033[1m"); printf("\033[1m");
switch (hand[i].value) { switch (hand[i].value) {
case 1: case 1:
printf("A%s ", suits[hand[i].suit]); printf("A%s ", suits[hand[i].suit]);
break; break;
case 11: case 11:
printf("J%s ", suits[hand[i].suit]); printf("J%s ", suits[hand[i].suit]);
break; break;
case 12: case 12:
printf("Q%s ", suits[hand[i].suit]); printf("Q%s ", suits[hand[i].suit]);
break; break;
case 13: case 13:
printf("K%s ", suits[hand[i].suit]); printf("K%s ", suits[hand[i].suit]);
break; break;
default: default:
printf("%d%s ", hand[i].value, suits[hand[i].suit]); printf("%d%s ", hand[i].value, suits[hand[i].suit]);
} }
RESET_COLOR(); RESET_COLOR();
} }
printf("\n"); printf("\n");
if (is_player) { if (is_player) {
printf("Total - "); printf("Total - ");
} else { } else {
MOVE_CURSOR(3, 28); MOVE_CURSOR(3, 28);
printf("Total - "); printf("Total - ");
} }
/* Bold and inverted colors */ /* Bold and inverted colors */
printf("\033[1m\033[47;30m"); printf("\033[1m\033[47;30m");
printf(" %d ", total); printf(" %d ", total);
RESET_COLOR(); RESET_COLOR();