Compare commits

...
6 Commits
Author SHA1 Message Date
Simon Kellet 5dae8fab87 fixed format 2024-03-03 16:56:42 +00:00
simonkellet 62e5515472 tweaks 2022-09-16 13:17:43 +01:00
simonkellet 9a4963f474 tweaks 2022-06-13 13:13:06 +01:00
simonkellet bf7a214788 fixes 2022-05-22 12:01:54 +01:00
simonkellet df7db80888 git ignore 2022-05-22 12:01:28 +01:00
simonkellet e9a3fb0217 update rd 2022-05-22 11:54:53 +01:00
4 changed files with 144 additions and 147 deletions
+1
View File
@@ -0,0 +1 @@
ttt
+1 -12
View File
@@ -4,22 +4,11 @@ A simple TicTacToe game written in C in under 2 hours!
## Usage ## Usage
```bash ```bash
./build ./build.sh
``` ```
then then
```bash ```bash
./ttt ./ttt
``` ```
## CPU
There is infact a CPU programmed into this application!
You can play against it if you swap out:
```c
41 player_choice('O');
```
with
```c
41 cpu_choice('O');
```
Enjoy! Enjoy!
+15 -8
View File
@@ -8,10 +8,10 @@
#define RED "\033[31m" /* Red */ #define RED "\033[31m" /* Red */
#define BOLDGREEN "\033[1m\033[32m" /* Bold Green */ #define BOLDGREEN "\033[1m\033[32m" /* Bold Green */
#define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */ #define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */
#define BOLDRED "\033[1m\033[31m" /* Bold Yellow */ #define BOLDRED "\033[1m\033[31m" /* Bold RED */
#define BOLDWHITE "\033[1m\033[37m" /* Bold White */ #define BOLDWHITE "\033[1m\033[37m" /* Bold White */
#define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */ #define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */
#define RESET "\033[0m" #define RESET "\033[0m" /* Reset colour */
char board[ROWS][COLUMNS]; char board[ROWS][COLUMNS];
@@ -25,13 +25,15 @@ int free_spaces();
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
char flag = ' '; char flag = ' ';
int players; int players;
unsigned int sleeptime = 1; // seconds to sleep
clear_board(); clear_board();
printf("How many players? (1/2)\n> "); printf("How many players? (1/2)\n> ");
scanf("%d", &players); scanf("%d", &players); // something better than scanf("%d")
//this could be tidier i think // TODO Tidy this up!
if(players == 1){ switch (players) {
case 1:
do { do {
flag = check_win(); flag = check_win();
if (free_spaces() == 0) { if (free_spaces() == 0) {
@@ -41,15 +43,18 @@ int main(int argc, char *argv[]){
print_board(); print_board();
player_choice('X'); player_choice('X');
flag = check_win();
print_board(); print_board();
sleep(sleeptime);
cpu_choice('O'); cpu_choice('O');
flag = check_win(); flag = check_win();
print_board(); print_board();
sleep(sleeptime);
} while (flag == ' '); } while (flag == ' ');
} else if(players == 2){ case 2:
do { do {
flag = check_win(); flag = check_win();
if (free_spaces() == 0) { if (free_spaces() == 0) {
@@ -59,6 +64,7 @@ int main(int argc, char *argv[]){
print_board(); print_board();
player_choice('X'); player_choice('X');
flag = check_win();
print_board(); print_board();
player_choice('O'); player_choice('O');
@@ -108,7 +114,8 @@ int free_spaces(){
s = 0; s = 0;
for (r = 0; r < ROWS; ++r) { for (r = 0; r < ROWS; ++r) {
for (c = 0; c < COLUMNS; ++c) { for (c = 0; c < COLUMNS; ++c) {
if(board[r][c] == ' ') ++s; if (board[r][c] == ' ')
++s;
} }
} }
return s; return s;
@@ -127,7 +134,7 @@ void player_choice(char player){
if (board[pr][pc] != ' ') { if (board[pr][pc] != ' ') {
printf(BOLDRED "\n[%c] Cannot play here, skipping...\n" RESET, player); printf(BOLDRED "\n[%c] Cannot play here, skipping...\n" RESET, player);
sleep(2); sleep(1);
} else { } else {
board[pr][pc] = player; board[pr][pc] = player;
} }
BIN
View File
Binary file not shown.