2023-08-04 16:28:41 +02:00
|
|
|
//
|
|
|
|
// Created by maximilian on 7/13/23.
|
|
|
|
//
|
|
|
|
|
|
|
|
#include <boost/rational.hpp>
|
|
|
|
#include <cstdint>
|
|
|
|
#include <iostream>
|
|
|
|
#include <optional>
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
#include "game_state.h"
|
2023-08-05 00:34:31 +02:00
|
|
|
#include "download.h"
|
2023-08-04 16:28:41 +02:00
|
|
|
|
2023-08-05 00:34:31 +02:00
|
|
|
namespace Hanabi {
|
2023-08-04 16:28:41 +02:00
|
|
|
|
|
|
|
void test_game() {
|
|
|
|
HanabiState<2, 2, 5, 10> state;
|
|
|
|
state._stacks[0] = 2;
|
|
|
|
state._stacks[1] = 3;
|
2023-08-05 00:34:31 +02:00
|
|
|
Card r41 = {0, 4, 1};
|
2023-08-04 16:28:41 +02:00
|
|
|
state._draw_pile.push_back({r41, 1});
|
|
|
|
state._hands[0] = {y0, y1, y2, r0, r1};
|
|
|
|
state._hands[1] = {r1, r1, y1, r3, r2};
|
|
|
|
state._draw_pile_size = 1;
|
|
|
|
state._card_positions[r41] = draw_pile;
|
|
|
|
|
|
|
|
auto state2 = state;
|
|
|
|
|
|
|
|
auto a = state.play(4);
|
|
|
|
std::cout << state;
|
|
|
|
state.revert(a);
|
|
|
|
|
|
|
|
std::cout << state << std::endl;
|
|
|
|
std::cout << state2 << std::endl;
|
|
|
|
assert(state._hands == state2._hands);
|
|
|
|
assert(state._draw_pile == state2._draw_pile);
|
|
|
|
assert(state._card_positions == state2._card_positions);
|
|
|
|
assert(state == state2);
|
|
|
|
}
|
|
|
|
|
2023-08-05 11:55:46 +02:00
|
|
|
void download() { get_game("314159.json"); }
|
2023-08-04 16:28:41 +02:00
|
|
|
|
2023-08-05 00:34:31 +02:00
|
|
|
void print_sizes() {
|
|
|
|
std::cout << "size of card -> hand map: " << sizeof(HanabiState<5, 3, 4, 5>)
|
|
|
|
<< std::endl;
|
2023-08-04 16:28:41 +02:00
|
|
|
|
|
|
|
unsigned exp = 32;
|
2023-08-05 00:34:31 +02:00
|
|
|
std::cout << "Pair size: " << sizeof(std::pair<std::uint32_t, float>)
|
|
|
|
<< std::endl;
|
2023-08-04 16:28:41 +02:00
|
|
|
std::cout << sizeof(boost::rational<int>) << std::endl;
|
|
|
|
std::cout << (1ul << exp) << std::endl;
|
|
|
|
}
|
|
|
|
|
2023-08-05 00:34:31 +02:00
|
|
|
}
|
|
|
|
|
2023-08-04 16:28:41 +02:00
|
|
|
int main() {
|
2023-08-05 00:34:31 +02:00
|
|
|
// Hanabi::test_game();
|
|
|
|
Hanabi::download();
|
2023-08-04 16:28:41 +02:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|