今天稍微放松了一天,但是也稍微看了看项目,发现了部分小bug并进行了修改,第一个就是,在人机大战后,没有判断黑白棋输赢,这个直接就将判断输赢的函数加载人机大战后面即可。
if (judge(pos.r, pos.c))
{
if (winner() == Black)
{
MessageBox(GetHWnd(), "黑棋赢", "hit", MB_OK);
}
else
{
MessageBox(GetHWnd(), "白棋赢", "hit", MB_OK);
}
}
还有就是稍微调整了一下判断输赢的函数,删掉了一些无用代码,更简洁了一点
int winner() //判断胜者是谁
{
int i, j;
int who = pos.player;
for (i = 0; i < 15; i++)
{
for (j = 0; j < b_wide - 4; j++) {
if (board[i][j] == who && board[i][j + 1] == who &&
board[i][j + 2] == who && board[i][j + 3] == who && //横向遍历
board[i][j + 4] == who) {
return board[i][j];
}
}
}
for (i = 0; i < b_wide - 4; i++) {
for (j = 0; j < b_wide; j++) {
if (board[i][j] == who && board[i + 1][j] == who &&
board[i + 2][j] == who && board[i + 3][j] == who && //纵向遍历
board[i + 4][j] == who) {
return board[i][j];
}
}
}
for (i = 0; i < b_wide - 4; i++) {
for (j = 0; j < b_wide - 4; j++) {
if (board[i][j] == who && board[i + 1][j + 1] == who &&
board[i + 2][j + 2] == who && board[i + 3][j + 3] == who && //右斜向遍历
board[i + 4][j + 4] == who) {
return board[i][j];
}
}
}
for (i = 0; i < b_wide - 4; i++) {
for (j = 4; j < b_wide; j++) {
if (board[i][j] == who && board[i + 1][j - 1] == who &&
board[i + 2][j - 2] == who && board[i + 3][j - 3] == who && //左斜向遍历
board[i + 4][j - 4] == who) {
return board[i][j];
}
}
}
return 0;
} //判断 //判断
bool judge(int x, int y)
{
//获取棋手
int who = pos.player;
int i,j;
for (i = 0; i < 15; i++)
{
for (j = 0; j < b_wide - 4; j++) {
if (board[i][j] == who && board[i][j + 1] == who &&
board[i][j + 2] == who && board[i][j + 3] == who && //横向遍历
board[i][j + 4] == who) {
return true;
}
}
}
for (i = 0; i < b_wide - 4; i++) {
for (j = 0; j < b_wide; j++) {
if (board[i][j] == who && board[i + 1][j] == who &&
board[i + 2][j] == who && board[i + 3][j] == who && //纵向遍历
board[i + 4][j] == who) {
return true;
}
}
}
for (i = 0; i < b_wide- 4; i++) {
for (j = 0; j < b_wide - 4; j++) {
if (board[i][j] == who && board[i + 1][j + 1] == who &&
board[i + 2][j + 2] == who && board[i + 3][j + 3] == who && //右斜向遍历
board[i + 4][j + 4] == who) {
return true;
}
}
}
for (i = 0; i < b_wide - 4; i++) {
for (j = 4; j < b_wide; j++) {
if (board[i][j] == who && board[i + 1][j - 1] == who &&
board[i + 2][j - 2] == who && board[i + 3][j - 3] == who && //左斜向遍历
board[i + 4][j - 4] == who) {
return true;
}
}
}
return false;
}
、