专栏文章

easyx五子棋

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipyonjl
此快照首次捕获于
2025/12/03 20:06
3 个月前
此快照最后确认于
2025/12/03 20:06
3 个月前
查看原文
CPP
#include<easyx.h>
#include<graphics.h>
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=19;
const int siz=40;
int mp[MAXN+10][MAXN+10]={0},t=1;
void draw();
void end_draw(int x_1,int y_1,int x_2,int y_2);
void check(int x,int y);
signed main(){
	initgraph(25+25+siz*MAXN,25+25+siz*MAXN,1);
	setlinestyle(PS_SOLID,2);
	draw();
	while(1){
		ExMessage msg={0};
		peekmessage(&msg,EX_MOUSE);
		for(int i=1;i<=MAXN;i++){
			for(int j=1;j<=MAXN;j++){
				int x=i*siz+25,y=j*siz+25;
				if(msg.message==WM_LBUTTONDOWN&&msg.x>=x-4&&msg.x<=x+4&&msg.y>=y-4&&msg.y<=y+4&&mp[j][i]==0){
					mp[j][i]=t;
					if(t==1) t=2;
					else t=1;
				}
			}
		}
		if(msg.message==WM_LBUTTONDOWN){
			draw();
		}
		for(int i=1;i<=15;i++){
			for(int j=1;j<=15;j++){
				check(i,j);
			}
		}
	}
}
void draw(){
	cleardevice();
	BeginBatchDraw();
	for(int i=0;i<=MAXN;i++){
		line(25,25+i*siz,25+MAXN*siz,25+i*siz);
	}
	for(int i=0;i<=MAXN;i++){
		line(i*siz+25,25,i*siz+25,25+MAXN*siz);
	}
	for(int i=1;i<=MAXN;i++){
		for(int j=1;j<=MAXN;j++){
			if(mp[j][i]==1){
				setfillcolor(RGB(90,90,90));
				solidcircle(i*siz+25,j*siz+25,siz/2.5);
			}
			if(mp[j][i]==2){
				setfillcolor(RGB(255,255,255));
				solidcircle(i*siz+25,j*siz+25,siz/2.5);
			}
		}
	}
	EndBatchDraw();
}
void check(int x,int y){
	if(mp[x][y]==mp[x][y+1]&&mp[x][y+1]==mp[x][y+2]&&mp[x][y+2]==mp[x][y+3]&&mp[x][y+3]==mp[x][y+4]&&(mp[x][y]==1||mp[x][y]==2)){
		end_draw(y*siz,x*siz,(y+4)*siz,x*siz);
	}
	if(mp[x][y]==mp[x+1][y]&&mp[x+1][y]==mp[x+2][y]&&mp[x+2][y]==mp[x+3][y]&&mp[x+3][y]==mp[x+4][y]&&(mp[x][y]==1||mp[x][y]==2)){
		end_draw(y*siz,x*siz,y*siz,(x+4)*siz);
	}
	if(mp[x][y]==mp[x+1][y+1]&&mp[x+1][y+1]==mp[x+2][y+2]&&mp[x+2][y+2]==mp[x+3][y+3]&&mp[x+3][y+3]==mp[x+4][y+4]&&(mp[x][y]==1||mp[x][y]==2)){
		end_draw(y*siz,x*siz,(y+4)*siz,(x+4)*siz);
	}
	if(mp[x][y]==mp[x+1][y-1]&&mp[x+1][y-1]==mp[x+2][y-2]&&mp[x+2][y-2]==mp[x+3][y-3]&&mp[x+3][y-3]==mp[x+4][y-4]&&(mp[x][y]==1||mp[x][y]==2)){
		end_draw(y*siz,x*siz,(y-4)*siz,(x+4)*siz);
	}
}
void end_draw(int x_1,int y_1,int x_2,int y_2){
	setlinecolor(RGB(245,105,105));
	setlinestyle(PS_SOLID,6);
	line(x_1+25,y_1+25,x_2+25,y_2+25);
	Sleep(3000);
	exit(0);
}
//原创:cyx1234


评论

0 条评论,欢迎与作者交流。

正在加载评论...