// easyx1ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
//int main()
//{
// std::cout << "Hello World!\n";
//}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <graphics.h>
#define ROW 10 //行数10行
#define COL 10 //列数10列
#define MINE 10 //雷数量10
#define SIZE 50 //每个格子的长宽为50*50像素
int count = 0; //点的格子数,已经点开的格子数量
int map[ROW + 2][COL + 2]; //数据为12*12
IMAGE img[12]; //img存放12张图片
//初始化棋盘
void initboard()
{
int i;
int j;
//map数组赋值0
for (i = 0; i < ROW + 2; i++)
{
for (j = 0; j < COL + 2; j++)
{
map[i][j] = 0;
printf("%d,%d=%d\n",j,i, map[j][i]);
}
}
//srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL))是把当前的时间作为种子,是程序每次运行产生不同的随机数序列。
srand((unsigned int)time(NULL));
//flag小于雷数量就布雷
int flag = 0;
while (flag < MINE)//当flag=MINE时布雷完成
{
int r = rand() % ROW + 1; //随机数0-9,加一得到1-10的随机数;
int c = rand() % COL + 1; //随机数0-9,加一得到1-10的随机数;
//布雷
if (map[r][c] == 0)
{
map[r][c] = -1;
flag++;
printf("%d,%d=%d\n",c,r, map[r][c]);
}
}
//根据周边8格雷数填充数组
for (i = 1; i <= ROW; i++)
{
for (j = 1; j <= COL; j++)
{
if (map[i][j] != -1)
{
int m = 0;
int n = 0;
for (m = i - 1; m <= i + 1; m++)
{
for (n = j - 1; n <= j + 1; n++)
{
if (map[m][n] == -1)
{
map[i][j]++;
}
}
}
}
}
}
//数组值全+20变成空白图片
for (i = 1; i <= ROW; i++)
{
for (j = 1; j <= COL; j++)
{
map[i][j] += 20;
}
}
}
//打印棋盘
void printboard()
{
int i;
int j;
for (i = 1; i <= ROW; i++)
{
for (j = 1; j <= COL; j++)
{
printf("%3d,%d=%d",i,j, map[j][i]);
printf(" ");
if (map[i][j] == -1) //雷图片
{
putimage((i - 1) * SIZE, (j - 1) * SIZE, &img[9]);
}
else if (map[i][j] >= 0 && map[i][j] <= 8) //数字图片
{
putimage((i - 1) * SIZE, (j - 1) * SIZE, &img[map[i][j]]);
}
else if (map[i][j] >= 19 && map[i][j] <= 28) //空白图片
{
putimage((i - 1) * SIZE, (j - 1) * SIZE, &img[10]);
}
else if (map[i][j] > 30) //旗子图片
{
putimage((i - 1) * SIZE, (j - 1) * SIZE, &img[11]);
}
}
printf("\n");
}
}
//加载图片
void loadimg()
{
loadimage(&img[0], L"10.jpg", SIZE, SIZE);
loadimage(&img[1], L"1.jpg", SIZE, SIZE);
loadimage(&img[2], L"2.jpg", SIZE, SIZE);
loadimage(&img[3], L"3.jpg", SIZE, SIZE);
loadimage(&img[4], L"4.jpg", SIZE, SIZE);
loadimage(&img[5], L"5.jpg", SIZE, SIZE);
loadimage(&img[6], L"6.jpg", SIZE, SIZE);
loadimage(&img[7], L"7.jpg", SIZE, SIZE);
loadimage(&img[8], L"8.jpg", SIZE, SIZE);
loadimage(&img[9], L"9.jpg", SIZE, SIZE); //雷
loadimage(&img[10], L"0.jpg", SIZE, SIZE); //空白
loadimage(&img[11], L"11.jpg", SIZE, SIZE); //旗子
}
//递归展开一片
void open(int r, int c)
{
printf("jin ru da kai open \n");
printf("%d,%d=%d\n", c, r, map[r][c]);
map[r][c] -= 20;
printf("%d,%d=%d\n", c, r, map[r][c]);
count++;
for (int m = r - 1; m <= r + 1; m++)
{
for (int n = c - 1; n <= c + 1; n++)
{
if (m >= 1 && m <= ROW && n >= 1 && n <= COL)
{
if (map[m][n] >= 19 && map[m][n] <= 28)
{
if (map[m][n] != 20)
{
map[m][n] -= 20;
count++;
}
else
{
printf("kai shi da kai");
printf("%3d,%d=%d", n, m, map[m][n]);
open(m, n);
}
}
}
}
}
}
//鼠标操作
int play()
{
MOUSEMSG msg = { 0 };
int r;
int c;
while (1)
{
msg = GetMouseMsg();
switch (msg.uMsg)
{
case WM_LBUTTONDOWN: //扫雷 19~28
printf("%5d\n%5d\n", msg.x, msg.y);
r = msg.x / SIZE + 1;
c = msg.y / SIZE + 1;
printf("%5d\n%5d\n", r, c);
if (map[r][c] >= 19 && map[r][c] <= 28)
{
if (map[r][c] == 20) //点的位置是0
{
open(r, c);
}
else
{
map[r][c] -= 20; //-1~8
count++;
//char count1_char = count;
printf("%d\n", count);
}
}
return map[r][c];
break;
case WM_RBUTTONDOWN: //标雷或取消标记
r = msg.x / SIZE + 1;
c = msg.y / SIZE + 1;
if (map[r][c] >= 19 && map[r][c] <= 28)
{
map[r][c] += 50;
printf("%d,%d=%d\n", c, r, map[r][c]);
printf("qi zi\n");
}
else if (map[r][c] > 30)
{
map[r][c] -= 50;
printf("%d,%d=%d\n", c, r, map[r][c]);
printf("qu xiao qi zi\n", c, r, map[r][c]);
}
return map[r][c];
break;
case WM_MBUTTONDOWN:
r = msg.x / SIZE + 1;
c = msg.y / SIZE + 1;
printf("66666\n");
int a = 0;
int b = 0;
int mine11 = 0;
for (a = r-1; a <= r + 1; a++)
{
for (b = c-1; b <= c + 1; b++)
{
if (map[a][b] > 30)
{
mine11++;
}
}
}
printf("jinrujisuan mine11\n");
printf("%d\n",mine11);
if (mine11 < map[r][c])
{
HWND hWnd = GetActiveWindow();
MessageBox(hWnd, L"请确认排出雷的数量是否正确", L"", MB_OK);
return map[r][c];
break;
//THIS.msg("标志数小于雷数");
}
for (int m = r - 1; m <= r + 1; m++)
{
printf("jin ru zhongjiananjian\n");
for (int n = c - 1; n <= c + 1; n++)
{
printf("jin ru xun huan2\n");
if (m >= 1 && m <= ROW && n >= 1 && n <= COL)
{
if (map[m][n] >= 19 && map[m][n] <= 28)
{
//if (map[m][n] == 19|| map[m][n] == 20)//思考中
//{
map[m][n] -= 20;
count++;
printf("fa xian lei zhongjian\n");
printf("%3d,%d=%d", n, m, map[m][n]);
if (map[m][n] == -1) {
return map[m][n];
break;
}
//}
//else {
//}
;
}
else
{
printf("else\n");
if (map[m][n] <= 8 && map[m][n] >= 0)
{
printf("wu lei zhongjian\n");
printf("%3d,%d=%d", n, m, map[m][n]);
//map[m][n] -= 20;
//count++;
printf("%3,%=%\n", n, m, map[m][n]);
}
}
}
}
}
return map[r][c];
break;
}
}
}
int main()
{
//打开一个图形窗口
HWND hwnd = initgraph(ROW * SIZE, COL * SIZE, SHOWCONSOLE);
//hwnd;
//initgraph(ROW * SIZE, COL * SIZE, SHOWCONSOLE);//显示控制台
loadimg();//加载图片
initboard();//初始化棋盘
while (1)
{
printboard();
if (play() == -1)
{
printboard();
MessageBox(hwnd, L"你输了", L"", MB_OK);
break;
}
if (ROW * COL - MINE == count)
{
printboard();
MessageBox(hwnd, L"你赢了", L"", MB_OK);
break;
}
}
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
easyx1ConsoleApplication1.zip (57个子文件)
easyx1ConsoleApplication1
2.jpg 2KB
10.jpg 805B
resource.h 404B
6.jpg 2KB
1.jpg 2KB
easyx1ConsoleApplication1.vcxproj.filters 1KB
easyx1ConsoleApplication1.vcxproj 7KB
.vs
easyx1ConsoleApplication1
v17
DocumentLayout.json 2KB
Browse.VC.db 35.81MB
Solution.VC.db 428KB
.suo 39KB
ipch
AutoPCH
592df099c6f94767
EASYX1CONSOLEAPPLICATION1.ipch 37.88MB
b3993bcac6c3282d
c051b4d98b198a9d
EASYX1CONSOLEAPPLICATION1.ipch 77.38MB
FileContentIndex
fbd8125f-9992-4eb1-adb6-ec214ea46c38.vsidx 10KB
beebd8ba-bd6a-49a6-85de-b533966edd44.vsidx 3KB
2d679819-74f7-4a38-9134-01d208e1fffe.vsidx 64KB
dc5ead88-31a6-4e92-b343-e9fd3070f5c3.vsidx 8KB
x64
Release
2.jpg 2KB
10.jpg 805B
6.jpg 2KB
1.jpg 2KB
easyx1ConsoleApplication1.exe 54KB
5.jpg 2KB
8.jpg 1KB
11.jpg 2KB
easyx1ConsoleApplication1.pdb 1.08MB
3.jpg 2KB
7.jpg 1KB
9.jpg 2KB
4.jpg 2KB
easyx1ConsoleApplication1.cpp 8KB
easyx1ConsoleApplication1.vcxproj.user 168B
5.jpg 2KB
0.jpg 1KB
easyx1ConsoleApplication1.sln 1KB
8.jpg 1KB
easyx1Co.d982adef
x64
Release
vc143.pdb 452KB
easyx1ConsoleApplication1.ipdb 16KB
easyx1Co.d982adef.tlog
CL.write.1.tlog 630B
Cl.items.tlog 211B
link.secondary.1.tlog 366B
CL.command.1.tlog 962B
easyx1ConsoleApplication1.lastbuildstate 191B
link.command.1.tlog 2KB
link.read.1.tlog 4KB
link.write.1.tlog 658B
CL.read.1.tlog 41KB
easyx1ConsoleApplication1.obj 1.01MB
easyx1ConsoleApplication1.exe.recipe 344B
easyx1ConsoleApplication1.iobj 88KB
easyx1ConsoleApplication1.log 2KB
11.jpg 2KB
3.jpg 2KB
7.jpg 1KB
easyx1ConsoleApplication1.aps 1KB
9.jpg 2KB
4.jpg 2KB
共 57 条
- 1
资源评论
ddcar
- 粉丝: 58
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- shap分析代码案例,多个机器学习模型+shap解释性分析的案例,做好的多个模型和完整的shap分析拿去直接运行,含模型之间的比
- 聚类算法使用numpy实现的聚类算法(包括时空聚类算法)PGJ.zip
- 神经网络BP神经网络分类器PGJ.zip
- 1533-基于51单片机的台灯(亮度,手自动,人体检测,定时)proteus、原理图、流程图、物料清单、仿真图、源代码.zip
- git教程把廖雪峰Git教程整理成PDF版PGJ.zip
- 1532-基于51单片机的胎压监测(压力,温度)proteus,原理图、流程图、物料清单、仿真图、源代码.zip
- 1531-基于51单片机的速度检测系统(数码管)proteus,原理图、流程图、物料清单、仿真图、源代码.zip
- 1530-基于51单片机的速度测量报警(数码管,上下限)proteus,原理图、流程图、物料清单、仿真图、源代码.zip
- 机器学习机器学习算法python实现pgj 2.zip
- 熊猫百科.apk熊猫百科.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功