Essinos_ 2021-06-04 19:46 采纳率: 100%
浏览 39
已采纳

各位前辈,这是五子棋代码,请问结束后如何把“游戏结束”变成“白棋胜利”或“黑棋胜利”?

 

#include <graphics.h>      
#include <conio.h>
#include<windows.h>

int num=-1;
int piece[15][15];
IMAGE bgp;

void put_background()//背景图
{
 putimage(0,0,240,240,&bgp,69,71);
 putimage(240,0,240,240,&bgp,69,71);
 putimage(0,240,240,240,&bgp,69,71);
 putimage(240,240,240,240,&bgp,69,71);

}

void draw_line()//画线
{
 setlinecolor(RED);
 for(int x=15;x<480;x+=30)
  line(x,15,x,465);
 for(int y=15;y<480;y+=30)
  line(15,y,465,y);
}

void draw_point()//画中间的四个点
{
 setfillcolor(BLACK);
 fillcircle(4*30-15,4*30-15,3);
 fillcircle(4*30-15,12*30-15,3);
 fillcircle(8*30-15,8*30-15,3);
 fillcircle(12*30-15,4*30-15,3);
 fillcircle(12*30-15,12*30-15,3);
}

void initpiece()
{
 for(int i=0;i<15;i++)
  for(int j=0;j<15;j++)
   piece[i][j]=0;
}

int change_piece(int x,int y)
{
 if(piece[x][y]!=0)
  return 0;
 else
  piece[x][y]=num;
 return 1;
}
  
void draw_piece(int m,int n)//设置num=-1落子为白棋
{
 if (num==-1)
	setfillcolor(WHITE);
 else
    setfillcolor(BLACK);
 int x,y;
 x=m/30;
 y=n/30;
 if(change_piece(x,y)==0)
  return;
 fillcircle(m-(m%30)+15,n-(n%30)+15,13);
  num*=-1;
}
int check_five_piece(int x,int y)//判断是否五子连线
{if(x<2 || y<2 || x>12 || y>12)
	return 0;
if(piece[x][y] == piece[x-1][y] && piece[x][y] == piece[x-2][y] && piece[x][y] == piece[x+1][y] && piece [x][y] == piece[x+2][y])
	return 1;
if(piece[x][y] == piece[x][y-1] && piece[x][y] == piece[x][y-2] && piece[x][y] == piece[x][y+1] && piece [x][y] == piece[x][y+2])
	return 1;
if(piece[x][y] == piece[x-1][y-1] && piece[x][y] == piece[x-2][y-2] && piece[x][y] == piece[x+1][y+1] && piece [x][y] == piece[x+2][y+2])
	return 1;
if(piece[x][y] == piece[x-1][y+1] && piece[x][y] == piece[x-2][y+2] && piece[x][y] == piece[x+1][y-1] && piece [x][y] == piece[x+2][y-2])
	return 1;
return 0;
}
int check_over()//判断是否结束
{
		for(int i = 0; i < 15; i++)
		{
			if(piece[i][j] = 0)
				continue;
			if(check_five_piece(i, j) == 1)
				return 1;
		}
	return 0;

}
  
int main()
{
    initgraph(480, 480); 
    loadimage(&bgp, _T("background.jpg"));
	settextcolor(WHITE);
	settextstyle(42, 20, _T("楷书"));
	setbkmode(TRANSPARENT);
    put_background();
    draw_line();
    draw_point();
	MOUSEMSG m;
	while(1)
	{
		m=GetMouseMsg();
		if(m.uMsg==WM_LBUTTONDOWN)
		{
			draw_piece(m.x,m.y);
		}
		if (check_over() == 1)//结束时弹出
		{
			outtextxy(180, 220, _T("游戏结束"));
			system("pause");
			return 0;
		}
	}
	return 0;       
}

倒数第七行

  • 写回答

4条回答 默认 最新

  • 关注

    用cleardevice清屏,然后用outtextxy方法输出内容。

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

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办