iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现简易扫雷程序
  • 533
分享到

C语言实现简易扫雷程序

2024-04-02 19:04:59 533人浏览 泡泡鱼
摘要

前言 前面写了三子棋的小游戏,感觉不过瘾,今天再来一个扫雷的小游戏。欢迎评论探讨 思路分析 游戏简介 说到扫雷很容易想起很多个方形格子,表面什么也没有,点击其中一个小格子,如果时炸弹

前言

前面写了三子棋的小游戏,感觉不过瘾,今天再来一个扫雷的小游戏。欢迎评论探讨

思路分析

游戏简介

说到扫雷很容易想起很多个方形格子,表面什么也没有,点击其中一个小格子,如果时炸弹,游戏直接,如果没有炸弹,则显示周围八个格子中炸弹个数,看到这里,我们需要棋盘,即二维数组,看来还需要两个,一个放炸弹坐标,一个用来反馈周围炸弹数

棋盘设置

有了前面三子棋的基础我们首先要初始化棋盘并且可以打印棋盘,这个好像没有什么难度。

我们用*代表未知,这是一个9的方阵,但是好像用了11X11的数组,这是避免计算点击边界的时候出现数组越界的情况。

炸弹设置

我们需要一个函数来设置炸弹,并且保证它是随机,且不能占用已经设置的炸弹位置,我们将炸弹设置为1,非炸弹设置为0,方便计算周围砸蛋数。


void SetMine(char board[ROWS][COLS], int row, int col)
{
 int count = EASY_COUNT;

 while (count)
 {
  //1. 生成随机下标
  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');
}

玩家操作

初始化棋盘->生成炸弹->玩家点击->判断炸弹或者周围炸弹数->玩家点击->判断炸弹或者周围炸弹数
同时还要记录操作次数,如果操作数等于格子总数减去炸弹数就赢了,点击炸弹直接over。

运行游戏

首先排查1,1,但是没有炸弹,接着随机排查几个坐标

到此,我们可以推断4,2是一个炸弹

被炸死后,显示所有炸弹的未知。
选择0,1是为了方便反馈周围炸弹数量。

源代码

本次程序采用多文件形式

game.h


#pragma once

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


#define ROW 9
#define COL 9

#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);

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 DisplayBoard(char board[ROWS][COLS], int row, int col)
{
 int i = 0;
 printf("------------------------\n");
 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");
 }
 printf("------------------------\n");
}


void SetMine(char board[ROWS][COLS], int row, int col)
{
 int count = EASY_COUNT;

 while (count)
 {
  //1. 生成随机下标
  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");
    DisplayBoard(mine, ROW, COL);
    break;
   }
   else
   {
    int count = GetMineCount(mine, x, y);
    show[x][y] = count + '0';
    DisplayBoard(show, ROW, COL);
    win++;
   }
  }
  else
  {
   printf("坐标非法,重新输入\n");
  }
 }

 if (win == row * col - EASY_COUNT)
 {
  printf("恭喜你,排雷成功\n");
  DisplayBoard(mine, ROW, COL);
 }
}

test.c


#define _CRT_SECURE_NO_WARNINGS
#include "game.h"
void menu()
{
 printf("********************************\n");
 printf("*********   1. play     ********\n");
 printf("*********   0. exit     ********\n");
 printf("********************************\n");
}

void game()
{
 char mine[ROWS][COLS] = { 0 };//存放雷的信息
 char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息
 //初始化一下棋盘
 InitBoard(mine, ROWS, COLS, '0');//'0'
 InitBoard(show, ROWS, COLS, '*');//'*'

 //布置雷
 SetMine(mine, ROW, COL);
 DisplayBoard(show, ROW, COL);

 //排查雷
 FindMine(mine, show, ROW, COL);
}

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;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C语言实现简易扫雷程序

本文链接: https://www.lsjlt.com/news/131472.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言实现简易扫雷程序
    前言 前面写了三子棋的小游戏,感觉不过瘾,今天再来一个扫雷的小游戏。欢迎评论探讨 思路分析 游戏简介 说到扫雷很容易想起很多个方形格子,表面什么也没有,点击其中一个小格子,如果时炸弹...
    99+
    2022-11-12
  • C语言实现简易版扫雷游戏
    本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下 这个小项目源自两个月前学数组的时候,由于觉得比较重要,想记录一下。 首先,大概的思路是要做出两个二维数组充...
    99+
    2022-11-12
  • C语言实现简易的扫雷游戏
    本文实例为大家分享了C语言实现简易的扫雷游戏的具体代码,供大家参考,具体内容如下 在正式讲内容之前先说一说扫雷游戏的规则 游戏规则很简单,点击方格,如果是地雷,游戏失败,找到所有地...
    99+
    2022-11-12
  • C语言简易实现扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 经典扫雷游戏规则: 当玩家点击游戏区域,该处周围的八个位置有几个雷(如果是角落则是周边三个位置雷的个数,...
    99+
    2022-11-12
  • C语言实现扫雷算法简易版
    扫雷分析 从小到大你或许没玩过但一定听过的游戏——扫雷 首先我们来分一下“扫雷”的功能 这是一个简单难度的扫雷,从外观上,我们可以发现可供用户操作的棋盘范围是9×9的范围,也就是我...
    99+
    2022-11-12
  • C语言实现简易扫雷游戏详解
    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 一、想要达到的游戏功能: 大家如果想编写一个游戏,应具备以下的步骤: 1:了解游戏的规则 2:&nbs...
    99+
    2022-11-12
  • C语言实现简易的扫雷小游戏
    这是一个用C语言实现的控制台扫雷小游戏,实现了随机布置炸弹、扫描炸弹、标记炸弹、百分百第一次不被炸死等功能。 编译器:vs2015 功能模块图 源代码 #include<st...
    99+
    2022-11-13
  • 基于C语言实现简易扫雷游戏
    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 1、头文件 #define _CRT_SECURE_NO_WARNINGS //包含头文件 #incl...
    99+
    2022-11-12
  • C语言如何实现简易扫雷游戏
    这篇文章主要介绍C语言如何实现简易扫雷游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下一、想要达到的游戏功能:大家如果想编写一个游戏,应具备以下的步骤:了解游戏的规则   知道游戏应...
    99+
    2023-06-20
  • C语言如何实现简易的扫雷游戏
    这篇文章给大家分享的是有关C语言如何实现简易的扫雷游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下在正式讲内容之前先说一说扫雷游戏的规则游戏规则很简单,点击方格,如果是地雷,游戏失败,找到所有地雷游...
    99+
    2023-06-25
  • 基于C语言实现简易的扫雷游戏
    对于C语言学习者来说,在完成C语言初级学习之后,扫雷游戏是一个很好的知识的总结和练习。 扫雷即在一个棋盘中,随机放入一定数量的雷,玩家通过输入坐标,得到坐标上的信息(以此点为中心四周...
    99+
    2022-11-13
  • C语言怎么实现简易版扫雷游戏
    这篇文章将为大家详细讲解有关C语言怎么实现简易版扫雷游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易...
    99+
    2023-06-14
  • C语言实现扫雷小程序
    前言 《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。 多文件形式 在实现游戏...
    99+
    2022-11-12
  • 如何使用C语言实现简易扫雷游戏
    这篇文章主要介绍了如何使用C语言实现简易扫雷游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、头文件#define _CRT_SECURE_NO_WARNING...
    99+
    2023-06-26
  • 用C语言实现扫雷小程序
    本文实例为大家分享了C语言实现扫雷小程序的具体代码,供大家参考,具体内容如下 扫雷程序的编写需要有清晰的思路,所以我们先要清楚扫雷的实现有几个功能模块让我们编写,再用主函数将功能结合...
    99+
    2022-11-13
  • 基于C语言如何实现简易的扫雷游戏
    这篇文章主要讲解了“基于C语言如何实现简易的扫雷游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于C语言如何实现简易的扫雷游戏”吧!扫雷即在一个棋盘中,随机放入一定数量的雷,玩家通过输入...
    99+
    2023-06-30
  • C语言实现简单扫雷源码
    扫雷是一款大家都熟知的小游戏,今天我们将使用c语言实现一个简易版本的扫雷 需要的功能 1.保证第一次下子时,不被炸死 2.输入的坐标周围没雷,可以直接展开周围的坐标 3.输入的坐标周...
    99+
    2022-11-12
  • C++实现简易版扫雷游戏
    目录一、菜单栏二、创建棋盘数组三、初始化棋盘四、打印棋盘五、布置雷六、排查雷七、全部代码总结一、菜单栏 1.先用printf函数制作一个简易版的菜单,并附上选项提示,玩游戏或者退出游...
    99+
    2022-11-12
  • C语言实现简单的扫雷功能
    这是我跟着学习视频完成的第一个小游戏,运用到的知识不多都是数组相关的知识,重要的是思路,在设计的时候要先绘制出大概的框图,要知道游戏的根本,这样会让你写程序的时候更加方便。 下面看代...
    99+
    2022-11-12
  • C语言扫雷游戏的简单实现
    今天来用c语言做一个扫雷功能的简单实现,首先创建一个test.c来用于在写代码的途中测试扫雷代码,game.h来存放实现扫雷函数需要用到的头文件,game.c来存放最终的成品。 首先...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作