温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言怎么实现扫雷小游戏

发布时间:2021-07-30 14:36:24 来源:亿速云 阅读:198 作者:chen 栏目:开发技术

本篇内容介绍了“C语言怎么实现扫雷小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下

在vs2019创建新项目,然后添加两个源文件test.c和game.c,接着创建一个头文件game.h。

C语言怎么实现扫雷小游戏

test.c:

#include "game.h"   void game() {  char mine[ROWS][COLS] = { 0 };  char show[ROWS][COLS] = { 0 };    InitBoard(mine, ROWS, COLS, '0');  InitBoard(show, ROWS, COLS, '*');    SetMine(mine, ROW, COL);    //DispalyBoard(mine, ROW, COL);  DispalyBoard(show, ROW, COL);    FindMine(mine, show, ROW, COL); }   void menu() {  printf("**************************\n");  printf("******    1.play    ******\n");  printf("******    0.exit    ******\n");  printf("**************************\n"); }   int main() {  int input = 0;  srand((unsigned int)time(NULL));  do  {   menu();   printf("请输入:");   scanf("%d", &input);   switch (input)   {   case 1:    game();    break;   case 0:    printf("退出游戏\n");    break;   default:    printf("输入错误,请重新输入\n");    break;   }  } while (input);  return 0; }

game.c:

#include "game.h"   void InitBoard(char board[ROWS][COLS], int rows, int cols, char set) {  int i = 0;  for (i = 0; i < rows; i++)  {   int j = 0;   for (j = 0; j < cols; j++)   {    board[i][j] = set;   }  } }     void DispalyBoard(char board[ROWS][COLS], int row, int col) {  int i = 0;  for (i = 0; i <= 9; i++)  {   printf("%d ", i);  }  printf("\n");  for (i = 1; i <= row; i++)  {   int j = 0;   printf("%d ", i);   for (j = 1; j <= col; j++)   {    printf("%c ", board[i][j]);   }   printf("\n");  } }     void SetMine(char board[ROW][COL], int row, int col) {  int count = EASY_COUNT;  while (count)  {   int x = rand() % row + 1;   int y = rand() % col + 1;   if (board[x][y] != '1')   {    board[x][y] = '1';    count--;   }  } }     int GetMineCount(char mine[ROWS][COLS], int x, int y) {  return (mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] +   mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0'); }   void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) {  int x = 0;  int y = 0;  int win = 0;  while (win<row*col-EASY_COUNT)  {   printf("请输入要排查的坐标:");   scanf("%d%d", &x, &y);     if (x >= 1 && x <= row && y >= 1 && y <= col)   {    if (mine[x][y] == '1')    {     printf("很遗憾,你被炸死了\n");     DispalyBoard(mine, ROW, COL);     break;    }    else    {     int count = GetMineCount(mine, x, y);     show[x][y] = count + '0';     DispalyBoard(show, ROW, COL);     win++;    }   }   else   {    printf("坐标非法,请重新输入\n");   }  }  if (win == row * col - EASY_COUNT)  {   printf("排雷成功\n");  } }

game.h:

#pragma once   #include <stdio.h> #include <stdlib.h> #include <time.h>   #define ROW 9 #define COL 9   #define EASY_COUNT 10 #define ROWS ROW+2 #define COLS COL+2 void InitBoard(char board[ROWS][COLS], int rows, int cols, char set); void DispalyBoard(char board[ROWS][COLS], int row, int col); void SetMine(char board[ROWS][COLS], int row, int col); void FindMine(char mine[ROW][COL], char show[ROW][COL], int row, int col);

运行效果如图:

C语言怎么实现扫雷小游戏

“C语言怎么实现扫雷小游戏”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI