IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 扫雷(C语言 多文件) -> 正文阅读

[C++知识库]扫雷(C语言 多文件)

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

extern void Game();

#define COL 8
#define ROW 8

#define THUNDER '*'
#define NUM 20

?

(main.c)

#include"test.h"

void Menu()
{
?? ?printf("+-----------------------------------+\n");
?? ?printf("| ? ?1.游戏 ? --------- ? 0.退出 ? ?|\n");
?? ?printf("+-----------------------------------+\n");
}
int main()
{
?? ?int select, flag = 1;
?? ?while (flag)
?? ?{
?? ??? ?Menu();
?? ??? ?printf("请输入:");
?? ??? ?scanf_s("%d", &select);
?? ??? ?switch (select)
?? ??? ?{
?? ??? ?case 0:
?? ??? ??? ?flag = 0;
?? ??? ??? ?break;
?? ??? ?case 1:
?? ??? ??? ?Game();
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?printf("输入有问题!!!\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?printf("结束,再见");
}

(game.c)

#include"test.h"

static void SetThunder(char Mine_board[ROW][COL], int row, int col)//埋雷
{
?? ?int num = NUM;
?? ?while (num)
?? ?{
?? ??? ?int x = rand() % (ROW - 2) + 1;//生成0~ROW-2的随机数
?? ??? ?int y = rand() % (COL - 2) + 1;
?? ??? ?if (Mine_board[x][y] != '1')//判断是否已经有雷
?? ??? ?{
?? ??? ??? ?Mine_board[x][y] = '1';
?? ??? ??? ?num--;
?? ??? ?}
?? ?}
}
static void Show(int col)//和Showboard()相关的函数,仅显示一排横线
{
?? ?printf("---");
?? ?for (int j = 1; j <= col - 2; j++)
?? ??? ?printf("----");
?? ?printf("\n");
}
static void Showboard(char Show_board[ROW][COL], int row, int col)//展示面板
{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//这块的调试有些细节,慢慢来就好了
?? ?for (int i = 1; i <= col - 2; i++)
?? ?{
?? ??? ?printf("%4d", i);
?? ?}
?? ?printf("\n");
?? ?Show(col);
?? ?for (int i = 1; i <= row - 2; i++)
?? ?{
?? ??? ?printf("%-2d|", i);
?? ??? ?for (int j = 1; j <= col - 2; j++)
?? ??? ?{
?? ??? ??? ?printf(" %c |", Show_board[i][j]);
?? ??? ?}
?? ??? ?printf("\n");
?? ??? ?Show(col);
?? ?}
}
static char CountThunder(char Mine_board[ROW][COL], int x, int y)//显示数组当前坐标内容更改为周围雷的"个数"(字符型)
{
?? ?return Mine_board[x - 1][y - 1] + Mine_board[x - 1][y] + Mine_board[x - 1][y + 1]
?? ??? ?+ Mine_board[x][y - 1] + Mine_board[x][y + 1]
?? ??? ?+ Mine_board[x + 1][y - 1] + Mine_board[x][y + 1] + Mine_board[x + 1][y + 1] - 8 * '0' + '0';//!!!
}
void Game()
{
?? ?char Show_board[ROW][COL];//显示用的数组
?? ?char Mine_board[ROW][COL];//埋雷用的数组
?? ?memset(Show_board, THUNDER, sizeof(Show_board));//初始化数组(用宏初始,易于维护)
?? ?memset(Mine_board,'0' , sizeof(Mine_board));//初始化数组(初始成字符0,埋雷的时候改成字符1)
?? ?srand((unsigned long)time(NULL));//种一个随机数种子,埋的雷是随机的
?? ?SetThunder(Mine_board, ROW, COL);//埋雷
?? ?int count = (ROW - 2) * (COL - 2) - NUM;//count为要走的步数 NUM为雷的个数
?? ?while (count)
?? ?{
?? ??? ?system("cls");//清屏
?? ??? ?Showboard(Show_board, ROW, COL);//展示面板
?? ??? ?printf("请输入你的坐标:");
?? ??? ?int x, y;
?? ??? ?scanf_s("%d%d", &x, &y);
?? ??? ?if (x < 1 || x>11 || y < 1 || y>11) {
?? ??? ??? ?printf("输入坐标不在范围内!请重新输入!\n");
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?if (Show_board[x][y] != THUNDER) {//如果该坐标再显示数组内不是初始化的内容说明该位置被用过了
?? ??? ??? ?printf("该地址已经被使用!!!\n");
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?if (Mine_board[x][y] == '1') {
?? ??? ??? ?Showboard(Mine_board, ROW, COL);
?? ??? ??? ?printf("踩雷 GG,游戏结束\n");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?Show_board[x][y] = CountThunder(Mine_board, x, y);//显示数组当前坐标内容更改为周围雷的个数
?? ??? ?count--;
?? ?}
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:19:22  更:2021-08-01 14:21:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 5:43:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码