/** r�ckgabe zu bool?! **/ TSingleField CSpiel::set_stone(const CTurn* turn){ #ifdef _DEBUG if (turn == 0) error_exit("turn ist nullpointer!", 20); //debug #endif int playernumber = turn->get_playernumber(); CStone* stone = CSpiel::m_player[playernumber].get_stone(turn->get_stone_number()); stone->mirror_rotate_to(turn->get_mirror_count(), turn->get_rotate_count()); return set_stone(stone, playernumber, turn->get_y(), turn->get_x()); }
int mini(char *br, char min_player, char max_player, int depth, int nrounds) { int alfa = INT_MAX; int node = 0; for (int i = 0; i < NUM_ALL; ++i) { if (set_stone(br, max_player, i)) { if (depth >= max_depth || game_winner(br, min_player, max_player) != NO_MATCH) { node = -evaluate(br, min_player, max_player); } else { node = max(br, max_player, min_player, depth + 1, nrounds); } *(br + i) = ' '; if (node < alfa) { alfa = node; } } } return alfa; }
void CSpiel::follow_situation(int vorher_playernumber, const CSpiel* vorher_situation, const CTurn* turn) { memcpy(m_game_field, vorher_situation->get_field_pointer(), CSpiel::m_field_size_x * CSpiel::m_field_size_y); memcpy(m_player,vorher_situation->m_player,sizeof(m_player)); set_stone(turn); }