用eaxyx 寫的五子棋,功能包括: 禁手判斷,棋局儲存,悔棋,重新開局,全部通過滑鼠操作
阿新 • • 發佈:2019-01-02
斷斷續續寫的第一個比較滿意的作品,算是C語言的一個小結吧,可惜以現在的能力,要寫人機對戰現實在覺得困難,以後有機會再來補充吧
#include <stdio.h> #include <graphics.h> #include <math.h> #include <conio.h>//getch()、kbhit() 用 #include <Windows.h> #define N 15 //15*15棋盤 #define M 44 //棋盤中最近的兩平行線之間的座標相減距離所得距離 #define Width 930 //畫布長寬 #define High 700 #define Bk_bigin_x 10 //背景圖片起始點 #define Bk_bigin_y 120 #define Qp_begin_x 281-10 //棋盤左上角在畫布上的座標 #define Qp_begin_y 160-120 enum { wu = 1, hei = 2, bai = 3 }; //棋子情況 無子為wu,黑子為hei,白子為bai int p[N][N] = { wu }; //記錄棋盤落子情況 無子為1,黑子為2,白子為3 int rank[N][N]; int qizi_amount; int gameover; //判斷遊戲是否結束 int IsJinshou; //判斷黑子是否禁手 enum playerturn { player1, player2 }; //輪到哪一位玩家落子 enum playerturn playerturn; //黑子先下 struct zuobiao { int x; int y; }; struct zuobiao lz_zuobiao, qp_zuobiao; //第一個用於bottondown的使用;第二個用於jinshou、judgewin的使用。必須使用兩個結構,不能只用一個 IMAGE img_bk; IMAGE img_Black_Chess; IMAGE img_White_Chess; IMAGE img_Without_Chess; MOUSEMSG a; //與滑鼠操作有關的結構體 MOUSEMSG b; FILE *qj_record, *qj_import; //指向寫入檔案的指標、讀取檔案的指標--棋子狀況為wu,bai ,hei FILE *lz_record, *lz_import; //落子順序 1.2.3..... void drawqp() { gameover = 0;//資料初始化 IsJinshou = 0; playerturn = player1;//五子棋規則,黑先手 qizi_amount = 0;//棋盤上棋子的數量 for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { p[i][j] = wu;//棋盤棋子清零 rank[i][j] = 0;//棋盤落子順序清零 } //匯入相關圖片 loadimage(&img_bk, L"C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\五子棋盤.PNG"); //匯入背景圖片 loadimage(&img_Black_Chess, L"C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\黑2.PNG");//匯入黑子圖片 loadimage(&img_White_Chess, L"C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\白2.PNG");//匯入白子圖片 loadimage(&img_Without_Chess, L"C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\無子.PNG");//匯入無子圖片 putimage(0, 0, Width, High, &img_bk, Bk_bigin_x, Bk_bigin_y); //輸出背景圖片 setbkmode(TRANSPARENT); settextcolor(WHITE); settextstyle(15, 0, _T("黑體")); outtextxy(20, High*0.7 + 10, L"Tips:"); outtextxy(20, High*0.7 + 30, L"1.按右鍵重新開局"); outtextxy(20, High*0.7 + 50, L"2.中途退出可儲存棋局"); outtextxy(20, High*0.7 + 70, L"3.棋局結束前按滑鼠中鍵可悔棋"); } void impor_data() { //讀取棋盤棋子狀況資訊 if (qj_import = fopen("C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\棋局.txt", "r")) { int pos; int h = 0, b = 0; //黑子,白子 的數量 for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { pos = (long)(i *N + j) * sizeof(int); fseek(qj_import, pos, SEEK_SET); //定位檔案指標的位置 fread(&p[i][j], sizeof(int), 1, qj_import); if (p[i][j] == hei) { putimage(Qp_begin_x + j*M - 20, Qp_begin_y + i*M - 20, &img_Black_Chess); h++; } if (p[i][j] == bai) { putimage(Qp_begin_x + j*M - 20, Qp_begin_y + i*M - 20, &img_White_Chess); b++; } } fclose(qj_import); if (h == b) playerturn = player1; else playerturn = player2; } //讀取棋盤落子順序資訊 if (lz_import = fopen("C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\落子順序.txt", "r")) { int pos; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { pos = (long)(i *N + j) * sizeof(int); fseek(lz_import, pos, SEEK_SET); //定位檔案指標的位置 fread(&rank[i][j], sizeof(int), 1, lz_import); if (rank[i][j] > qizi_amount) qizi_amount = rank[i][j]; } fclose(lz_import); } } void place() { a = GetMouseMsg(); //獲取滑鼠操作資訊 for (int i = 0; i < N; i++) if (abs(Qp_begin_x + i*M - a.x) < M*0.5) { lz_zuobiao.x = i; break; }//確定滑鼠最接近的點的座標 for (int i = 0; i < N; i++) if (abs(Qp_begin_y + i*M - a.y) < M*0.5) { lz_zuobiao.y = i; break; } } void bottondown() { if (p[lz_zuobiao.y][lz_zuobiao.x] == wu) //滑鼠所對應於棋盤的點為無子時 { if (a.uMsg == WM_LBUTTONDOWN && playerturn == player1) //點選左鍵且輪到玩家1 { p[lz_zuobiao.y][lz_zuobiao.x] = hei; qp_zuobiao = lz_zuobiao; //為後面判斷禁手輸贏準備 qizi_amount++; rank[lz_zuobiao.y][lz_zuobiao.x] = qizi_amount; putimage(Qp_begin_x + qp_zuobiao.x*M - 20, Qp_begin_y + qp_zuobiao.y*M - 20, &img_Black_Chess); playerturn = player2; //玩家置換 為下一次到這裡的訓話做準備 //記錄棋局狀況 qj_record = fopen("C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\棋局.txt", "w"); fwrite(p, sizeof(int), N*N, qj_record);//記錄下一次落子輪到哪一位玩家 fclose(qj_record); //記錄落子順序 lz_record = fopen("C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\落子順序.txt", "w"); fwrite(rank, sizeof(int), N*N, lz_record); fclose(lz_record); } else if (a.uMsg == WM_LBUTTONDOWN && playerturn == player2) { p[lz_zuobiao.y][lz_zuobiao.x] = bai; qp_zuobiao = lz_zuobiao; qizi_amount++; rank[lz_zuobiao.y][lz_zuobiao.x] = qizi_amount; putimage(Qp_begin_x + qp_zuobiao.x*M - 20, Qp_begin_y + qp_zuobiao.y*M - 20, &img_White_Chess); playerturn = player1; //記錄棋局狀況 qj_record = fopen("C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\棋局.txt", "w"); fwrite(p, sizeof(int), N*N, qj_record);//記錄下一次落子輪到哪一位玩家 fclose(qj_record); //記錄落子順序 lz_record = fopen("C:\\Users\\pg113\\Desktop\\遊戲程式碼\\素材庫\\落子順序.txt", "w"); fwrite(rank, sizeof(int), N*N, lz_record); fclose(lz_record); } } } int jinshou() { int count1 = 0, count2 = 0; //黑子 若禁手 則IsJinshou=1、2、3; if (playerturn == player2)//說明當前為黑子的下棋 { //長連禁手 { //橫 for (int i = 1; i <= wu; i++) { if (p[qp_zuobiao.y][qp_zuobiao.x + i] == hei) count1++; else break; } for (int i = 1; i <= wu; i++) { if (p[qp_zuobiao.y][qp_zuobiao.x - i] == hei) count2++; else break; } if (count1 + count2 + 1 >= 6) { IsJinshou = 1; return 0; } count1 = 0; count2 = 0; //豎 for (int i = 1; i <= wu; i++) { if (p[qp_zuobiao.y + i][qp_zuobiao.x] == hei) count1++; else break; } for (int i = 1; i <= wu; i++) { if (p[qp_zuobiao.y - i][qp_zuobiao.x] == hei) count2++; else break; } if (count1 + count2 + 1 >= 6) { IsJinshou = 1; return 0; } count1 = 0; count2 = 0; //左上到右下 for (int i = 1; i <= wu; i++) { if (p[qp_zuobiao.y - i][qp_zuobiao.x - i] == hei) count1++; else break; } for (int i = 1; i <= wu; i++) { if (p[qp_zuobiao.y + i][qp_zuobiao.x + i] == hei) count2++; else break; } if (count1 + count2 + 1 >= 6) { IsJinshou = 1; return 0; } count1 = 0; count2 = 0; //右上到左下 for (int i = 1; i <= wu; i++) { if (p[qp_zuobiao.y - i][qp_zuobiao.x + i] == hei) count1++; else break; } for (int i = 1; i <= wu; i++) { if (p[qp_zuobiao.y + i][qp_zuobiao.x - i] == hei) count2++; else break; } if (count1 + count2 + 1 >= 6) { IsJinshou = 1; return 0; } count1 = 0; count2 = 0; } //三三禁手 { int a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0; int count33 = 0; //橫 { if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu) a1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu) a2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == wu) b1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == wu) b2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 2] == wu) c1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 2] == wu) c2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == wu) d1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == wu) d2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 3] == wu) e1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 3] == wu) e2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == wu) f1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == wu) f2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) g1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) g2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 3] == 0 && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) h1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 3] == 0 && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) h2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 2] == 0 && p[qp_zuobiao.y][qp_zuobiao.x - 3] == 0 && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) i1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 2] == 0 && p[qp_zuobiao.y][qp_zuobiao.x + 3] == 0 && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) i2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 2] == 0 && p[qp_zuobiao.y][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) j1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 2] == 0 && p[qp_zuobiao.y][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) j2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu && p[qp_zuobiao.y][qp_zuobiao.x - wu] == wu) k1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu && p[qp_zuobiao.y][qp_zuobiao.x - wu] == wu) k2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu && p[qp_zuobiao.y][qp_zuobiao.x - wu] == wu) l1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu && p[qp_zuobiao.y][qp_zuobiao.x - wu] == wu) l2 = 1; if ((c1 == 1 && d2 == 1) || (c2 == 1 && d1 == 1) || (a1 == 1 && g2 == 1) || (a2 == 1 && g1 == 1) || (e1 == 1 && b2 == 1) || (e2 == 1 && b1 == 1) || (c1 == 1 && i2 == 1) || (c2 == 1 && i1 == 1) || (a1 == 1 && l2 == 1) || (a2 == 1 && l1 == 1) || (c1 == 1 && h2 == 1) || (c2 == 1 && h1 == 1) || (a1 == 1 && k2 == 1) || (a2 == 1 && k1 == 1) || (e1 == 1 && f2 == 1) || (e2 == 1 && f1 == 1) || (b1 == 1 && j2 == 1) || (b2 == 1 && j1 == 1)) count33++; a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0; } //豎 { if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu) a1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu) a2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == wu) b1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == wu) b2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x] == wu) c1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x] == wu) c2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == wu) d1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == wu) d2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x] == wu) e1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x] == wu) e2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == wu) f1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == wu) f2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x] == wu) g1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x] == wu) g2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x] == 0 && p[qp_zuobiao.y - 4][qp_zuobiao.x] == wu) h1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x] == 0 && p[qp_zuobiao.y + 4][qp_zuobiao.x] == wu) h2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x] == 0 && p[qp_zuobiao.y - 3][qp_zuobiao.x] == 0 && p[qp_zuobiao.y - 4][qp_zuobiao.x] == wu) i1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x] == 0 && p[qp_zuobiao.y + 3][qp_zuobiao.x] == 0 && p[qp_zuobiao.y + 4][qp_zuobiao.x] == wu) i2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x] == 0 && p[qp_zuobiao.y - 3][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x] == wu) j1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x] == 0 && p[qp_zuobiao.y + 3][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x] == wu) j2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x] == wu && p[qp_zuobiao.y - wu][qp_zuobiao.x] == wu) k1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x] == wu && p[qp_zuobiao.y + wu][qp_zuobiao.x] == wu) k2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x] == wu && p[qp_zuobiao.y - wu][qp_zuobiao.x] == wu) l1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x] == wu && p[qp_zuobiao.y + wu][qp_zuobiao.x] == wu) l2 = 1; if ((c1 == 1 && d2 == 1) || (c2 == 1 && d1 == 1) || (a1 == 1 && g2 == 1) || (a2 == 1 && g1 == 1) || (e1 == 1 && b2 == 1) || (e2 == 1 && b1 == 1) || (c1 == 1 && i2 == 1) || (c2 == 1 && i1 == 1) || (a1 == 1 && l2 == 1) || (a2 == 1 && l1 == 1) || (c1 == 1 && h2 == 1) || (c2 == 1 && h1 == 1) || (a1 == 1 && k2 == 1) || (a2 == 1 && k1 == 1) || (e1 == 1 && f2 == 1) || (e2 == 1 && f1 == 1) || (b1 == 1 && j2 == 1) || (b2 == 1 && j1 == 1)) count33++; a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0; } //左上至右下 { if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu) a1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu) a2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == wu) b1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == wu) b2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == wu) c1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == wu) c2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == wu) d1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == wu) d2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == wu) e1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == wu) e2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == wu) f1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == wu) f2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == wu) g1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == wu) g2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == 0 && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == wu) h1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == 0 && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == wu) h2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == 0 && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == 0 && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == wu) i1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == 0 && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == 0 && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == wu) i2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == 0 && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == wu) j1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == 0 && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == wu) j2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == wu && p[qp_zuobiao.y - wu][qp_zuobiao.x - wu] == wu) k1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == wu && p[qp_zuobiao.y + wu][qp_zuobiao.x + wu] == wu) k2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == wu && p[qp_zuobiao.y - wu][qp_zuobiao.x - wu] == wu) l1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == wu && p[qp_zuobiao.y + wu][qp_zuobiao.x + wu] == wu) l2 = 1; if ((c1 == 1 && d2 == 1) || (c2 == 1 && d1 == 1) || (a1 == 1 && g2 == 1) || (a2 == 1 && g1 == 1) || (e1 == 1 && b2 == 1) || (e2 == 1 && b1 == 1) || (c1 == 1 && i2 == 1) || (c2 == 1 && i1 == 1) || (a1 == 1 && l2 == 1) || (a2 == 1 && l1 == 1) || (c1 == 1 && h2 == 1) || (c2 == 1 && h1 == 1) || (a1 == 1 && k2 == 1) || (a2 == 1 && k1 == 1) || (e1 == 1 && f2 == 1) || (e2 == 1 && f1 == 1) || (b1 == 1 && j2 == 1) || (b2 == 1 && j1 == 1)) count33++; a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0; } //右上至左下 { if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu) a1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu) a2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == wu) b1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == wu) b2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == wu) c1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == wu) c2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == wu) d1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == wu) d2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == wu) e1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == wu) e2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == wu) f1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == wu) f2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == wu) g1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == wu) g2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == 0 && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == wu) h1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == 0 && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == wu) h2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == 0 && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == 0 && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == wu) i1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == 0 && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == 0 && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == wu) i2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == 0 && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == wu) j1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == 0 && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == wu) j2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == wu && p[qp_zuobiao.y - wu][qp_zuobiao.x + wu] == wu) k1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == wu && p[qp_zuobiao.y + wu][qp_zuobiao.x - wu] == wu) k2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == wu && p[qp_zuobiao.y - wu][qp_zuobiao.x + wu] == wu) l1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == wu && p[qp_zuobiao.y + wu][qp_zuobiao.x - wu] == wu) l2 = 1; if ((c1 == 1 && d2 == 1) || (c2 == 1 && d1 == 1) || (a1 == 1 && g2 == 1) || (a2 == 1 && g1 == 1) || (e1 == 1 && b2 == 1) || (e2 == 1 && b1 == 1) || (c1 == 1 && i2 == 1) || (c2 == 1 && i1 == 1) || (a1 == 1 && l2 == 1) || (a2 == 1 && l1 == 1) || (c1 == 1 && h2 == 1) || (c2 == 1 && h1 == 1) || (a1 == 1 && k2 == 1) || (a2 == 1 && k1 == 1) || (e1 == 1 && f2 == 1) || (e2 == 1 && f1 == 1) || (b1 == 1 && j2 == 1) || (b2 == 1 && j1 == 1)) count33++; a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0; } if (count33 >= 2) { IsJinshou = 2; return 0; } } //四四禁手 { int a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0, m1 = 0, m2 = 0; int count44 = 0; //橫 { if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei) a1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei) a2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu) b1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu) b2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei) c1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei) c2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == wu) d1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == wu) d2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei) e1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei) e2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == hei) f1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == hei) f2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == wu) g1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == wu) g2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 3] == hei) h1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 3] == hei) h2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == hei) i1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == hei) i2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 4] == wu) j1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 4] == wu) j2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 4] == hei) k1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 4] == hei) k2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 4] == hei) l1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 4] == hei) l2 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x - 4] == hei) m1 = 1; if (p[qp_zuobiao.y][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y][qp_zuobiao.x + 4] == hei) m2 = 1; if ((g1 == 1 && a2 == 1) || (g2 == 1 && a1 == 1) || (c1 == 1 && d2 == 1) || (c2 == 1 && d1 == 1) || (f1 == 1 && b2 == 1) || (f2 == 1 && b1 == 1) || (e1 == 1 && c2 == 1) || (e2 == 1 && c1 == 1) || (h1 == 1 && a2 == 1) || (h2 == 1 && a1 == 1) || (a1 == 1 && i2 == 1) || (a2 == 1 && i1 == 1) || (j1 == 1) || (j2 == 1) || (k1 == 1) || (k2 == 1) || (l1 == 1) || (l2 == 1) || (m1 == 1) || (m2 == 1)) count44++; a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0, m1 = 0, m2 = 0; } //豎 { if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei) a1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei) a2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu) b1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu) b2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei) c1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei) c2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == wu) d1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == wu) d2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei) e1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei) e2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == hei) f1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == hei) f2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == wu) g1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == wu) g2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x] == hei) h1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x] == hei) h2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == hei) i1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == hei) i2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x] == wu) j1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x] == wu) j2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x] == hei) k1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x] == hei) k2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x] == hei) l1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x] == hei) l2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x] == hei) m1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x] == hei) m2 = 1; if ((g1 == 1 && a2 == 1) || (g2 == 1 && a1 == 1) || (c1 == 1 && d2 == 1) || (c2 == 1 && d1 == 1) || (f1 == 1 && b2 == 1) || (f2 == 1 && b1 == 1) || (e1 == 1 && c2 == 1) || (e2 == 1 && c1 == 1) || (h1 == 1 && a2 == 1) || (h2 == 1 && a1 == 1) || (a1 == 1 && i2 == 1) || (a2 == 1 && i1 == 1) || (j1 == 1) || (j2 == 1) || (k1 == 1) || (k2 == 1) || (l1 == 1) || (l2 == 1) || (m1 == 1) || (m2 == 1)) count44++; a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0, m1 = 0, m2 = 0; } //左上到右下 { if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei) a1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei) a2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu) b1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu) b2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei) c1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei) c2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == wu) d1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == wu) d2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei) e1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei) e2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == hei) f1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == hei) f2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == wu) g1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == wu) g2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == hei) h1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == hei) h2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == hei) i1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == hei) i2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == wu) j1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == wu) j2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == hei) k1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == hei) k2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == hei) l1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == hei) l2 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x - 4] == hei) m1 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x + 4] == hei) m2 = 1; if ((g1 == 1 && a2 == 1) || (g2 == 1 && a1 == 1) || (c1 == 1 && d2 == 1) || (c2 == 1 && d1 == 1) || (f1 == 1 && b2 == 1) || (f2 == 1 && b1 == 1) || (e1 == 1 && c2 == 1) || (e2 == 1 && c1 == 1) || (h1 == 1 && a2 == 1) || (h2 == 1 && a1 == 1) || (a1 == 1 && i2 == 1) || (a2 == 1 && i1 == 1) || (j1 == 1) || (j2 == 1) || (k1 == 1) || (k2 == 1) || (l1 == 1) || (l2 == 1) || (m1 == 1) || (m2 == 1)) count44++; a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0, m1 = 0, m2 = 0; } //右上到左下 { if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei) a1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei) a2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu) b1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu) b2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei) c1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei) c2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == wu) d1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == wu) d2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei) e1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei) e2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == hei) f1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == hei) f2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == wu) g1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == wu) g2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == hei) h1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == hei) h2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == hei) i1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == hei) i2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == wu) j1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == wu) j2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == wu && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == hei) k1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == wu && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == hei) k2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == hei && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == wu && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == hei) l1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == hei && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == wu && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == hei) l2 = 1; if (p[qp_zuobiao.y + 1][qp_zuobiao.x - 1] == wu && p[qp_zuobiao.y + 2][qp_zuobiao.x - 2] == hei && p[qp_zuobiao.y + 3][qp_zuobiao.x - 3] == hei && p[qp_zuobiao.y + 4][qp_zuobiao.x - 4] == hei) m1 = 1; if (p[qp_zuobiao.y - 1][qp_zuobiao.x + 1] == wu && p[qp_zuobiao.y - 2][qp_zuobiao.x + 2] == hei && p[qp_zuobiao.y - 3][qp_zuobiao.x + 3] == hei && p[qp_zuobiao.y - 4][qp_zuobiao.x + 4] == hei) m2 = 1; if ((g1 == 1 && a2 == 1) || (g2 == 1 && a1 == 1) || (c1 == 1 && d2 == 1) || (c2 == 1 && d1 == 1) || (f1 == 1 && b2 == 1) || (f2 == 1 && b1 == 1) || (e1 == 1 && c2 == 1) || (e2 == 1 && c1 == 1) || (h1 == 1 && a2 == 1) || (h2 == 1 && a1 == 1) || (a1 == 1 && i2 == 1) || (a2 == 1 && i1 == 1) || (j1 == 1) || (j2 == 1) || (k1 == 1) || (k2 == 1) || (l1 == 1) || (l2 == 1) || (m1 == 1) || (m2 == 1)) count44++; a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0, d1 = 0, d2 = 0, e1 = 0, e2 = 0, f1 = 0, f2 = 0, g1 = 0, g2 = 0, h1 = 0, h2 = 0, i1 = 0, i2 = 0, j1 = 0, j2 = 0, k1 = 0, k2 = 0, l1 = 0, l2 = 0, m1 = 0, m2 = 0; } if (count44 >= 2) { IsJinshou = 3; return 0; } } } } int judgewin() { int win = 0, wuzi = 0, count1 = 0, count2 = 0;//win 判斷是否贏(連成五子),為1時,則是 int judgepalyer; if (playerturn == player1) judgepalyer = bai; //bottondown 之後的palyerturn 置換 ;黑子下完後palyerturn 為player2 else if (playerturn == player2)judgepalyer = hei; //橫 for (int i = 1; i <= 4; i++) { if (p[qp_zuobiao.y][qp_zuobiao.x - i] == judgepalyer) count1++; else break; } for (int i = 1; i <= 4; i++) { if (p[qp_zuobiao.y][qp_zuobiao.x + i] == judgepalyer) count2++; else break; } if (count1 + count2 + 1 >= 5) { wuzi = 1; } else { count1 = 0; count2 = 0; }//為下面其他方向的檢測準備 //豎 for (int i = 1; i <= 4; i++) { if (p[qp_zuobiao.y - i][qp_zuobiao.x] == judgepalyer) count1++; else break; } for (int i = 1; i <= 4; i++) { if (p[qp_zuobiao.y + i][qp_zuobiao.x] == judgepalyer) count2++; else break; } if (count1 + count2 + 1 >= 5) { wuzi = 1; } else { count1 = 0; count2 = 0; } //左上右下 for (int i = 1; i <= 4; i++) { if (p[qp_zuobiao.y - i][qp_zuobiao.x - i] == judgepalyer) count1++; else break; } for (int i = 1; i <= 4; i++) { if (p[qp_zuobiao.y + i][qp_zuobiao.x + i] == judgepalyer) count2++; else break; } if (count1 + count2 + 1 >= 5) { wuzi = 1; } else { count1 = 0; count2 = 0; } //右上 左下 for (int i = 1; i <= 4; i++) { if (p[qp_zuobiao.y - i][qp_zuobiao.x + i] == judgepalyer) count1++; else break; } for (int i = 1; i <= 4; i++) { if (p[qp_zuobiao.y + i][qp_zuobiao.x - i] == judgepalyer) count2++; else break; } if (count1 + count2 + 1 >= 5) { wuzi = 1; } else { count1 = 0; count2 = 0; } if (wuzi) { settextcolor(GREEN); settextstyle(30, 0, _T("黑體")); if (judgepalyer == hei)outtextxy(Width*0.5 + 100, High*0.6, L"黑贏"); else if (judgepalyer == bai) { outtextxy(Width*0.5 + 100, High*0.6, L"白贏"); } outtextxy(Width*0.5 - 30, High*0.7, L"按滑鼠右鍵,則重新開局"); gameover = 1;//遊戲結束的標誌,為後面的結束做準備 return 0; } if (IsJinshou >= 1)//若沒有連成五子,而黑子禁手,則提前結束 { settextcolor(GREEN); settextstyle(30, 0, _T("黑體")); if (IsJinshou == 1) outtextxy(Width*0.5, High*0.6, L"黑子長連禁手,白贏"); if (IsJinshou == 2) outtextxy(Width*0.5, High*0.6, L"黑子三三禁手,白贏"); if (IsJinshou == 3) outtextxy(Width*0.5, High*0.6, L"黑子四四禁手,白贏"); outtextxy(Width*0.5 - 30, High*0.7, L"按滑鼠右鍵,則重新開局"); gameover = 1; //遊戲結束的標誌,為後面的結束做準備 return 0; } return 0; } void end() { a = GetMouseMsg(); while (a.uMsg == WM_RBUTTONDOWN) { //若想在連成五子關閉後再次開啟時沒有上一棋局,可在這裡修改,把兩檔案內容歸零, drawqp(); break; } } int huiqi() { for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { if (rank[i][j] == qizi_amount) { p[i][j] = wu; rank[i][j] = 0; qizi_amount-=1; putimage(Qp_begin_x + j*M - 20, Qp_begin_y + i*M - 20, 40, 40, &img_bk, 281 + j*M - 20, 160 + i*M - 20); if (playerturn == player1) playerturn = player2; else playerturn = player1; return 0; } } } void main() { initgraph(Width, High); //建立畫布 // 獲得視窗控制代碼 HWND hWnd = GetHWnd(); // 使用 API 函式修改視窗名稱 SetWindowText(hWnd, L"五子棋"); drawqp(); //繪製棋盤及相關變數初始化 impor_data(); //匯入中途關閉的棋局 while (1) { place(); //手機滑鼠最接近落子點的座標資訊 bottondown(); //有敲擊操作時落子,並記錄棋盤資訊 jinshou(); //判斷是否禁手,若是,則IsJinshou=1,、2、3; judgewin(); //判斷是否結束並輸出有關資訊 while (gameover) { end(); //進入死迴圈,若按下滑鼠中鍵,則重新開局 } if (a.uMsg == WM_RBUTTONDOWN) //除結束外任意時刻按下滑鼠右鍵,可重新開局 drawqp(); if (a.uMsg == WM_MBUTTONDOWN) huiqi(); } }
檔案下載地址
連結:https://pan.baidu.com/s/1S2TUifv42Zngq40rzV6SVA 密碼:4wgk