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

扫雷是如若周围没有雷,可以实现棋盘的展开,这个因为时间问题只能进行后期补充。

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

(0)

相关推荐

  • C语言 完整游戏项目推箱子详细代码

    话不多说 我们今天就来创造出属于我们自己的<推箱子>,GOGOGO!!! 直接开始吧 首先是我们用二维数组特定的数字描绘出这个地图 int cas = 0; int map[3][8][8] = { 1,1,1,1,1,1,1,1, 1,3,4,0,0,4,3,1, 1,0,1,3,0,1,0,1, 1,0,1,4,0,1,0,1, 1,0,0,5,0,0,0,1, 1,0,1,0,0,1,0,1, 1,3,4,0,0,4,3,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1

  • C语言 完整游戏项目坦克大战详细代码

    话不多说 我们今天就来创造出属于我们自己的<坦克大战>,GOGOGO!!! 直接开始吧 这次的源码比较详细,我分了好几个cpp文件,思路更加的清晰,请耐心用心的观看 首先就是我们载入图片的函数tupian.cpp # include "tanke.h" 障碍物 void LaoWang(int * tilex, int * tiley) { IMAGE img; loadimage(&img, _T("res\\tile.bmp")); puti

  • C语言 90后怀旧游戏超级玛丽的实现流程

    在你的童年记忆里,是否有一个蹦跳.顶蘑菇的小人已经被遗忘? 如果你回忆起了它,你定然会觉得现在它幼稚.无聊,画面不漂亮,游戏不精彩--但请你记住:这才是真正的游戏,它给了你无限的欢乐!许多人只玩过红白机或者网上玩家自己制作的几个破Flash小游戏就还以为任天堂所骄傲的"马里奥"系列就这样子的,你们真的以为超级马里奥就是1985年的"踩蘑菇/采蘑菇"么?也许大家都管马里奥叫超级玛丽,踩蘑菇,这是谁宣传的? 谁认为马里奥就1个游戏?谁说马里奥没有一个是2000年后出的!

  • C语言实现简易的扫雷游戏

    本文实例为大家分享了C语言实现简易的扫雷游戏的具体代码,供大家参考,具体内容如下 在正式讲内容之前先说一说扫雷游戏的规则 游戏规则很简单,点击方格,如果是地雷,游戏失败,找到所有地雷游戏胜利 .刚开始需要碰运气,只要点开一个区域,就可以正式开始了. 3.根据现有情况,判断出一定有雷的位置. 4.进一步计算,因为"2"右边的"1"已经有从属的雷了,所以右边的"2"的正下方没有雷,因此可以判断出左边有两颗雷,满足两个"2". 5.

  • C语言简易实现扫雷小游戏

    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 经典扫雷游戏规则: 当玩家点击游戏区域,该处周围的八个位置有几个雷(如果是角落则是周边三个位置雷的个数,边缘位置同理),就展示数字几.如果该处是雷则直接结束游戏. 用C语言实现基本思路: 假设我们要实现一个9*9棋盘的扫雷,为了计算边缘或者角落雷的个数我们可以将雷区变成12*12的棋盘,将最外围的棋盘全部变为0,这样不论是哪个位置的雷,我们都可以计算其周边8个位置雷个数的和, 1.设置游戏菜单,让用户输入数据选择是否进

  • C语言 风靡一时的黄金矿工游戏实现流程详解

    游戏的玩法主要是通过不断采集地下的黄金和钻石,来得到更高的积分.只有完成任务目标,才可以通过相应的关卡.游戏画面中沙滩上的人物便是玩家的角色,下方深褐色的部分是地下,而黄金和钻石就是玩家需要采集的物品.人物右边的四个方框里的物品是游戏中可以使用的道具. 画面中的虚线就是游戏中的探测器,探测器会不断的左右摆动,当摆动到地下的黄金和钻石的位置时,只需要点击矿坑任意处,便可以发射勘探头采集到这些物品,当然一定要瞄准好再出手呦. 当然想要顺利采集到丰富的资源也不是那么简单的,地下矿坑中,会有各式各样的困

  • C语言 小游戏打砖块实现流程详解

    始祖是美国英宝格公司(en:Atari Games,ja:アタリ (ゲーム))于1976年推出的街机游戏"Breakout"(en:Breakout),由该公司在1972年发行的"PONG"(en:PONG,ja:ポン (ゲーム),世界上第一款电子游戏,类似台球)改良而来.相较于其前作,一个人就可以玩与变化丰富这两项特点让Breakout相当卖座,使各家公司竞相模仿. 因为规则简单与游戏性,现在许多移动电话都有内建打砖块游戏,也有许多因特网小游戏版本,目前在网上可以

  • C语言扫雷游戏的简单实现

    今天来用c语言做一个扫雷功能的简单实现,首先创建一个test.c来用于在写代码的途中测试扫雷代码,game.h来存放实现扫雷函数需要用到的头文件,game.c来存放最终的成品. 首先用函数打印一个菜单,让玩家选择进行游玩扫雷游戏或者退出,考虑到玩家会输入1和2以外的数字,我们加上一个fefault,将菜单放入do-while循环中,while的结束条件为choose为0,玩家在结束一场游戏后可以重新走一边循环,保证用户在结束一把扫雷之后可以选择继续进行下一局或是退出游戏. void menu()

  • C语言扫雷游戏的实现方法

    本文实例为大家分享了C语言扫雷游戏的实现代码,供大家参考,具体内容如下 实现扫雷 1.创建俩12*12的字符数组,一个用作放雷,一个呈现给用户 2.利用随机数往防雷数组中产生雷 3.设计呈现给用户的数组 4.利用输入坐标判断--如果有雷,游戏结束并呈现放雷数组:如果无雷,计算周围一圈雷的数量并显示 代码如下 头文件 #define _CRT_SECURE_NO_WARNINGS #pragma once #include<stdio.h> #include<windows.h> #

  • 基于C语言扫雷游戏的设计与实现

    目录 1 引言 2 相关工作 3 本文方法 4 结果与分析 5 总结 整体代码 1 引言 伴随着信息技术的快速发展,近年来,人们的生活已经离不开计算机.生活娱乐几乎都是在计算机上进行的.其中的扫雷游戏就是之一.扫雷游戏是微软公司在1992年在windows系统上发布的一款益智类小游戏,直到今天这款小游戏依然存在,可见此款游戏的成功.本文将用Visual Studio 2019作为开发工具来模拟实现扫雷游戏.经过大一第一学期的学习,我们对C语言的理论及其相关知识有了一定的认识和了解.本文可以把我们

  • C语言扫雷游戏的实现

    本文实例为大家分享了C语言扫雷游戏的具体代码,供大家参考,具体内容如下 扫雷游戏的实现 1.game.h模块 代码实现如下: #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <time.h> #define EASY_COUNT 10 #define ROW 9 #define COL 9 #define ROWS ROW+2 #define COLS C

  • C++扫雷游戏的简单制作

    本文实例为大家分享了C++实现扫雷游戏的具体代码,供大家参考,具体内容如下 #ifndef SAOLEI_H #define SAOLEI_H class Block { friend class Saoleigame; public: Block(); bool isShown(); void setnum(int); int getnum(); bool isbomb(); protected: int num; bool flag_show; int x; int y; }; class

  • 老程序员教你一天时间完成C语言扫雷游戏

    目录 扫雷游戏 1.菜单 2.初始化棋盘 3.打印棋盘 4.布置雷 5.排查雷 6.整体效果展示 7.代码分享 7.1 test.c 7.2 game.c 7.3 game.h 总结 扫雷游戏 今天我们就要设计一款这样的游戏,首先需要设置棋盘,然后对棋盘进行随机布雷,最后在排雷. 1.菜单 首先制作一个简易菜单 int main() { int input; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:\n");

  • C语言扫雷游戏的实现代码

    这是一个用C语言实现的控制台扫雷小游戏,实现了随机布置炸弹.扫描炸弹.标记炸弹.百分百第一次不被炸死等功能. 编译器:vs2015 功能模块图 源代码 #include<stdio.h> #include<stdlib.h> #include<time.h> void show(int cbd[10][10],int u[10][10]) //界面输出函数 { int i, j; //for (i = 0; i < 10; i++) //输出全部炸弹信息(上帝视角

  • C语言实现扫雷游戏详解(附源码)

    目录 1.游戏的功能 2.游戏实现的基本思路 2.1实现菜单给玩家选择 2.2初始化棋盘 2.3数组大小的问题 2.4对棋盘赋值 2.5打印棋盘 2.6布置雷 2.7排查雷 3.代码基本实现部分 3.1主函数部分 3.2 初始化棋盘 3.3对两个棋盘进行赋值 3.4打印棋盘 3.5布置雷 3.6排查雷  3.7函数声明 4.扫雷游戏的源代码 总结 1.游戏的功能 游戏的主要功能有 1:棋盘内有若干个雷 2:玩家输入要排查雷的坐标 3:在玩家输入的坐标处显示周围八个坐标有几个雷 3:若玩家将所有的

  • C语言实现扫雷游戏详解(附源码)

    目录 1.游戏的功能 2.游戏实现的基本思路 2.1实现菜单给玩家选择 2.2初始化棋盘 2.3数组大小的问题 2.4对棋盘赋值 2.5打印棋盘 2.6布置雷 2.7排查雷 3.代码基本实现部分 3.1主函数部分 3.2 初始化棋盘 3.3对两个棋盘进行赋值 3.4打印棋盘 3.5布置雷 3.6排查雷  3.7函数声明 4.扫雷游戏的源代码 总结 1.游戏的功能 游戏的主要功能有 1:棋盘内有若干个雷 2:玩家输入要排查雷的坐标 3:在玩家输入的坐标处显示周围八个坐标有几个雷 3:若玩家将所有的

  • C语言简易扫雷游戏

    本文实例为大家分享了C语言扫雷游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX_ROW 9 #define MAX_COL 9 #define MINE_C0UNT 10 void menu() { printf("************************\n"); printf("***** 1.play *

随机推荐