1. 程式人生 > >用eaxyx 寫的五子棋,功能包括: 禁手判斷,棋局儲存,悔棋,重新開局,全部通過滑鼠操作

用eaxyx 寫的五子棋,功能包括: 禁手判斷,棋局儲存,悔棋,重新開局,全部通過滑鼠操作

 斷斷續續寫的第一個比較滿意的作品,算是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