easyx五子棋

· · 个人记录

#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