Exemplo n.º 1
0
void game::move(const point & p, border_names side)
{
	//Border offset (for indication)
	auto s = GAME_SCALE;
	point boff;

	//Print
	_board.place(p, side);
	printf("[GAME] Placing ");
	switch (side)
	{
	case border_names::top:    boff = point(s/2, 0); printf("top ");   break;
	case border_names::left:   boff = point(0, s/2); printf("left");   break;
	case border_names::right:  boff = point(s, s/2); printf("right "); break;
	case border_names::bottom: boff = point(s/2, s); printf("bottom"); break;
	default: printf("???"); break;
	}
	printf(" at (%d,%d) - %c\n", p.x, p.y, _turn == player ? 'p' : 'o');

#if USE_ANIMATIONS
	//Indicate move
	_lastmove_position = p*GAME_SCALE + GAME_OFFSET + boff;
	_lastmove_radius = GAME_SCALE/2;
#endif

	//Get newly closed cells
	std::vector<point> new_squares = dirty_cells(p, side);
	int size = new_squares.size();

	//If any
	if (size != 0)
	{
		//Assign and add scores
		_board.assign(new_squares, _turn);
		if (_turn == player) _score.player += size;
		else                 _score.opponent += size;
	}
	//Else turn is over
	else switch_turn();
}
Exemplo n.º 2
0
int main(int argc, char* argv[])
{
	struct game *game = create_game();

	apply_sc(0, &zero_value, game); switch_turn(game);

	apply_sc(100, &help_value, game); switch_turn(game);
	apply_cs(&K_value, 100, game); switch_turn(game);
	apply_cs(&S_value, 100, game); switch_turn(game);
	apply_sc(100, &get_value, game); switch_turn(game);
	apply_sc(100, &zero_value, game); switch_turn(game);

	apply_cs(&put_value, 0, game); switch_turn(game);
	apply_sc(0, &zero_value, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);

	apply_cs(&K_value, 100, game); switch_turn(game);
	apply_cs(&S_value, 100, game); switch_turn(game);
	apply_sc(100, &get_value, game); switch_turn(game);
	apply_sc(100, &zero_value, game); switch_turn(game);

	apply_cs(&put_value, 0, game); switch_turn(game);
	apply_sc(0, &zero_value, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game);  switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game); // 8192

	apply_cs(&K_value, 100, game); switch_turn(game);
	apply_cs(&S_value, 100, game); switch_turn(game);
	apply_sc(100, &get_value, game); switch_turn(game);
	apply_sc(100, &zero_value, game); switch_turn(game);

	print_game(game);

	apply_cs(&put_value, 0, game); switch_turn(game);
	apply_sc(0, &zero_value, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);

	apply_sc(100, &attack_value, game); switch_turn(game);
	apply_cs(&K_value, 100, game); switch_turn(game);
	apply_cs(&S_value, 100, game); switch_turn(game);
	apply_sc(100, &get_value, game); switch_turn(game);
	apply_sc(100, &zero_value, game); switch_turn(game);

	apply_cs(&put_value, 0, game); switch_turn(game);
	apply_sc(0, &zero_value, game); switch_turn(game);

	apply_cs(&K_value, 100, game); switch_turn(game);
	apply_cs(&S_value, 100, game); switch_turn(game);
	apply_sc(100, &get_value, game); switch_turn(game);
	apply_sc(100, &zero_value, game); switch_turn(game);

	apply_cs(&put_value, 0, game); switch_turn(game);
	apply_sc(0, &zero_value, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game);  switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game); // 16384

	apply_cs(&K_value, 100, game); switch_turn(game);
	apply_cs(&S_value, 100, game); switch_turn(game);
	apply_sc(100, &get_value, game); switch_turn(game);
	apply_sc(100, &zero_value, game);

	print_game(game);

	apply_cs(&put_value, 0, game); switch_turn(game);
	apply_sc(0, &zero_value, game); switch_turn(game);
	apply_cs(&copy_value, 0, game); switch_turn(game);

	print_game(game);

	apply_cs(&put_value, 0, game); switch_turn(game);
	apply_sc(0, &zero_value, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&dbl_value, 0, game); switch_turn(game);
	apply_cs(&succ_value, 0, game); switch_turn(game);
	apply_cs(&revive_value, 0, game); switch_turn(game);

	print_game(game);

	destroy_game(game);

	return 0;
}