91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言版掃雷游戲怎么實現

發布時間:2021-11-22 10:11:15 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

這篇文章主要介紹C語言版掃雷游戲怎么實現,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

用c語言做一個掃雷功能的簡單實現,首先創建一個test.c來用于在寫代碼的途中測試掃雷代碼,game.h來存放實現掃雷函數需要用到的頭文件,game.c來存放最終的成品。

首先用函數打印一個菜單,讓玩家選擇進行游玩掃雷游戲或者退出,考慮到玩家會輸入1和2以外的數字,我們加上一個fefault,將菜單放入do-while循環中,while的結束條件為choose為0,玩家在結束一場游戲后可以重新走一邊循環,保證用戶在結束一把掃雷之后可以選擇繼續進行下一局或是退出游戲。

void menu()
{
 printf("**********\n");
 printf("**1.play**\n");
 printf("**0.quit**\n");
 printf("**********\n");
}
 
void test()
{
 int choose;
 do
 {
  menu();
  printf("請進行你的選擇");
  scanf("%d", &choose);
  switch (choose)
  {
  case 1:
   printf("游戲開始\n");
   break;
  case 2:
   printf("游戲退出\n");
  default:
   printf("選擇錯誤,請重新選擇\n");
  }
 } while (choose);
}

在case1中加入game()函數來進行掃雷游戲的實現。掃雷有雷的布置和雷的掃,首先來實現雷的布置,用二維數組實現一個9x9的棋盤,通過建立兩個棋盤來實現信息的交互,一個棋盤hid放雷的布置情況,還有一個棋盤show來將信息呈現給玩家。因為show棋盤需要將用戶掃過區域周圍八個格子雷的數量寫出來,如果定義一個【9】【9】的數組就會發生越界,因此兩個數組都定位為11x11,為了方便寫,宏定義col=9 row=9 COL=col+2 ROW=row+2。初始化show數組全為*,hid數組全為0

void SetBoard(char board[ROW][COL], int r, int c, char set)
{
 for (int i = 0; i < r; i++)
 {
  for (int j = 0; j < c; j++)
  {
   board[i][j] = set;
  }
 }
}
 
void ShowBoard(char board[ROW][COL],int r,int c)
{
 for (int a = 0; a <= r; a++)
 {
  printf("%d ", a);
 }
 printf("\n");
 for (int i = 1; i <= r; i++)
 {
  printf("%d ", i);
  for (int j = 1; j <= c; j++)
  {
   printf("%c ", board[i][j]);
  }
  printf("\n");
  
 }
}

接下來實現雷的隨機插入,隨機生成兩個一到九的整數下x,y,添加一個count計數器,如果當前hid[x][y]為字符0 則hid[x][y]為字符0,count計數器加一

srand((unsigned int)time(NULL));
 
void SetBoob(char hid[ROW][COL],int rw,int c)
{
 int count = 0;
 for (int i = 0; count <= 9; i++)
 {
  int x = rand() % row + 1;
  int y = rand() % col + 1;
  if (hid[x][y] == '0')
  {
   hid[x][y] = '1';
   count = count + 1;
  }
 }
}

這樣雷就布置好了,接下來是玩家排雷的過程。

用while(1)做一個一直重復的循環,玩家輸入行和列x,y,程序將hid[x][y]與字符‘1'對比,若踩雷則跳出循環顯示游戲結束并打印hid棋盤讓玩家看到雷的位置,若沒踩雷show[x][y]變成周圍八個格子的地雷個數并打印show棋盤。因為玩家可能輸入1~9之外的數,因此要用if函數限制x,y的大小。

統計hid【x】【y】周圍的雷的個數可以通過將周圍的字符全部相加再減去八個字符0來實現

void CountBoob(char hid[ROW][COL], int x, int y)
{
 int count;
 count = hid[x - 1][y - 1] + hid[x][y - 1] + hid[x + 1][y - 1] + hid[x - 1][y] + hid[x + 1][y] + hid[x - 1][y + 1] + hid[x][y + 1] + hid[x + 1][y + 1] - 8 * '0';
 return count;
}
void FindBoob(char hid[ROW][COL], char show[ROW][COL], int r, int c)
{
 int x, y;
 while (1)
 {
  printf("請輸入行和列");
  scanf("%d %d", &x, &y);
  if (x >= 1 && x <= row && y >= 1 && y <= col)
  {
   if (hid[x][y] == '1')
   {
    printf("游戲結束\n");
    ShowBoard(hid, row, col);
    break;
   }
   else
   {
    int n = CountBoob(hid, x, y);
    show[x][y] = n+'0';
    ShowBoard(show, row, col);
   }
  }
  else
  {
   printf("輸入錯誤坐標請重新輸入");
  }
 }
}

后期我在掃雷過程中加入了一個計數器count,每掃一個無雷區域則count加一當count等于71時打印游戲勝利并展示hid棋盤跳出循環。

將所有的函數放入頭文件,.c程序如下

#define _CRT_SECURE_NO_WARNINGS 1
 
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include "game.h"
 
int main()
{
 int choose;
 srand((unsigned int)time(NULL));
 do
 {
  menu();
  printf("請進行你的選擇");
  scanf("%d", &choose);
  switch (choose)
  {
  case 1:
   printf("游戲開始\n");
   game();
   break;
  case 0:
   printf("游戲退出\n");
   break;
  default:
   printf("選擇錯誤,請重新選擇\n");
  }
 } while (choose);
}

掃雷是如若周圍沒有雷,可以實現棋盤的展開,這個因為時間問題只能進行后期補充。

以上是“C語言版掃雷游戲怎么實現”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿城市| 报价| 景泰县| 黑山县| 会东县| 常山县| 疏勒县| 永和县| 普兰店市| 无棣县| 德兴市| 广州市| 东乡县| 乐安县| 高清| 八宿县| 东乌珠穆沁旗| 云林县| 连城县| 长春市| 平舆县| 襄汾县| 宁津县| 陇南市| 宁德市| 黔西县| 谢通门县| 通州区| 鄂尔多斯市| 蒲城县| 大同市| 绥滨县| 方城县| 灌阳县| 大竹县| 平安县| 周至县| 金堂县| 济南市| 汪清县| 姚安县|