【无标题】五子棋小项目

发布于:2022-11-04 ⋅ 阅读:(281) ⋅ 点赞:(0)

 

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 后查看