C 掃雷小遊戲(基於CMD命令列)

2021-08-10 15:35:29 字數 3963 閱讀 5836

這個小遊戲是筆者在大一c語言課程設計的時候寫的,基於命令列,為了顯得漂亮一些,特別加上了彩色特效~~~

注意:win10系統須將命令列調為舊版命令列,否則有可能會顯示亂碼!

**示例:

#include #include #include #include #include #include // 由於棋盤格與邏輯雷區格有一定差別,所以為了座標能夠相互對映,設定巨集i,j,分別對映邏輯表的i,j。

#define i (i+2)

#define j (2*(j+1)+1)

/*字型顏色處理函式*/

void setcolor(unsigned short forecolor,unsigned short backgroundcolor)

/*遊戲主程式*/

void showmine(); //顯示所有地雷

void setmine(int x); //布雷

void printmine(); //列印所有地雷

void countmine(int rowno, int colno); //數雷演算法

//構建棋盤

char row[16][80]=,

, ,

, ,

, ,

, ,

, ,

, ,

, ,

, };

構建雷區//

int mines[14][14]=,

, ,

, ,

, ,

, ,

, ,

, ,

, };

int mines_demo[14][14]=,

, ,

, ,

, ,

, ,

, ,

, ,

, };

//

int countstep=0; //已挖坑數目(計數器),用於判定玩家獲勝

int n=5; //布雷數(待輸入)

/主函式開始///

void main()

else

row[i][j]='\x01'; //如果不會被覆蓋,則直接選中即可

showmine(); //顯示雷區圖

continue;

} //移動前的位置未被挖雷情況

row[i][j]='\x02';

i--;

if(row[i][j]<'9' && row[i][j]>='0')

row[i][j]='\x01';

showmine();

} }else if(ch1=='s')else

row[i][j]='\x01';

showmine();

continue;

} row[i][j]='\x02';

i++;

if(row[i][j]<'9' && row[i][j]>='0')

row[i][j]='\x01';

showmine();

} }else if (ch1=='a')

showmine();

continue;

}else

row[i][j]='\x01';

showmine();

continue;

} row[i][j]='\x02';

j--;

if(row[i][j]<'9' && row[i][j]>='0')

row[i][j]='\x01';

showmine();

} }else if (ch1=='d')else

row[i][j]='\x01';

showmine();

continue;

} row[i][j]='\x02';

j++;

if(row[i][j]<'9' && row[i][j]>='0')

row[i][j]='\x01';

showmine();

} }else if(ch1=='q')elseelse if(i==0 && j>0 && row[i][j]=='\x01')else if(i>0 && j==0 && row[i][j]=='\x01')else if(i==0 && j==0 && row[i][j]=='\x01')

if(mines_demo[i][j]==0 && i>0 && j>0 && i<13 && j<13)

if(mines_demo[i-1][j]==0 && row[i-1][j]=='\x02')

if(mines_demo[i][j+1]==0 && row[i][2*(j+1+1)+1]=='\x02')

if(mines_demo[i][j-1]==0 && row[i][2*(j-1+1)+1]=='\x02')

if(mines_demo[i+1][j+1]==0 && row[i+1][2*(j+1+1)+1]=='\x02')

if(mines_demo[i+1][j-1]==0 && row[i+1][2*(j-1+1)+1]=='\x02')

if(mines_demo[i-1][j+1]==0 && row[i-1][2*(j+1+1)+1]=='\x02')

if(mines_demo[i-1][j-1]==0 && row[i-1][2*(j-1+1)+1]=='\x02')

} system("cls");

showmine();

if(countstep==196-n)

} }

} }

主函式結束/

//數雷演算法開始//

void countmine(int rowno, int colno)

/數雷演算法結束

void debugmines()

printf("\n");

} printf("\n\n");

for (i = 0 ; i < 14 ; i++)

printf("\n"); }}

///棋盤顯示///

void showmine()else if(row[i][j]<='8' && row[i][j]>='0' && j>2)

printf("%c",row[i][j]);

} printf("\n");

}}

/隨機布雷///

void setmine(int x)

} //設定隨機種子

srand(time(0));

//隨機布雷開始

for(k=1;k<=x;)else

} //方格雷數計算開始

for(i=0;i<14;i++)elseelse if(j==0 && i!=0 && i!=13)else if(i==0 && j==0)else if(i==13 && j==13)else if(i==0 && j==13)else if(i==13 && j==0)else if(i==13 && j!=0 && j!=13)else if (j==13 && i!=0 && i!=13)

//}

} }

} return;

}

/列印雷區(失敗時)///

void printmine()

else

} }

showmine();

return;

}

C 實現2048小遊戲(命令列)

c 學習筆記 試著寫了一下 用乙個二維陣列模擬遊戲棋盤,在二維陣列上的空位置隨機位置生成數字2或4,然後接收使用者操作,向指定的方向移動並合併數字,再次生成數字,如此往復,直到遊戲結束。這裡有幾個問題 遊戲結束條件 如何保證隨機生成的位置不會覆蓋已有數字 如何移動與合併數字 遊戲結束的條件為,隨機生...

C 小遊戲 掃雷

標頭檔案 define crt secure no warnings 1 ifndef game h define game h include include include include define row 9 define col 9 define rows row 2 define co...

c 小遊戲 掃雷

include include include include include include includeusing namespace std define maxn 35 define midx 10 define midy 40 define cg 25 define ck 80 int ...