tictactoe

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 106ccb207c60f0b4f26af0aa3772e44a96750ea2
parent 162f59d5d402ba056cdf4bcb827e999d0bd24ca9
Author: Wilson Gheen <wilson@wilsonrgheen.com>
Date:   Sun, 18 Dec 2022 06:16:16 -0600

Enable two different `get_move*()`s in one game

Diffstat:
Mtictactoe.c | 8+++++---
Munit_test.c | 2+-
2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/tictactoe.c b/tictactoe.c @@ -22,16 +22,18 @@ static void print_board(char *board) { print_board_offset(board, 0, 0, 1); } -char play(char (*get_move)(char*, char)) { +char play(char (*get_move)(char*, char), char (*get_move_2)(char*, char)) { struct tb_event ev; char board[9] = " "; char winner = 0; char player = 'O'; + if(get_move_2 == NULL) + get_move_2 = get_move; if(!SIDE_BY_SIDE) print_board(board); for(int turns=0; !winner && turns < 9; turns++) { + winner = (turns & 1) ? get_move(board, player) : get_move_2(board, player); player = (player == 'O' ? 'X' : 'O'); - winner = get_move(board, player); if(SIDE_BY_SIDE) print_board_offset(board, turns * 10, 0, 0); else @@ -45,7 +47,7 @@ char play(char (*get_move)(char*, char)) { int main(void) { struct tb_event ev; tb_init(); - char winner = play(get_winning_move_else_random); + char winner = play(get_winning_move_else_block_else_random, NULL); if(winner) print_msg("%c wins.", winner); else diff --git a/unit_test.c b/unit_test.c @@ -27,7 +27,7 @@ int main() { puts( "--------"); printf("Testing %s -- expecting '%s' ...\n", b->name, b->expected_result); set_board(b->name); - char winner = play(get_move_preset_board); + char winner = play(get_move_preset_board, NULL); if(winner) sprintf(actual_result, "%c WINS", winner); else