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++知识库 -> 9.8 扫雷游戏的制作 -> 正文阅读

[C++知识库]9.8 扫雷游戏的制作

继续跟着做一些简单的项目,今天的课只听到用两个数组进行分开存储之后,自己就有了大概的思路,所有的代码都是自己敲的,通过这个小程序掌握了二维数组的使用,函数调用,及正规使用头文件等

#define ?_CRT_SECURE_NO_WARNINGS
#include "game.h"

void play()
{
?? ?//初始化游戏界面
?? ?int board1[9][9];
?? ?char board2[9][9];
?? ?initgame(board1,board2);
?? ?//打印游戏界面?
?? ?printboard(board2,9,9);
?? ?//玩家操作
?? ?while (1)
?? ?{
?? ??? ?int x=player(board1, board2);
?? ??? ?if (x == 0)
?? ??? ??? ?break;
?? ??? ?//检索是否胜利
?? ??? ?for (int i = 0; i < 9; i++)
?? ??? ?{
?? ??? ??? ?for (int j = 0; j < 9; j++)
?? ??? ??? ?{
?? ??? ??? ??? ?if (board1[i][j] == 0)
?? ??? ??? ??? ??? ?goto A;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?printf("您获得胜利\n");
?? ??? ?break;
?? ?A:;
?? ?}
}
int main()
{
?? ?int input = 0;
?? ?srand((unsigned)time(NULL));
?? ?do
?? ?{ ??
?? ??? ?menu();
?? ??? ?scanf("%d", &input);
?? ??? ?switch (input)
?? ??? ?{
?? ??? ?case 1:play();
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?printf("退出成功\n");
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?printf("输入有误请重新输入\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?} while (input);

?? ?
?? ?return 0;
}

#include "game.h"
#define ?_CRT_SECURE_NO_WARNINGS

//打印菜单的函数?
void menu()
{
?? ?printf("*****************************\n");
?? ?printf("********* ? 1.play ?*********\n");
?? ?printf("********* ? 0.exit ?*********\n");
?? ?printf("*****************************\n");
?? ?printf("请选择:>");
}


//初始化游戏
void initgame(int board1[9][9], char board2[9][9])
{
?? ?//雷的放置
?? ?
?? ?int a, b;
?? ?for (int i = 0; i < 9; i++)
?? ?{
?? ??? ?for (int j = 0; j < 9; j++)
?? ??? ?{
?? ??? ??? ?board1[i][j] = 0;?? ?
?? ??? ?}
?? ?}
?? ?for (int x = 0; x < 10; x++)
?? ?{
?? ??? ?a = rand() % 9;
?? ??? ?b = rand() % 9;
?? ??? ?if (board1[a][b] == 1)
?? ??? ?{
?? ??? ??? ?x--;
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?board1[a][b] = 1;

?? ?}
?? ?//游戏界面
?? ?for (int i = 0; i < 9; i++)
?? ?{
?? ??? ?for (int j = 0; j < 9; j++)
?? ??? ?{
?? ??? ??? ?board2[i][j] = '*';
?? ??? ?}
?? ?}


}

//打印游戏界面
void printboard(char board2[9][9],int i,int j)
{

?? ?printf("------------扫雷游戏-------------\n");
?? ?printf("0 1 2 3 4 5 6 7 8 9\n");
?? ?for (int a = 0; a < i; a++)
?? ?{
?? ??? ?printf("%d ", a+1);
?? ??? ?for (int b = 0; b < j; b++)
?? ??? ?{
?? ??? ??? ?printf("%c ", board2[a][b]);
?? ??? ??? ?
?? ??? ?}
?? ??? ?printf("\n");
?? ?}
?? ?
}

//玩家操作
int player(int board1[9][9], char board2[9][9])
{
?? ?//1.玩家选坐标
?? ?//2.判断坐标是否为雷
? ?A:;
?? ?int a=0,b=0,count=0;
?? ?int i;
?? ?printf("请输入坐标\n");
?? ?scanf_s("%d%d", &a,&b);
?? ?if (a > 9 || b > 9||a==0||b==0)
?? ??? ?goto A;
?? ?if (board1[a - 1][b - 1] == 1)
?? ?{
?? ??? ?printf("BOOM!!\n");
?? ??? ?printf("游戏结束\n");
?? ??? ?return 0;
?? ?}
?? ?else
?? ?{
?? ??? ?if (board1[a - 2][b - 2] == 1)
?? ??? ??? ?count++;
?? ??? ?if (board1[a - 2][b - 1]==1)
?? ??? ??? ?count++;
?? ??? ?if (board1[a - 2][b]==1)
?? ??? ??? ?count++;
?? ??? ?if (board1[a - 1][b - 2]==1)
?? ??? ??? ?count++;
?? ??? ?if (board1[a - 1][b]==1)
?? ??? ??? ?count++;
?? ??? ?if (board1[a][b - 2]==1)
?? ??? ??? ?count++;
?? ??? ?if (board1[a][b - 1]==1)
?? ??? ??? ?count++;
?? ??? ?if (board1[a][b]==1)
?? ??? ??? ?count++;
?? ??? ?board1[a - 1][b - 1] = 2;
?? ??? ?board2[a - 1][b - 1] = count+48;
?? ??? ?printboard(board2, 9, 9);
?? ??? ?return 1;
?? ?}
}


//头文件的包含
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


//打印菜单的声明
void menu();

//初始化游戏的声明
void initgame(int board1[9][9],char board2[9][9]);

//打印游戏界面的声明
void printboard(char board2[9][9],int i,int j);

//玩家操作的声明
int player(int board1[9][9], char board2[9][9]);

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:33:43  更:2021-09-09 11:34:39 
 
开发: 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年12日历 -2024/12/28 12:51:50-

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