国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言簡易掃雷游戲

2020-01-26 13:23:16
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C語言掃雷游戲的具體代碼,供大家參考,具體內容如下

#include<stdio.h>#include<stdlib.h>#include<time.h>#define MAX_ROW 9#define MAX_COL 9#define MINE_C0UNT 10void menu() { printf("************************/n"); printf("*****   1.play  ****/n"); printf("*****   0.exit  ****/n"); printf("************************/n");}//1、先初始化兩個地圖,玩家看到的,地雷布局圖。void Init(char show_map[MAX_ROW][MAX_COL],char mine_map[MAX_ROW][MAX_COL]) { //對于玩家看到的地圖,未翻到的都設為*; for (int row = 0; row < MAX_ROW; row++) { for (int col = 0; col < MAX_COL; col++) {  show_map[row][col] = '*'; } } //對于地雷布局圖,用0表示沒有地雷,用1表示雷。 for (int row = 0; row < MAX_ROW; row++) { for (int col = 0; col < MAX_COL; col++) {  mine_map[row][col] = '0'; } } //假設設置十個地雷 int n = MINE_C0UNT; while (n > 0) { int row = rand() % MAX_ROW; int col = rand() % MAX_COL; if (mine_map == '1') {  continue; } mine_map[row][col] = '1'; --n; }}void printmap(char map[MAX_ROW][MAX_COL]) { //不光能打印出地圖,還能帶坐標//先打印第一行 printf("  "); for (int i = 0; i < MAX_COL; i++) { printf("%d ", i); } printf("/n"); //打印一個分割線 for (int col = 0; col < MAX_COL - 2; ++col) { printf("---"); } printf("/n"); //在打印其他行 for (int row = 0; row < MAX_ROW; row++) { printf(" %d| ", row); //打印本行的每一列 for (int col = 0; col < MAX_COL; col++) {  printf("%c ", map[row][col]); } printf("/n"); }}void updateshowmap(int row,int col,char show_map[MAX_ROW][MAX_COL], char mine_map[MAX_ROW][MAX_COL]) { int count = 0; if (row - 1 >= 0 && col - 1 >= 0 && row - 1 < MAX_ROW && col - 1 < MAX_COL && mine_map[row - 1][col - 1] == '1') { count++; } if (row - 1 >= 0 && col >= 0 && row - 1 < MAX_ROW && col < MAX_COL && mine_map[row - 1][col] == '1') { count++; } if (row - 1 >= 0 && col + 1 >= 0 && row - 1 < MAX_ROW && col + 1 < MAX_COL && mine_map[row - 1][col + 1] == '1') { count++; } if (row >= 0 && col - 1 >= 0 && row < MAX_ROW && col - 1 < MAX_COL && mine_map[row][col - 1] == '1') { count++; } if (row >= 0 && col + 1 >= 0 && row < MAX_ROW && col + 1 < MAX_COL && mine_map[row][col + 1] == '1') { count++; } if (row + 1 >= 0 && col - 1 >= 0 && row + 1 < MAX_ROW && col - 1 < MAX_COL && mine_map[row + 1][col - 1] == '1') { count++; } if (row + 1 >= 0 && col + 1 >= 0 && row + 1 < MAX_ROW && col + 1 < MAX_COL && mine_map[row + 1][col + 1] == '1') { count++; } show_map[row][col] = '0' + count;}void game() { char show_map[MAX_ROW][MAX_COL]; char mine_map[MAX_ROW][MAX_COL]; Init(show_map,mine_map); while (1) { printmap(show_map); printf("請玩家輸入一組坐標:"); int row, col; int blank_count_already_show = 0; scanf("%d%d", &row, &col); system("cls"); if (row < 0 || row >= MAX_ROW || col < 0 || col >= MAX_COL) {  printf("您的輸入不合法,請您重新輸入!/n");  continue; } if (show_map[row][col] != '*') {  printf("您輸入的位置已經被占用了,請您重新輸入!/n");  continue; } //判斷玩家輸入的坐標對應的是不是地雷,如果是地雷則游戲就結束了 if (mine_map[row][col] == '1') {  printf("游戲結束!/n");  printmap(mine_map);  break; } //判斷游戲是否勝利,通過計算已翻開的非雷的格子的個數 ++blank_count_already_show; if (blank_count_already_show == MAX_ROW * MAX_COL - MINE_C0UNT) {  printf("游戲勝利 !/n");  printmap(mine_map);  break; } //統計當前位置中周圍雷的個數 updateshowmap(row, col, show_map, mine_map); }}int main() { srand((unsigned)time(0)); int input = 0; while (1) { menu(); printf("請選擇:"); scanf("%d", &input); if (input == 1) {  printf("開始游戲!/n");  game(); } else if (input == 0) {  printf("退出游戲!/n");  break; } else {  printf("輸入錯誤,請重新輸入!/n");  continue; } } system("pause"); return 0;}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 确山县| 临沧市| 皋兰县| 宝坻区| 黄骅市| 钟山县| 永济市| 六安市| 三穗县| 鄱阳县| 濮阳县| 得荣县| 江安县| 和硕县| 隆化县| 昌吉市| 建平县| 吉木乃县| 曲水县| 南丰县| 霍山县| 丁青县| 四会市| 沾益县| 静安区| 繁昌县| 拜泉县| 庄河市| 阿勒泰市| 喀什市| 鲁山县| 民权县| 武清区| 于田县| 中牟县| 通海县| 太和县| 扬州市| 三原县| 平顶山市| 宝应县|