soft-summer-2021 / summer2021

程序设计实践 (2021夏季学期)
34 stars 6 forks source link

C++运行卡死 #66

Closed ZhMX1 closed 3 years ago

ZhMX1 commented 3 years ago

出现问题的背景:正常情况下,ai的操作是在玩家下棋后计算不同位置的分数,选择分数高的下棋,然后会在控制台上显示本次的分数矩阵,然后再easyX界面上下棋(显示棋子图像)。 出现的问题:在本次玩家下棋后,ai突然卡住,分数矩阵没有在控制台出现,也没有出现棋子,并且尝试断点,没有找到卡住的点。没有任何报错信息,比如TLE或者RE,就是ai没有下棋,同时玩家无法下棋(即ai下棋卡住),在此之前运行顺利。 在这一步之后,如果ai直接下的话,可以直接ai胜利结束本局 卡住的界面如下 image

hzy1721 commented 3 years ago

你提供的信息太少,判断不出来什么情况。

AI 卡住也就是没有执行打印分数矩阵、下棋等语句,应该是在前面执行的语句里死循环了,或者跳过了 AI 下棋的语句,通过调试应该能找到原因。

而且卡住的情况也很特殊,是 AI 即将胜利的最后一步,也需要检查一下是不是判断胜利、游戏结束相关的逻辑写的有问题。

ZhMX1 commented 3 years ago

在前面的数十个AI下棋里面没有出现任何问题(比如图中的所有黑棋子),然后前面试运行的时候也完全能做到判断对局结束并给出胜利结果,就是在这一局卡住了,可以说是一个不定时出现的bug?绝大部分时候都没有,不知道跟程序编写是否有关

hzy1721 commented 3 years ago

应该是程序编写的问题,也不太可能是别的原因。建议加入一些打印语句,多做几次实验,看一下出问题的时候执行到哪里卡住了。