简单扫雷游戏

基于easyx的简单c语言gui小游戏
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#include<graphics.h>
#define width 400
#define height 400
struct mm {
    int bj;
    int sell;
}map[20][20];
MOUSEMSG mosuse;
void init() {
    srand((DWORD)time(0));
    int p = 0, q = 0;
    setfillcolor(RGB(100, 100, 100));
    for (int i = 0; i < 20; i++) {
        for (int j = 0; j < 20; j++) {
            map[i][j].bj = 0;
            map[i][j].sell = 0;
            fillrectangle(20 * i, 20 * j, 20 * i + 20, 20 * j + 20);
        }
    }
    for (int i = 0; i < 10; i++) {
        p = rand() % 20, q = rand() % 20;
        if (map[p][q].bj != 10)map[p][q].bj = 10;
        else { i--; continue; }
    }
    for (int i = 0; i < 20; i++) {
        for (int j = 0; j < 20; j++) {
            if (map[i][j].bj == 0) {
                for (int p = i - 1; p <= i + 1; p++) {
                    for (int q = j - 1; q <= j + 1; q++) {
                        if (map[p][q].bj == 10)map[i][j].bj += 1;
                    }
                }
            }
        }
    }
}
bool check() {
    int che = 0;
    for (int i = 0; i < 20; i++) {
        for (int j = 0; j < 20; j++) {
            if(map[i][j].bj==10&&map[i][j].sell==8)
            che += map[i][j].sell;
        }
    }
    if (che == 80)return true;
    else return false;
}
int main()
{
    initgraph(width, height);
    init();
    setbkmode(1);
    settextcolor(BLUE);
    IMAGE im(20, 20);
    IMAGE* img = &im;
    loadimage(img, L"flag.jpg", 20, 20, 0);
    while (1) {
        mosuse = GetMouseMsg();
        if (mosuse.uMsg == WM_LBUTTONDOWN) {
            for (int i = 0; i < 20; i++) {
                for (int j = 0; j < 20; j++) {
                    if (mosuse.x >= 20 * i&&mosuse.x <= 20 * (i + 1) && mosuse.y >= 20 * j&&mosuse.y <= 20 * (j + 1)) {
                        TCHAR c[1];
                        _stprintf(c, _T("%d"), map[i][j].bj);
                        if (map[i][j].bj != 10 && map[i][j].sell != 8 && map[i][j].sell != 11)
                            setfillcolor(WHITE),
                            solidrectangle(20 * i, 20 * j, 20 * i + 20, 20 * j + 20),
                            outtextxy(20 * i, 20 * j, c),
                            map[i][j].sell = 11;
                        if (map[i][j].bj == 10)initgraph(0, 0, SHOWCONSOLE), closegraph(), printf("game is over");
                    }
                }
            }
        }
        if (mosuse.uMsg == WM_RBUTTONDOWN) {
            for (int i = 0; i < 20; i++) {
                for (int j = 0; j < 20; j++) {
                    if (mosuse.x >= 20 * i&&mosuse.x <= 20 * (i + 1) && mosuse.y >= 20 * j&&mosuse.y <= 20 * (j + 1)) {
                        if (map[i][j].sell != 11&&map[i][j].sell!=8) {
                            map[i][j].sell = 8;
                            putimage(20 * i, 20 * j, img);
                            continue;
                        }
                        if (map[i][j].sell == 8)setfillcolor(RGB(100, 100, 100)),fillrectangle(20*i, 20*j, 20*(i+1), 20*(j+1)),map[i][j].sell=0;
                    }
                }
            }
            FlushMouseMsgBuffer();
        }
        if (check()) { initgraph(0, 0, SHOWCONSOLE), closegraph(), printf("winner"); }
    }
}

C扫雷.jpg