void ChessGame::Man_Machine() { Time time; int minutes1 = 0; int seconds1 = 0; clock_t start_time = clock(); while (1) { start_time = clock(); //先有棋手1走棋 man->go(); seconds1 +=clock()-start_time; time.timedisplay(minutes1,seconds1); if (chess->checkOver()) { chess->init(); break; } start_time = clock(); //由ai走 ai->go(); seconds1+=clock()-start_time; time.timedisplay(minutes1, seconds1); if (chess->checkOver()) { chess->init(); break; } } }void Man::go() { // 等待棋士有效落子 MOUSEMSG msg; ChessPos pos; while (1) { //获取鼠标点击信息 msg = GetMouseMsg(); //通过chess对象,来调用判断落子是否有效,以及落子功能 if (msg.uMsg == WM_LBUTTONDOWN && chess->clickBoard(msg.x, msg.y, &pos)) { break; } } // 落黑子 chess->chessDown(&pos, CHESS_BLACK); } 优化
时间: 2024-04-20 13:24:41 浏览: 30
根据您提供的代码片段,我注意到一些可以进行优化的地方:
1. 在`ChessGame::Man_Machine()`函数中,使用了`clock()`函数来测量时间。然而,`clock()`函数返回的是处理器时间,并不是真实经过的时间。建议改用`std::chrono`库中的函数,如`std::chrono::steady_clock`来测量真实经过的时间。
2. 在`ChessGame::Man_Machine()`函数中,更新时间变量`seconds1`时,使用了`clock()`函数的差值。然而,`clock()`函数返回的是处理器时间的总数,而不是以秒为单位的时间差。建议使用`std::chrono::duration_cast`来将时间差转换为秒。
3. 在`ChessGame::Man_Machine()`函数中,计算时间差之后,没有重置`start_time`变量。这将导致每次循环都会基于之前的时间差进行累加,而不是从当前循环的开始重新计时。建议将`start_time = clock();`移动到循环开始之前。
4. 在`Man::go()`函数中,使用了一个无限循环来等待有效落子。这样的实现可能会占用大量的CPU资源。建议使用合适的方法来等待鼠标点击,比如使用事件驱动或异步回调。
5. 在`Man::go()`函数中,没有处理鼠标点击位置无效或越界的情况。建议添加错误处理机制,以便在出现无效点击时能够给出相应的提示或重新获取点击位置。
6. 在`Man::go()`函数中,落子之前没有更新棋盘状态。建议在调用`chess->chessDown()`函数之前,更新棋盘状态。
综上所述,以上是对代码片段的优化建议。如果还有其他问题或需求,请继续提问。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)