m0_58790130 2021-05-30 20:09 采纳率: 100%
浏览 51
已采纳

用easyx写五子棋无法运行

  • 写完之后,发现点击鼠标不能运行,不知道哪里出问题,请求大佬的协助
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include<windows.h>
#include <time.h>

MOUSEMSG m; //鼠标指针
int k=0;	//判断是否结束

void InitGame()  //棋盘初始化
{
	initgraph(600, 500);
	setlinecolor(RED);
	for (int i = 0; i < 20; i++)
	{	
		line(0, i * 25, 500, i * 25);
		line(i * 25, 0, i * 25, 500);
	}
	setlinestyle(PS_SOLID, 2);  //画实线 宽度2
	line(500, 0, 500, 500);
	getchar();

	
}

int board[20][20] = { 0 };		//棋盘占位数组

int flag = 1;   //标记下棋状态





//判断获胜条件
int judge(int a, int b)
{
	int i, j;
	int t = 2 - flag % 2;
	for ((i = a - 4) && (j = b); i <= a; i++)  //横向
	{
		if (i >= 1 && 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 <= a; j++)   //竖向
	{
		if (j >= 1 && 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 >= 1 && i < 16 && j >= 1 && 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 >= b)); i++, j--)   //斜上
	{
		if (i >= 1 && i < 16 && j >= 1 && 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;
	}
}   


void Move()   //鼠标点击下棋
{	
	
		int x,y;
		m=GetMouseMsg();
		if(m.uMsg==WM_LBUTTONDOWN)	//点击下棋
		{
			for(x=12;x<600;x+=25)
				for(y=12;y<500;y+=25)
				{
					if(m.x>=x&&m.x<=(x+25)&&m.y>=y&&y<=(y+25))
					{	if(board[(x+13)/25][(y+13)/25]=0)     //判断该位置是否有棋子
						{
							if (flag % 2 == 1) { setfillcolor(WHITE); };//根据flag数判断棋子颜色
							if (flag % 2 == 0) { setfillcolor(BLUE); };
							solidcircle(x+13, y+13, 12);
							board[(x+13)/25][(y+13)/25]=1;		
							flag++;
						}
					}
				}
		}
		FlushMouseMsgBuffer();

		if (judge(x / 25, y / 25))         //每下完一次之后进行胜负判断
		{
			if (1 == flag % 2)
			{	k=1;
				outtextxy(512, 400, _T("玩家2胜利"));
		
				return; 
			}
			else
			{	k=1;
				outtextxy(512, 60, _T("玩家胜利"));
				return;
			}
		}

		
	}
		

	
	







void main()
{	
	InitGame();
	while (k)
		Move();
	
	

}
  • 写回答

2条回答 默认 最新

  • CSDN专家-Time 2021-05-30 20:17
    关注

    能够远程嘛 你那边的头文件我这里没有。。用向日葵远程就可以

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)