public Form1() { boardclass = new BoardClass(); cpuClass = new CpuClass[2]; cpuClass[0] = new CpuClass(); // BLACK cpuClass[1] = new CpuClass(); // WHITE delegateObj = new SetMoveProperty(setMove); nodeCountDelegate = new SetNodeCountProperty(setNodeCount); cpuMessageDelegate = new SetCpuMessageProperty(setCpuMessage); setPVLineDelegate = new SetCpuMessageProperty(setPVLine); setMPCInfoDelegate = new SetCpuMessageProperty(setMPCInfo); hintDelegate = new DoHintProperty(doHintProcess); boardclass.InitBoard(COLOR_BLACK); InitializeComponent(); comboBox1.SelectedIndex = 0; comboBox2.SelectedIndex = 3; // プレイヤー情報を初期化 playerArray = new Player[2]; playerArray[COLOR_BLACK] = new Player(Player.PLAYER_HUMAN, COLOR_BLACK); playerArray[COLOR_WHITE] = new Player(Player.PLAYER_CPU, COLOR_WHITE); // デフォルトプレイヤー nowPlayer = playerArray[COLOR_BLACK]; if (nowColor == COLOR_BLACK) { label1.BackColor = Color.PowderBlue; label2.BackColor = Control.DefaultBackColor; } else { label2.BackColor = Color.PowderBlue; label1.BackColor = Control.DefaultBackColor; } // 探索時間表示用 m_sw = new Stopwatch(); // ヒント表示用 m_hintList = new List<int[]>(); }
private CpuConfig SetCpuConfig(CpuClass cpuClass) { CpuConfig cpuConfig = new CpuConfig(); cpuConfig.bookFlag = cpuClass.GetBookFlag(); cpuConfig.bookVariability = cpuClass.GetBookVariability(); cpuConfig.casheSize = cpuClass.GetCasheSize(); cpuConfig.color = cpuClass.GetColor(); cpuConfig.exactDepth = cpuClass.GetExactDepth(); cpuConfig.mpcFlag = cpuClass.GetMpcFlag(); cpuConfig.searchDepth = cpuClass.GetSearchDepth(); cpuConfig.tableFlag = cpuClass.GetTableFlag(); cpuConfig.winLossDepth = cpuClass.GetWinLossDepth(); return cpuConfig; }
private string ConvertEvaltoString(int eval, CpuClass cpu) { StringBuilder evalSb = new StringBuilder(); int empty = cppWrapper.CountBit(~(boardclass.GetBlack() | boardclass.GetWhite())); if (empty <= cpu.GetExactDepth()) { if (eval >= 0) { evalSb.Append("+"); } evalSb.Append(eval); } else if (empty <= cpu.GetWinLossDepth()) { if (eval > 0) { evalSb.Append("WIN"); } else if (eval < 0) { evalSb.Append("LOSS"); } else { evalSb.Append("DRAW"); } } else { if (eval >= 0) { evalSb.Append("+"); } evalSb.Append((eval / (double)EVAL_THRESHOLD).ToString("f3")); } // CPUが定石から手を算出した場合 if (cppWrapper.GetIsUseBook()) { evalSb.Append("(book)"); } // 中断ボタンが押された場合 if (m_abort) { evalSb.Append("?(abort)"); m_cpuFlagProperty = false; m_abort = false; } return evalSb.ToString(); }