diff options
-rw-r--r-- | main.c | 8 | ||||
-rw-r--r-- | pregame.c | 66 |
2 files changed, 70 insertions, 4 deletions
@@ -17,6 +17,7 @@ void data_endturn(); int data_getera(); void data_setai(int p); int data_isai(int p); +int* pregame(); void halt() { @@ -34,8 +35,6 @@ void haltError(char *message, int num) exit(1); } -static int ais[7] = {0, 1, 1, 1, 1, 1, 1}; - main_routine() { int player = 0; @@ -53,10 +52,11 @@ main() { io_init(); cards_init(); - data_init(4); + int *setupdat = pregame(); + data_init(setupdat[7]); int i; for(i = 0; i < 7; i++) { - if(ais[i]) data_setai(i); + if(setupdat[i]) data_setai(i); } main_routine(); halt(); diff --git a/pregame.c b/pregame.c new file mode 100644 index 0000000..4582f21 --- /dev/null +++ b/pregame.c @@ -0,0 +1,66 @@ +#include "7w.h" +#include <stdio.h> + +int io_getkey(); +void io_clearscreen(); +void io_printborder(int x, int y, int width); +int io_printtext(int xorigin, int y, int width, char* text); + +void pregame_refresh(int* data, int cursor) +{ + io_clearscreen(); + int y = 0; + int width = 28; + io_printborder(0, y++, width); + char s[40]; + sprintf(s, "Number of players: %d %c", data[7], (cursor == 0)? '*' : ' '); + y = io_printtext(0, y, width, s); + int i; + for(i = 0; i < data[7]; i++) { + sprintf(s, "Player %d is: %s %c", i+1, (data[i] == 1)? "ai " : "human", (cursor == i+1)? '*' : ' '); + y = io_printtext(0, y, width, s); + } + sprintf(s, "Play %c", (cursor == data[7]+1)? '*' : ' '); + y = io_printtext(0, y, width, s); + io_printborder(0, y++, width); +} + +int* pregame() +{ + static int ret[8]; + ret[7] = 3; + int cursor = 0; + int pregaming = 1; + while(pregaming) { + pregame_refresh(ret, cursor); + switch(io_getkey()) { + case UP: cursor--; + if(cursor < 0) cursor = ret[7]+1; + break; + case DOWN: cursor = (cursor+1)%(ret[7]+2); + break; + case RIGHT: + case ENTER: + if(cursor == 0) { + ret[7]++; + if(ret[7] > 7) ret[7] = 3; + } else if(cursor == ret[7]+1) { + pregaming = 0; + } else { + ret[cursor-1] = !ret[cursor-1]; + } + break; + case LEFT: + if(cursor == 0) { + ret[7]--; + if(ret[7] < 3) ret[7] = 7; + } else if(cursor == ret[7]+1) { + //do nothing + } else { + ret[cursor-1] = !ret[cursor-1]; + } + break; + } + } + return ret; +} |