這個小遊戲是筆者在大一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 ...