summaryrefslogtreecommitdiff
path: root/src/game.c
blob: afb8fa082cc0b9512cc2a7dfcb1f9b89eb2988bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "game.h"
#include "card.h"
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
#include <unistd.h>

void init_mainstack(card* stack, const uint32_t size)
{
	// assign card values to main stack
	for(uint32_t i=0, val=MIN_CARD; i<size; i++, val++)
		stack[i] = val;

	// shuffle stack
	for(uint32_t i=0; i<3*size; i++)
	{
		uint32_t x = rand() % size;
		uint32_t y = rand() % size;
		card tmp = stack[x];
		stack[x] = stack[y];
		stack[y] = tmp;
	}
}

void start_game(void)
{
	bool running = true;
	int cards = MAX_CARD - MIN_CARD + 1;
	card mainstack[cards];
	gamestate state = STATE_DEALCARDS;
	int input;

	srand(time(0));

	init_mainstack(mainstack, cards);

	// main game loop
	while(running)
	{
		input = getch(); // ERR if no key pressed

		switch(state)
		{
			case STATE_DEALCARDS: // deal cards to players
				// dealcards(mainstack);
				state = STATE_SELECTCARD;
				break;
			case STATE_SELECTCARD: // player has to select own card
				// if(input != ERR)
				//	cardselect(input);
				// if(input == '\n')
				// {
				//	get_selected_card();
				//	state = STATE_WAIT_OPPONENTCARDS
				// }
				break;
			case STATE_WAIT_OPPONENTCARDS: // wait until all opponents have selected their cards
				// if(opponent_cards_rdy())
				// {
				//	if(lowest_card_player() == own_id)
				//		state = STATE_SELECTSTACK;
				//	else
				//		state = STATE_WAIT_OPPONENTSTACK;
				// }
				break;
			case STATE_WAIT_OPPONENTSTACK: // wait until opponent has selected a stack
				break;
			case STATE_SELECTSTACK: // player has to select a stack
				//if(input != ERR)
				//	stackselect(input);
				//if(input == '\n')
				//{
				//	get_selected_stack();
				//	update_stack();
				//
				//	if(players_remaining())
				//		state = STATE_WAIT_OPPONENTSTACK;
				//	else
				//		state = STATE_SELECTCARD;
				//}
				break;
			default:
				assert(false); // should never happen
		}

		usleep(1000);
	}
}