資源簡(jiǎn)介
c++ 下控制臺(tái)掃雷游戲。可以鼠標(biāo)輸入。代碼有注釋。

代碼片段和文件信息
//cleaner.cpp
//code::blocks?12.11??MinGW4.8???通過
#include
#include
#include
#include
#include?
//下面這兩段,復(fù)制自MSDN,功能與?system(“cls“)相同,但是使用system(“cls“),會(huì)無法讀取鼠標(biāo)輸入原因不知
#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};//設(shè)置清屏后光標(biāo)返回的屏幕左上角坐標(biāo)
BOOL?bSuccess;
DWORD?cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO?csbi;//保存緩沖區(qū)信息
DWORD?dwConSize;//當(dāng)前緩沖區(qū)可容納的字符數(shù)
bSuccess=GetConsoleScreenBufferInfo(hConsole&csbi);//獲得緩沖區(qū)信息
PERR(bSuccess“GetConsoleScreenBufferInfo“);
dwConSize=csbi.dwSize.X?*?csbi.dwSize.Y;//緩沖區(qū)容納字符數(shù)目
//用空格填充緩沖區(qū)
bSuccess=FillConsoleOutputCharacter(hConsole(TCHAR)‘?‘dwConSizecoordScreen&cCharsWritten);
PERR(bSuccess“FillConsoleOutputCharacter“);
bSuccess=GetConsoleScreenBufferInfo(hConsole&csbi);//獲得緩沖區(qū)信息
PERR(bSuccess“ConsoleScreenBufferInfo“);
//填充緩沖區(qū)屬性
bSuccess=FillConsoleOutputAttribute(hConsolecsbi.wAttributesdwConSizecoordScreen&cCharsWritten);
PERR(bSuccess“FillConsoleOutputAttribute“);
//光標(biāo)返回屏幕左上角坐標(biāo)
bSuccess=SetConsoleCursorPosition(hConsolecoordScreen);
PERR(bSuccess“SetConsoleCursorPosition“);
return;
}
//
#define?Map_size?20?//地圖大小,dos界面自行改
#define?mine?30?//地雷數(shù)目
HANDLE?hOut=GetStdHandle(STD_OUTPUT_HANDLE);?????//讀取鼠標(biāo)輸入的相關(guān)
HANDLE?Hin=GetStdHandle(STD_INPUT_HANDLE);
COORD?pos={00};
INPUT_RECORD?mouse;
DWORD?res;
int?show();??//掃雷函數(shù)
int?lay_mine();??//放置地雷
int?count_mine();//周圍地雷計(jì)數(shù)
int?primary_menu();//主菜單
void?white(int?iint?j);?//展開白色
int?mine_cleaner();?//掃雷主函數(shù)
int?time();
SYSTEMTIME???st1st2;
int?Num_mine[Map_size][Map_size];???//周圍地雷計(jì)數(shù)
bool?TorF_mine[Map_size][Map_size];?//是否為雷
bool?state[Map_size][Map_size];?//是否顯示過,,flase為沒。true為顯示過
bool?gameover=false;?//游戲結(jié)束
bool?mine_mark[Map_size][Map_size];//flase為沒有標(biāo)記
using?namespace?std;
int?temppxtemppytemppi;??//temppxtemppy全局變量存儲(chǔ)點(diǎn)擊坐標(biāo);temppi用于防止屏幕不斷刷新
int?mouseinput()??//讀取鼠標(biāo)輸入
{
????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;
?????????????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????9041??2018-06-22?10:12??cleaner.cpp
評(píng)論
共有 條評(píng)論