资源简介
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++获取计算机的CPU ID,硬盘序列号等
- C++头文件转delphi工具 + 源码
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
川公网安备 51152502000135号
评论
共有 条评论