資源簡介
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語言實現匯編器和簡單的模擬器
評論
共有 條評論