C语言代码实现简单扫雷游戏

 更新时间:2021年02月07日 08:42:04   作者:菜菜是真菜  
这篇文章主要为大家详细介绍了C语言代码实现简单扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C语言实现扫雷游戏,供大家参考,具体内容如下

game1.h中的代码如下:

里边放置的是相关的函数声明

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define ROWS ROW+2
#define COLS COL+2

#define EASY_COUNT 10

void InitBoard(char board[ROWS][COLS],int rows,int cols,char set);
void DisplayBoard(char board[ROWS][COLS],int row,int col);
void SetMine(char board[ROWS][COLS],int row,int col);
void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

saolei.c中的代码如下:

这里主要是实现菜单的打印以及棋盘的打印

#define _CRT_SECURE_NO_WARNINGS 1
#include"game1.h"

void menu()
{
 printf("**************************\n");
 printf("******* 1.play *********\n");
 printf("******* 0.exit *********\n");
 printf("**************************\n");
}

void game1()
{
 //雷的信息存储
 //布置好雷的信息
 char mine[ROWS][COLS]={0};
 //排查出雷的信息
 char show[ROWS][COLS]={0};
 //初始化
 InitBoard(mine,ROWS,COLS,'0');
 InitBoard(show,ROWS,COLS,'*');
 DisplayBoard(show,ROW,COL);
 //布置雷
 SetMine(mine,ROW,COL);
 //扫雷
 FindMine(mine,show,ROW,COL);
}

void saolei()
{
 int input=0;
 srand((unsigned int)time(NULL));
 do
 {
 menu();
 printf("请选择:");
 scanf("%d",&input);
 switch(input)
 {
 case 1:
 game1();
 break;
 case 0:
 printf("退出游戏\n");
 break;
 default:
 printf("选择错误,请重新选择!\n");
 break;
 }
 }while(input);
}

int main()
{
 saolei();
 return 0;
}

game1.c中的代码如下:

主要是玩家玩游戏排雷的整个游戏过程的相关函数操作。

#define _CRT_SECURE_NO_WARNINGS 1
#include"game1.h"
#include<stdio.h>

void InitBoard(char board[ROWS][COLS],int rows,int cols,char set)
{
 int i=0;
 int j=0;
 for(i=0;i<rows;i++)
 {
 for(j=0;j<cols;j++)
 {
 board[i][j]=set;
 }
 }
}

void DisplayBoard(char board[ROWS][COLS],int row,int col)
{
 int i=0;
 int j=0;
 for(i=0;i<=col;i++)
 {
 printf("%d ",i);
 }
 printf("\n");
 for(i=1;i<=row;i++)
 {
 printf("%d ",i);
 for(j=1;j<col;j++)
 {
 printf("%c ",board[i][j]);
 }
 printf("\n");
 }
}

void SetMine(char board[ROWS][COLS],int row,int col)
{
 int count=EASY_COUNT;
 while(count)
 {
 int x=rand()%row+1;
 int y=rand()%col+1;
 if(board[x][y]=='0')
 {
 board[x][y]='1';
 count--;
 }
 }
}

int get_mine_count(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");
 DisplayBoard(mine,row,col);
 break;
 }
 else
 {
 int count=get_mine_count(mine,x,y);
 show[x][y]=count+'0';
 DisplayBoard(show,row,col);
 win++;
 }
  }
 else
 {
  printf("输入坐标非法,请重新输入!");
  }
 }
 if(win==win<row*col-EASY_COUNT)
 {
 printf("恭喜你,排雷成功!\n");
 DisplayBoard(mine,row,col);
 }
}

代码运行结果如图所示:

相关文章

  • C++11 std::shared_ptr总结与使用示例代码详解

    C++11 std::shared_ptr总结与使用示例代码详解

    这篇文章主要介绍了C++11 std::shared_ptr总结与使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • VC创建DLL动态链接库的方法

    VC创建DLL动态链接库的方法

    这篇文章主要介绍了VC创建DLL动态链接库的方法,实例分析VC创建动态链接库的完整步骤,需要的朋友可以参考下
    2015-05-05
  • C语言 超详细讲解链接器

    C语言 超详细讲解链接器

    在C语言中,一个重要的思想就是分别编译,即若干个源程序能够在不一样的时候单独进行编译,而后在恰当的时候整合到一块儿。可是链接器通常是与C编译器分离的,链接器如何作到把若干个C源程序合并成一个总体呢,我们一起来看看
    2022-03-03
  • C++加密解密php代码的方法

    C++加密解密php代码的方法

    这篇文章主要介绍了C++加密解密php代码的方法,实例分析了基于C++实现加密解密的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 简单掌握桶排序算法及C++版的代码实现

    简单掌握桶排序算法及C++版的代码实现

    桶排序是将要排序的算法按桶分组排序之后再遍历汇总的一种线性排序算法,下面就让我们来通过小例子简单掌握桶排序算法及C++版的代码实现^^
    2016-07-07
  • C++ std::make_unique和std::make_shared用法小结

    C++ std::make_unique和std::make_shared用法小结

    本文主要介绍了C++ std::make_unique和std::make_shared用法,使用std::make_unique和std::make_shared能够简化动态分配内存和构造对象的过程,提高代码的安全性和可读性,感兴趣的可以了解一下
    2023-11-11
  • C语言版五子棋游戏的实现代码

    C语言版五子棋游戏的实现代码

    这篇文章主要为大家详细介绍了C语言版五子棋游戏的实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • swift Character类型详解及实例

    swift Character类型详解及实例

    这篇文章主要介绍了 swift Character类型详解及实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++回溯算法深度优先搜索举例分析

    C++回溯算法深度优先搜索举例分析

    回溯在迷宫搜索中使用很常见,就是这条路走不通,然后返回前一个路口,继续下一条路。回溯算法说白了就是穷举法,下面让我们一起来看看回溯算法深度优先搜索吧
    2022-03-03
  • VC MFC非模态对话框的实现方法

    VC MFC非模态对话框的实现方法

    这篇文章主要介绍了VC MFC非模态对话框的实现方法,有助于读者加深对于模态对话框与非模态对话框的理解与运用,需要的朋友可以参考下
    2014-07-07

最新评论