int main() { int x0, y0, x1, y1; int turnID; cin >> turnID; currBotColor = grid_white; for (int i = 0; i < turnID; i++) { cin >> x0 >> y0 >> x1 >> y1; if (x0 == -1) currBotColor = grid_black; if (x0 >= 0) ProcStep(x0, y0, x1, y1, -currBotColor, false); if (i < turnID - 1) { cin >> x0 >> y0 >> x1 >> y1; if (x0 >= 0) ProcStep(x0, y0, x1, y1, currBotColor, false); } }怎么得到上一局自己下的棋
时间: 2024-03-04 16:49:25 浏览: 90
在这段代码中,记录上一局自己下的棋需要在循环中进行保存。具体来说,可以使用一个变量 `lastMove` 来保存上一步自己下的棋的位置。
在每次循环中,如果当前读入的是对手的落子,则不需要更新 `lastMove`;如果当前读入的是自己的落子,则将 `lastMove` 更新为自己的落子位置。
具体代码如下:
```c++
int main() {
int x0, y0, x1, y1;
int turnID;
cin >> turnID;
currBotColor = grid_white;
pair<int, int> lastMove = make_pair(-1, -1); // 初始化为无效位置
for (int i = 0; i < turnID; i++) {
cin >> x0 >> y0 >> x1 >> y1;
if (x0 == -1) currBotColor = grid_black;
if (x0 >= 0) {
ProcStep(x0, y0, x1, y1, -currBotColor, false);
if (currBotColor == -1) { // 如果当前是黑方
lastMove = make_pair(x1, y1); // 更新上一步的位置
}
}
if (i < turnID - 1) {
cin >> x0 >> y0 >> x1 >> y1;
if (x0 >= 0) {
ProcStep(x0, y0, x1, y1, currBotColor, false);
if (currBotColor == 1) { // 如果当前是白方
lastMove = make_pair(x1, y1); // 更新上一步的位置
}
}
}
}
// 此时 lastMove 就是上一步自己下的棋的位置
}
```
阅读全文