diff options
| author | Mario Kilies <MarioKilies@GMX.net> | 2011-01-25 11:11:47 +0100 |
|---|---|---|
| committer | Mario Kilies <MarioKilies@GMX.net> | 2011-01-25 11:11:47 +0100 |
| commit | 3fc586325f8fc8fb4f1990bf87ad4c37e722f381 (patch) | |
| tree | c6e5dfcb251eddc3cc7a413c562849cb14fccedc /src/main_stack.c | |
| parent | 6dad43a768646ef0d8f06958446761eb8a1b3f93 (diff) | |
Created a mainstack datatype. Refactored server game states into separate functions.
Diffstat (limited to 'src/main_stack.c')
| -rw-r--r-- | src/main_stack.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/main_stack.c b/src/main_stack.c new file mode 100644 index 0000000..bae4a88 --- /dev/null +++ b/src/main_stack.c @@ -0,0 +1,52 @@ +#include "main_stack.h" +#include <stdlib.h> + +void main_stack_init(main_stack_t *m) +{ + assert(m != NULL); + + // assign card values to main stack + for(int i = 0; i < MAX_MAIN_STACK_CARDS; i++) + m->cards[i] = i + 1; + + // shuffle stack + for(int i = 0; i < 3 * MAX_MAIN_STACK_CARDS; i++) + { + uint32_t x = rand() % MAX_MAIN_STACK_CARDS; + uint32_t y = rand() % MAX_MAIN_STACK_CARDS; + card tmp = m->cards[x]; + m->cards[x] = m->cards[y]; + m->cards[y] = tmp; + } +} + +card main_stack_remove_card(main_stack_t *m) +{ + assert(m != NULL); + + for(int i = 0; i < MAX_MAIN_STACK_CARDS; i++) + { + card c = m->cards[i]; + if(c == 0) + continue; + m->cards[i] = 0; + return c; + } + return 0; // stack empty +} + +uint8_t main_stack_size(const main_stack_t *m) +{ + assert(m != NULL); + + uint8_t count = 0; + + for(uint8_t i = 0; i < MAX_MAIN_STACK_CARDS; i++) + { + if(m->cards[i] == 0) + continue; + count++; + } + + return count; +} |
