diff options
author | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2022-04-12 04:57:01 -0700 |
---|---|---|
committer | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2022-04-12 04:57:01 -0700 |
commit | 3ffb56f167a1855731b50eebfc484b7cc5f21036 (patch) | |
tree | b4d1608e729c17a3c8779e2059b461d66c4929e5 | |
parent | 0e85c760ca1fbb581765dd18d3159794791c3d08 (diff) | |
download | dartboat-3ffb56f167a1855731b50eebfc484b7cc5f21036.tar.gz dartboat-3ffb56f167a1855731b50eebfc484b7cc5f21036.tar.xz |
add player names
-rw-r--r-- | dartbot.c | 29 |
1 files changed, 15 insertions, 14 deletions
@@ -281,15 +281,17 @@ struct visit { }; struct leg { + char *name; int start; int rem; int n_visits; struct visit *visits; }; -struct leg *leg_init(int points) +struct leg *leg_init(int points, char *name) { struct leg *l = calloc(1, sizeof(*l)); + l->name = name; l->start = l->rem = points; l->visits = calloc(1000, sizeof(*(l->visits))); // FIXME @@ -334,7 +336,7 @@ void comp_visit(struct leg *l) void test_match(int start_points) { - struct leg *l = leg_init(start_points); + struct leg *l = leg_init(start_points, NULL); while(l->rem > 0) comp_visit(l); @@ -376,7 +378,7 @@ void user_visit(struct leg *l) struct visit *v = l->visits + l->n_visits++; char status[100]; - int len = sprintf(status, " %d remaining", l->rem); + int len = sprintf(status, " %s has %d remaining", l->name, l->rem); if (l->rem <= 170) { char *target = CHECKOUTS[2][l->rem-1]; if (target) { @@ -512,8 +514,8 @@ void curses_draw(struct leg *l1, struct leg *l2) wrefresh(w); } -void curses_match(int start_points, void (*f1)(struct leg *), - void (*f2)(struct leg *)) +void curses_match(int start_points, char *n1, void (*f1)(struct leg *), + char *n2, void (*f2)(struct leg *)) { initscr(); refresh(); @@ -531,8 +533,8 @@ void curses_match(int start_points, void (*f1)(struct leg *), waddstr(titlew, " dartbot"); wrefresh(titlew); - struct leg *l1 = leg_init(start_points); - struct leg *l2 = leg_init(start_points); + struct leg *l1 = leg_init(start_points, n1); + struct leg *l2 = leg_init(start_points, n2); curses_draw(l1, l2); @@ -546,10 +548,9 @@ void curses_match(int start_points, void (*f1)(struct leg *), curses_draw(l1, l2); } - if (l1->rem <= 0) - curses_status(" Player 1 wins."); - else if (l2->rem <= 0) - curses_status(" Player 2 wins."); + char status[100]; + sprintf(status, " %s wins", l1->rem <= 0 ? l1->name : l2->name); + curses_status(status); leg_free(l1); leg_free(l2); @@ -563,17 +564,17 @@ void curses_match(int start_points, void (*f1)(struct leg *), void cvc_curses_match(int start_points) { - curses_match(start_points, comp_visit, comp_visit); + curses_match(start_points, "Dartbot 1", comp_visit, "Dartbot 2", comp_visit); } void pvc_curses_match(int start_points) { - curses_match(start_points, user_visit, comp_visit); + curses_match(start_points, "David", user_visit, "Dartbot", comp_visit); } void pvp_curses_match(int start_points) { - curses_match(start_points, user_visit, user_visit); + curses_match(start_points, "David", user_visit, "Davidn't", user_visit); } int main() |