基于C语言代码实现扫雷游戏

 更新时间:2020年11月10日 08:40:04   作者:楠c  
这篇文章主要为大家详细介绍了基于C语言代码实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

扫雷(第一次多文件应用)

扫雷的思路

game.h

#ifndef _GAME_H_
#define _GAME_H_
#include<stdio.h>
#include <time.h>
#include<string.h>
#include<windows.h>
#pragma warning(disable:4996)
#define ROW 12
#define COL 12
//定义20个雷
#define NUMS 20
void Menu();
void Game();

#endif

main.c

#include "game.h"

int main(){
 int quit = 0;
 int select = 0;
 while (!quit){
 Menu();
 scanf("%d", &select);
 switch (select){
 case 1:
 Game();
 break;
 case 2:
  quit = 1;
 break;
 default:
 printf("请重新输入");
 break;
 }
 
 }
 system("pause");
 return 0;
}

game.c

#include "game.h"

void Menu()
{
 printf("##########################\n");
 printf("## 1. Play  2. Exit ##\n");
 printf("##########################\n");
 printf("请输入# ");
}
//设置20个随机雷
void SetMines(char mine_board[][COL], int row, int col)
{
 int count = NUMS;
 while (count){
 int x = rand() % 10 + 1;
 int y = rand() % 10 + 1;
 if (mine_board[x][y] == '0'){
 mine_board[x][y] = '1';
 count--;
 }
 }
}
//判断周围有几个雷
int GetMines(char mine[][COL], int row, int col, int x, int y)
{
 return mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][y + 1] + \
 mine[x][y - 1] + mine[x][y + 1] + mine[x + 1][y - 1] + \
 mine[x + 1][y] + mine[x + 1][y + 1] - 8 * '0';
}
//设置界面的下划线
static void ShowLine(int nums)
{
 printf("---");
 for (int i = 0; i < nums; i++){
 printf("-");
 }
 printf("\n");
}
//一个显示界面,传入界面数组显示扫雷界面,传入布雷数组显示雷区界面
void ShowBoard(char show_board[][COL], int row, int col)
{
 printf(" ");
 for (int i = 1; i < row - 1; i++){
 printf(" %d ", i);
 }
 printf("\n");
 ShowLine(2 * col + col + 4);

 for (int i = 1; i < row - 1; i++){
 printf("%2d|", i);
 for (int j = 1; j < col - 1; j++){
 printf(" %c |", show_board[i][j]);
 }
 printf("\n");
 ShowLine(2 * col + col + 4);
 }
}

void Game()
{
 char show_board[ROW][COL];
 char mine_board[ROW][COL];
 memset(show_board, '*', sizeof(show_board));
 memset(mine_board, '0', sizeof(mine_board));
 srand((unsigned long)time(NULL));

 SetMines(mine_board, ROW, COL);
 int count = (ROW - 2)*(COL - 2) - NUMS;
 int x = 0;
 int y = 0;
 do{
 ShowBoard(show_board, ROW, COL);
 printf("请输入位置# ");
 scanf("%d %d", &x, &y);
 if (x < 1 || x > 10 || y < 1 || y >10){
 printf("输入越界,请重新输入!\n");
 continue;
 }
 if (show_board[x][y] != '*'){
 printf("该位置已经被排除,请重新输入!\n");
 continue;
 }
 if (mine_board[x][y] == '1'){
 break;
 }
 int num = GetMines(mine_board, ROW, COL, x, y);
 show_board[x][y] = num + '0';
 count--;
 system("cls");
 } while (count > 0);
 //count>0说明坐标是雷,break提前退出了
 if (count > 0){
 printf("你被炸死了!\n");
 }
 else{
 printf("你赢了!\n");
 }
 printf("下面是雷区的排布!\n");
 ShowBoard(mine_board, ROW, COL);
}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

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

相关文章

  • C语言实现猜数字的小游戏

    C语言实现猜数字的小游戏

    这篇文章主要为大家详细介绍了C语言实现猜数字的小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • C语言动态链表实现学生学籍管理系统

    C语言动态链表实现学生学籍管理系统

    这篇文章主要为大家详细介绍了C语言动态链表实现学生学籍管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • C/C++实现精灵游戏的示例代码

    C/C++实现精灵游戏的示例代码

    这篇文章主要为大家介绍了如何利用C++实现简单的精灵游戏,文中的示例代码讲解详细,有一定的参考价值,感兴趣的小伙伴可以了解一下
    2022-06-06
  • C语言实现简单的计算器

    C语言实现简单的计算器

    这篇文章主要为大家详细介绍了C语言实现简单的计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • C++标准库bitset类型的简单使用方法介绍

    C++标准库bitset类型的简单使用方法介绍

    这篇文章主要介绍了C++标准库bitset类型的简单使用方法,需要的朋友可以参考下
    2017-07-07
  • C语言实现整数逆序的情况解析

    C语言实现整数逆序的情况解析

    今天通过本文给大家介绍C语言实现整数逆序的情况,本文通过实例代码多种举例给大家介绍的非常详细,对C语言整数逆序相关知识感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • Qt读写CSV文件的三种方式及优劣对比

    Qt读写CSV文件的三种方式及优劣对比

    最近的要用到CSV格式的数据,所以这篇文章讲述一下QT读取CSV文件数据,下面这篇文章主要给大家介绍了关于Qt读写CSV文件的三种方式及优劣对比的相关资料,需要的朋友可以参考下
    2023-11-11
  • C++ 构造函数学习笔记

    C++ 构造函数学习笔记

    这篇文章主要为大家介绍了C++ 构造函数学习笔记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • C语言的数字游戏算法效率问题探讨实例

    C语言的数字游戏算法效率问题探讨实例

    这篇文章主要介绍了C语言的数字游戏算法效率问题探讨实例,需要的朋友可以参考下
    2014-04-04
  • C++笔记-设置cout输出数据的宽度和填充方式

    C++笔记-设置cout输出数据的宽度和填充方式

    这篇文章主要介绍了C++笔记-设置cout输出数据的宽度和填充方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论