#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define WORD_LENGTH 5
#define MAX_TRIES 6
#define CATEGORIES 3
#define WORDS_PER_CAT 5
/* ANSI colors */
#define GREEN "\033[1;32m"
#define YELLOW "\033[1;33m"
#define GRAY "\033[1;37m"
#define RESET "\033[0m"
int main() {
char categoryNames[CATEGORIES][20] = {
"Places",
"Animals",
"Objects"
};
char words[CATEGORIES][WORDS_PER_CAT][WORD_LENGTH + 1] = {
{ "mecca", "paris", "milan", "dubai", "cairo" },
{ "tiger", "horse", "sheep", "zebra", "camel" },
{ "chair", "table", "phone", "glass", "clock" }
};
int catIndex
= rand() % CATEGORIES
; char secret[WORD_LENGTH + 1];
strcpy(secret
, words
[catIndex
][rand() % WORDS_PER_CAT
]);
char guesses[MAX_TRIES][WORD_LENGTH + 1];
int tries = 0;
int win = 0;
printf("=== WORDLE GAME ===\n"); printf("Category: %s\n", categoryNames
[catIndex
]); printf("Guess the 5-letter word (%d tries)\n\n", MAX_TRIES
);
while (tries < MAX_TRIES && !win) {
printf("Try %d: ", tries
+ 1); scanf("%5s", guesses
[tries
]);
system("clear"); /* Linux / Mac */ /* system("cls"); */ /* Windows */
printf("=== WORDLE GAME ===\n"); printf("Category: %s\n\n", categoryNames
[catIndex
]);
/* Print table */
for (int r = 0; r < MAX_TRIES; r++) {
for (int c = 0; c < WORD_LENGTH; c++) {
if (r < tries + 1) {
if (guesses[r][c] == secret[c]) {
printf(GREEN
"[%c]" RESET
, guesses
[r
][c
]); }
else if (strchr(secret
, guesses
[r
][c
])) { printf(YELLOW
"[%c]" RESET
, guesses
[r
][c
]); }
else {
printf(GRAY
"[%c]" RESET
, guesses
[r
][c
]); }
}
else {
}
}
}
int correct = 0;
for (int i = 0; i < WORD_LENGTH; i++)
if (guesses[tries][i] == secret[i])
correct++;
if (correct == WORD_LENGTH)
win = 1;
tries++;
}
if (win)
printf(GREEN
"Bravo! You found the word: %s\n" RESET
, secret
); else
printf("Game Over! The word was: %s\n", secret
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8dGltZS5oPgoKI2RlZmluZSBXT1JEX0xFTkdUSCA1CiNkZWZpbmUgTUFYX1RSSUVTIDYKI2RlZmluZSBDQVRFR09SSUVTIDMKI2RlZmluZSBXT1JEU19QRVJfQ0FUIDUKCi8qIEFOU0kgY29sb3JzICovCiNkZWZpbmUgR1JFRU4gICJcMDMzWzE7MzJtIgojZGVmaW5lIFlFTExPVyAiXDAzM1sxOzMzbSIKI2RlZmluZSBHUkFZICAgIlwwMzNbMTszN20iCiNkZWZpbmUgUkVTRVQgICJcMDMzWzBtIgoKaW50IG1haW4oKSB7CgogICAgY2hhciBjYXRlZ29yeU5hbWVzW0NBVEVHT1JJRVNdWzIwXSA9IHsKICAgICAgICAiUGxhY2VzIiwKICAgICAgICAiQW5pbWFscyIsCiAgICAgICAgIk9iamVjdHMiCiAgICB9OwoKICAgIGNoYXIgd29yZHNbQ0FURUdPUklFU11bV09SRFNfUEVSX0NBVF1bV09SRF9MRU5HVEggKyAxXSA9IHsKICAgICAgICB7ICJtZWNjYSIsICJwYXJpcyIsICJtaWxhbiIsICJkdWJhaSIsICJjYWlybyIgfSwKICAgICAgICB7ICJ0aWdlciIsICJob3JzZSIsICJzaGVlcCIsICJ6ZWJyYSIsICJjYW1lbCIgfSwKICAgICAgICB7ICJjaGFpciIsICJ0YWJsZSIsICJwaG9uZSIsICJnbGFzcyIsICJjbG9jayIgfQogICAgfTsKCiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKCiAgICBpbnQgY2F0SW5kZXggPSByYW5kKCkgJSBDQVRFR09SSUVTOwogICAgY2hhciBzZWNyZXRbV09SRF9MRU5HVEggKyAxXTsKICAgIHN0cmNweShzZWNyZXQsIHdvcmRzW2NhdEluZGV4XVtyYW5kKCkgJSBXT1JEU19QRVJfQ0FUXSk7CgogICAgY2hhciBndWVzc2VzW01BWF9UUklFU11bV09SRF9MRU5HVEggKyAxXTsKICAgIGludCB0cmllcyA9IDA7CiAgICBpbnQgd2luID0gMDsKCiAgICBwcmludGYoIj09PSBXT1JETEUgR0FNRSA9PT1cbiIpOwogICAgcHJpbnRmKCJDYXRlZ29yeTogJXNcbiIsIGNhdGVnb3J5TmFtZXNbY2F0SW5kZXhdKTsKICAgIHByaW50ZigiR3Vlc3MgdGhlIDUtbGV0dGVyIHdvcmQgKCVkIHRyaWVzKVxuXG4iLCBNQVhfVFJJRVMpOwoKICAgIHdoaWxlICh0cmllcyA8IE1BWF9UUklFUyAmJiAhd2luKSB7CgogICAgICAgIHByaW50ZigiVHJ5ICVkOiAiLCB0cmllcyArIDEpOwogICAgICAgIHNjYW5mKCIlNXMiLCBndWVzc2VzW3RyaWVzXSk7CgogICAgICAgIHN5c3RlbSgiY2xlYXIiKTsgLyogTGludXggLyBNYWMgKi8KICAgICAgICAvKiBzeXN0ZW0oImNscyIpOyAqLyAvKiBXaW5kb3dzICovCgogICAgICAgIHByaW50ZigiPT09IFdPUkRMRSBHQU1FID09PVxuIik7CiAgICAgICAgcHJpbnRmKCJDYXRlZ29yeTogJXNcblxuIiwgY2F0ZWdvcnlOYW1lc1tjYXRJbmRleF0pOwoKICAgICAgICAvKiBQcmludCB0YWJsZSAqLwogICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgTUFYX1RSSUVTOyByKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBXT1JEX0xFTkdUSDsgYysrKSB7CgogICAgICAgICAgICAgICAgaWYgKHIgPCB0cmllcyArIDEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZ3Vlc3Nlc1tyXVtjXSA9PSBzZWNyZXRbY10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKEdSRUVOICJbJWNdIiBSRVNFVCwgZ3Vlc3Nlc1tyXVtjXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNocihzZWNyZXQsIGd1ZXNzZXNbcl1bY10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZihZRUxMT1cgIlslY10iIFJFU0VULCBndWVzc2VzW3JdW2NdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZihHUkFZICJbJWNdIiBSRVNFVCwgZ3Vlc3Nlc1tyXVtjXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJbIF0iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgfQoKICAgICAgICBpbnQgY29ycmVjdCA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXT1JEX0xFTkdUSDsgaSsrKQogICAgICAgICAgICBpZiAoZ3Vlc3Nlc1t0cmllc11baV0gPT0gc2VjcmV0W2ldKQogICAgICAgICAgICAgICAgY29ycmVjdCsrOwoKICAgICAgICBpZiAoY29ycmVjdCA9PSBXT1JEX0xFTkdUSCkKICAgICAgICAgICAgd2luID0gMTsKCiAgICAgICAgdHJpZXMrKzsKICAgICAgICBwcmludGYoIlxuIik7CiAgICB9CgogICAgaWYgKHdpbikKICAgICAgICBwcmludGYoR1JFRU4gIkJyYXZvISBZb3UgZm91bmQgdGhlIHdvcmQ6ICVzXG4iIFJFU0VULCBzZWNyZXQpOwogICAgZWxzZQogICAgICAgIHByaW50ZigiR2FtZSBPdmVyISBUaGUgd29yZCB3YXM6ICVzXG4iLCBzZWNyZXQpOwoKICAgIHJldHVybiAwOwp9