diff --git a/TicTacToeEx/T3EBoard.cpp b/TicTacToeEx/T3EBoard.cpp index 812dc82..1e20b04 100644 --- a/TicTacToeEx/T3EBoard.cpp +++ b/TicTacToeEx/T3EBoard.cpp @@ -68,10 +68,72 @@ // �߂�l�F�R�}��łꏊ int T3EBoard::CPU() { - int place = 0; - if (m_Turn == 1 && m_NextPlayer == PLAYER1)return 1; + int place = 0; + int NextBoard[BOARD_SIZE]; + int best; + int val; + + //��莞 + if (m_NextPlayer == PLAYER1) { + best = INT_MIN; + //��肸�‘�����l�݂ɓ����邩���o + for (int i = 0; i < BOARD_SIZE; i++) { + if (m_Board[i] == 0) { + //���̋ǖʂ��i�[ + for (int j = 0; j < BOARD_SIZE; j++) { + NextBoard[j] = m_Board[j]; + } + SetStone(NextBoard, i, m_NextPlayer, m_Turn); + //�]���l���Z�o + val = Minmax(NextBoard, 1 - m_NextPlayer, m_Turn, 12); + //���̏ꍇ�ő�l�����߂� + if (best < val) { + best = val; + place = i; + } + //�l�݂ɓ�����place�����‚��������ɂ���place�Ԃ� + if (best == 1) { + std::cout << "CPU => " << place << std::endl; + return place; + } + } + } + std::cout << "CPU => " << place << std::endl; + return place; + + } + // ��莞 + else { + best = INT_MAX; + //��肸�‘�����l�݂ɓ����邩���o + for (int i = 0; i < BOARD_SIZE; i++) { + if (m_Board[i] == 0) { + //���̋ǖʂ��i�[ + for (int j = 0; j < BOARD_SIZE; j++) { + NextBoard[j] = m_Board[j]; + } + SetStone(NextBoard, i, m_NextPlayer, m_Turn); + //�]���l���Z�o + val = Minmax(NextBoard, 1 - m_NextPlayer, m_Turn+1, 12); + //���̏ꍇ�ŏ��l�����߂� + if (best > val) { + best = val; + place = i; + } + //�l�݂ɓ�����place�����‚��������ɂ���place�Ԃ� + if (best == -1) { + std::cout << "CPU => " << place << std::endl; + return place; + } + } + } + std::cout << "CPU => " << place << std::endl; + return place; + } + + printf("���肦�Ȃ��Ƃ͂��������Ǘ����ŏꏊ���߂܂�\n"); do { place = rand() % BOARD_SIZE; } while (m_Board[place] != NONE);