资源简介
c++ 下控制台扫雷游戏。可以鼠标输入。代码有注释。
代码片段和文件信息
//cleaner.cpp
//code::blocks 12.11 MinGW4.8 通过
#include
#include
#include
#include
#include
//下面这两段,复制自MSDN,功能与 system(“cls“)相同,但是使用system(“cls“),会无法读取鼠标输入原因不知
#define PERR(bSuccess api){if(!(bSuccess)) printf(“%s:Error %d from %s on line %d\n“ __FILE__ GetLastError() api __LINE__);}
void MyCls(HANDLE) ;
void clrscr(void)
{
HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
MyCls(hStdOut);
return;
}
void MyCls(HANDLE hConsole)
{
COORD coordScreen={00};//设置清屏后光标返回的屏幕左上角坐标
BOOL bSuccess;
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;//保存缓冲区信息
DWORD dwConSize;//当前缓冲区可容纳的字符数
bSuccess=GetConsoleScreenBufferInfo(hConsole&csbi);//获得缓冲区信息
PERR(bSuccess“GetConsoleScreenBufferInfo“);
dwConSize=csbi.dwSize.X * csbi.dwSize.Y;//缓冲区容纳字符数目
//用空格填充缓冲区
bSuccess=FillConsoleOutputCharacter(hConsole(TCHAR)‘ ‘dwConSizecoordScreen&cCharsWritten);
PERR(bSuccess“FillConsoleOutputCharacter“);
bSuccess=GetConsoleScreenBufferInfo(hConsole&csbi);//获得缓冲区信息
PERR(bSuccess“ConsoleScreenBufferInfo“);
//填充缓冲区属性
bSuccess=FillConsoleOutputAttribute(hConsolecsbi.wAttributesdwConSizecoordScreen&cCharsWritten);
PERR(bSuccess“FillConsoleOutputAttribute“);
//光标返回屏幕左上角坐标
bSuccess=SetConsoleCursorPosition(hConsolecoordScreen);
PERR(bSuccess“SetConsoleCursorPosition“);
return;
}
//
#define Map_size 20 //地图大小,dos界面自行改
#define mine 30 //地雷数目
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); //读取鼠标输入的相关
HANDLE Hin=GetStdHandle(STD_INPUT_HANDLE);
COORD pos={00};
INPUT_RECORD mouse;
DWORD res;
int show(); //扫雷函数
int lay_mine(); //放置地雷
int count_mine();//周围地雷计数
int primary_menu();//主菜单
void white(int iint j); //展开白色
int mine_cleaner(); //扫雷主函数
int time();
SYSTEMTIME st1st2;
int Num_mine[Map_size][Map_size]; //周围地雷计数
bool TorF_mine[Map_size][Map_size]; //是否为雷
bool state[Map_size][Map_size]; //是否显示过,,flase为没。true为显示过
bool gameover=false; //游戏结束
bool mine_mark[Map_size][Map_size];//flase为没有标记
using namespace std;
int temppxtemppytemppi; //temppxtemppy全局变量存储点击坐标;temppi用于防止屏幕不断刷新
int mouseinput() //读取鼠标输入
{
ReadConsoleInput(Hin&mouse1&res);
pos = mouse.Event.MouseEvent.dwMousePosition;
if (mouse.EventType==MOUSE_EVENT&&mouse.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
{
temppx=pos.Y-1;
temppy=pos.X/2-9;
temppi=1;
}
if (mouse.EventType==MOUSE_EVENT&&mouse.Event.MouseEvent.dwButtonState==RIGHTMOST_BUTTON_PRESSED&&state[pos.Y-2][pos.X/2-10]==false&&
mine_mark[pos.Y-2][pos.X/2-10]==false)
{
mine_mark[pos.Y-2][pos.X/2-10]=true;
temppi=1;
}
/* if (mouse.EventType==MOUSE_EVENT&&mouse.Event.MouseEvent.dwButtonState==RIGHTMOST_BUTTON_PRESSED&&state[pos.Y-2][pos.X/2-10]==true&&state[pos.Y-2][pos.X/2-10]==false)
{
mine_mark[pos.Y-2][pos.X/2-10]=false;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9041 2018-06-22 10:12 cleaner.cpp
- 上一篇:DX绘制三维旋转的立方体
- 下一篇:c语言实现汇编器和简单的模拟器
相关资源
- C++图书管理系统代码
- 基于C++实验室预约系统
- LSTM C++源代码
- VC++ 中国象棋程序源代码
- C/C++仿真实现Linux文件系统
- C++ primer 第五版源程序含C++11扩展
- VC++ UDP穿透NATP2P原理及代码.rar
- 高斯消去法C++代码
- 蚁群算法源代码 C++版
- 人工智能 A*算法 八数码问题 C++ 报告
- 光束法区域平差c++程序
- VC++ USB接口编程(代码)
- 轻量级C++实现的httpserver和httpclient
- 打砖块游戏
- C++程序设计原理与实践 原书第2版 基
- bwlabel之C++实现(二值图像八连通区域
- 基于C++MFC-RS485串口通信demo-完整版-代
- C++实现按键精灵-完整版-vs2013-可以跑
- 截图工具及源码
- c++封装好的IP的获取和修改源码,通过
- c++笔试面试之网络和多线程
- c++笔试面试基础
- C++版贪吃蛇游戏源代码
- c++ 通用弹道仿真计算程序(经典版)
- C++实现高考录取源代码
- C++检测网络连接是否正常
- c++项目详细简单适合初学者
- VC++ 轨迹运动源码
- 颜色渐变的进度条vc++
- 匠心精作C++从0到1入门编程-学习编程
评论
共有 条评论