文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用C语言代码实现扫雷游戏

2023-06-08 09:04

关注

本篇内容主要讲解“如何使用C语言代码实现扫雷游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用C语言代码实现扫雷游戏”吧!

概述

扫雷是一款大众类的益智小游戏。游戏目标是根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。

实现过程

1、创建一个用户交互菜单
2、布雷函数
3、显示扫雷矩阵
4、玩家自定义坐标
5、计算排雷数

多文件实现

头文件  clear_mine.h

#pragma once  //防止头文件被重复包含 #define _CRT_SECURE_NO_WARNINGS 1   //实现 scanf 编译通过 #include <stdio.h>#include <stdlib.h>#include <time.h>#include <windows.h> #define ROW 8              #define COL 8            #define STYLE '?'        //初始化#define NUM 20           //埋雷数 extern void Game();

源文件main.c

向玩家展示菜单栏

#include "clear_mine.h" static void Menu()          //用户交互菜单{ printf("########################\n"); printf("#  1. Play      0.Exit #\n"); printf("########################\n");} int main(){ int quit = 0; int select = 0; while (!quit) {  Menu();  printf("Please Enter# ");  scanf("%d", &select);  switch (select)  {  case 1:   Game();   break;  case 0:   quit = 1;   break;  default:   printf("Position Error, Try Again!\n");   break;  } }  printf("byebye!\n");  system("pause"); return 0;}

如何使用C语言代码实现扫雷游戏

源文件clear_mine.c

#include "clear_mine.h" static void SetMines(char board[][COL], int row, int col)     //布雷{ int count = NUM; while (count) {  int x = rand() % (row - 2) + 1;  int y = rand() % (col - 2) + 1;   //随机数生成 矩阵长宽分别-2 的随机数  if (board[x][y] == '0')     //非法判断 只能同一个位置生成一个随机数  {   board[x][y] = '1';   count--;  } }} static void ShowLine(int col)        { for (int i = 0; i <= (col - 2); i++) {  printf("----"); } printf("\n");}static void ShowBoard(char board[][COL], int row, int col)    //显示扫雷矩阵{ printf("     "); for (int i = 1; i <= (col - 2); i++)      //表头数字打印 {  printf("%d   ", i); } printf("\n"); ShowLine(col);         for (int i = 1; i <= (row - 2); i++) {  printf("%-3d|", i);  for (int j = 1; j <= (col - 2); j++)  {   printf(" %c |", board[i][j]);  }  printf("\n");  ShowLine(col); }} static char CountMines(char board[][COL], int x, int y)      //计算某点周围8个位置雷总数{ return board[x - 1][y - 1] + board[x - 1][y] + board[x - 1][y + 1] + \  board[x][y + 1] + board[x + 1][y + 1] + board[x + 1][y] + \  board[x + 1][y - 1] + board[x][y - 1] - 7 * '0';} void Game(){ srand((unsigned long)time(NULL));     //生成随机数种子  char show_board[ROW][COL]; char mine_board[ROW][COL];  memset(show_board, STYLE, sizeof(show_board));  //生成用户显示矩阵    memset(mine_board, '0', sizeof(mine_board));    //生成扫雷矩阵  SetMines(mine_board, ROW, COL);            //布雷  int count = (ROW - 2)*(COL - 2) - NUM;        //排雷  while (count) {  system("cls");                //清屏  ShowBoard(show_board, ROW, COL);  printf("Please Enter Your Position <x,y># ");  int x = 0;  int y = 0;  scanf("%d %d", &x, &y);  if (x < 1 || x > 10 || y < 1 || y > 10)    //非法性判断  {   printf("Postion Error!\n");   continue;  }  if (show_board[x][y] != STYLE){   printf("Postion Is not *\n");   continue;  }  if (mine_board[x][y] == '1'){   printf("game over!\n");   ShowBoard(mine_board, ROW, COL);   break;  }    show_board[x][y] = CountMines(mine_board, x, y);  count--; } }

初始化好的扫雷矩阵 

如何使用C语言代码实现扫雷游戏

游戏体验结果

如何使用C语言代码实现扫雷游戏

到此,相信大家对“如何使用C语言代码实现扫雷游戏”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯