include<iostream> #include<graphics.h> int isorwin(int a, int b); int flag = 0; int board[20][20] = { 0 }; / void initgame(void) { initgraph(600, 500); IMAGE img; loadimage(&img, L"五子棋.jpg");//贴图 putimage(0, 0, &img); //绘制棋盘: setlinecolor(BLACK); for (int i = 25; i <= 500; i += 25) { line(i, 0, i, 500);//竖线 line(0, i, 500, i);//横线 } line(501, 0, 501, 500);//边界线加粗 //提示语: } using namespace std; //下棋: void playchess() { //鼠标: MOUSEMSG m;//保存鼠标消息 int x=0, y=0; int a = 0; int b = 0; HWND hwnd = GetHWnd(); while (1) { m = GetMouseMsg();//获取一个鼠标消息 for (int i = 1; i < 20; i++) { for (int j = 1; j < 20; j++) { if (abs(m.x - i * 25) < 12 && abs(m.y - j * 25) < 12) { x = i * 25; y = j * 25; a = i; b = j; } } } //黑白交替: if (m.uMsg == WM_LBUTTONDOWN) { //解决棋子重叠: if (board[a][b] != 0) { MessageBoxA(hwnd,"这里已经有棋子了","提示",MB_OK); continue; } if (flag % 2 == 0)//偶数 { setfillcolor(BLACK); solidcircle(x, y, 10); board[a][b] = 1; } else//奇数 { setfillcolor(WHITE); solidcircle(x, y, 10); board[a][b] = 2; } flag++; } //调用:函数 if (isorwin(a, b)) { if (flag % 2 == 0) { MessageBoxA(hwnd, "玩家2胜利", "游戏结束!", MB_OK); return; } else { MessageBoxA(hwnd, "玩家1胜利", "游戏结束!", MB_OK); return; } } } } //判断游戏输赢: int isorwin(int a, int b) { int i=0, j=0; int t = 2 - flag % 2; for (i = a - 4, j = b; i <= a; i++) { if (i >= 0 && i < 16 && t == board[i][j] && t == board[i + 1][j] && t == board[i + 2][j] && t == board[i + 3][j] && t == board[i + 4][j]) return 1; } for (i = a, j = b - 4; j <= b; j++) { if (j >= 0 && j < 16 && t == board[i][j] && t == board[i][j + 1] && t == board[i][j + 2] && t == board[i][j + 3] && t == board[i][j + 4]) return 1; } for (i = a - 4 , j = b - 4; i <= a &&j <= b; i++, j++) { if (i >= 0 && i < 16 && j >= 0 && j < 16 && t == board[i][j] && t == board[i + 1][j + 1] && t == board[i + 2][j + 2] && t == board[i + 3][j + 3] && t == board[i + 4][j + 4]) return 1; } for (i = a - 4 , j = b + 4; i <= a && j >= 1; i++, j--) if (i >= 0 && i < 16 && j >= 0 && j < 16 && t == board[i][j] && t == board[i + 1][j - 1] && t == board[i + 2][j - 2] && t == board[i + 3][j - 3] && t == board[i + 4][j - 4]) return 1; return 0; } int main() { initgame(); playchess(); while (1); return 0;
}
本文含有隐藏内容,请 开通VIP 后查看