当前位置: 首页 > news >正文

百度博客网站模板国外域名注册

百度博客网站模板,国外域名注册,广西建设监理协会官方网站,好的用户体验网站 学校文章目录 一、游戏规则二、 代码逻辑三、游戏实现1. 游戏菜单设计2.设计雷区并随机布置雷(1) 设置雷区(2) 布置雷 3.排查雷 四、源码 一、游戏规则 1. 在9*9的小格子中,任意选取一个坐标(格子),选择后发现,如果没点中雷…

文章目录

  • 一、游戏规则
  • 二、 代码逻辑
  • 三、游戏实现
    • 1. 游戏菜单设计
    • 2.设计雷区并随机布置雷
      • (1) 设置雷区
      • (2) 布置雷
    • 3.排查雷
  • 四、源码

一、游戏规则

1. 在9*9的小格子中,任意选取一个坐标(格子),选择后发现,如果没点中雷的坐标,会显示数字(表示周围有几个雷),如果点中雷,游戏结束

排查雷

  • 如果这个位置不是雷,就计算这个位置的周围8个坐标有几个雷,并显示雷的个数
  • 如果是 雷 ,就炸死了,游戏结束
  • 如果把雷都找出来了,胜利,游戏结束
  • 链 接:网页版扫雷

扫雷01

2.选择后如图

扫雷02

3.点中雷的情况

扫雷03

二、 代码逻辑

  1. 游戏菜单设计
  2. 设计雷区并随机布置雷
  3. 排查雷

三、游戏实现

1. 游戏菜单设计

//test.c
#include "game.h"
void game() 
{printf("扫雷\n");
}
void menu() 
{printf("************************\n");printf("******    扫雷   *******\n");printf("******  1. play  *******\n");printf("******  0. exit  *******\n");printf("************************\n");
}
int main() 
{int input = 0;do {menu();printf("请选择>:");scanf("%d",&input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");break;}} while (input);return 0;
}

menu

2.设计雷区并随机布置雷

(1) 设置雷区

设置一个9*9的二维数组,0表示没有雷,1表示雷

04

但是为了避免显示给玩家看的数字 1(雷的个数)与设置雷的 1 重合,所以选用 * 进行埋雷

因为扫雷 是扫周围的8个区域,会遇到扫越界问题

05
故变成11*11的二维数组
在这里插入图片描述
设置棋盘

//test.c 中的 game()
void game() 
{char mine[ROWS][COLS] = {0};//放置雷的数组char show[ROWS][COLS] = {0};//显示的数组InitBoard(mine,ROWS,COLS,'0');DisplayBoard(mine, ROW, COL);InitBoard(show,ROWS,COLS,'*');DisplayBoard(show, ROW, COL);}
//game.c
#include "game.h"
void InitBoard(char board[ROWS][COLS], int rows, int cols,char set) 
{int i = 0;int j = 0;for (i = 0; i < rows;i++){for (j = 0; j < cols;j++){board[i][j] = set;}}
}void DisplayBoard(char board[ROWS][COLS], int row, int col) 
{int i = 0;int j = 0;printf("--------扫雷---------\n");for (i = 0; i <= col;i++) {printf("%d ",i);//打印列标}printf("\n");for (i = 1; i <= row; i++) {printf("%d ",i);//打印行标for (j = 1; j <= col;j++){printf("%c ",board[i][j]);}printf("\n");}printf("--------扫雷---------\n");}
//game.h
#include <stdio.h>#define ROW 9
#define COL 9#define ROWS ROW+2
#define COLS COL+2void InitBoard(char board[ROWS][COLS],int rows,int cols,char set);
void DisplayBoard(char board[ROWS][COLS], int row, int col);

在这里插入图片描述

(2) 布置雷

在这里随机生成雷
字符0表示不是雷。字符1表示是雷

//game.c
void SetMine(char mine[ROWS][COLS], int row, int col) 
{int count = Easy_count;while (count) {int x = rand() % row + 1;//生成坐标1-9int y = rand() % col + 1;if (mine[x][y] =='0')	//避免在同一个地方布置雷{mine[x][y] = '1';count--;}		}
}

06

3.排查雷

输入排查雷的坐标,如果是雷则GAME OVER !,则如果不是雷,则显示该坐标周围有多少个雷

//game.c
//排查雷
int GetCountMine(char mine[ROWS][COLS],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');
}
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) 
{int x = 0;int y = 0;int win = 0;while (win < (row * col - Easy_count))//要排不是雷的区域个数{printf("请输入要排查的坐标:>");scanf("%d %d", &x, &y);if ( x >= 1 && x <= row && y >= 1 && y <= col) {//选中雷if (mine[x][y] =='1') {printf("GAME OVER!!!,被炸死了\n");DisplayBoard(mine,ROW,COL);break;}else {//不是雷,统计周围有多少雷int c = GetCountMine(mine,x,y);show[x][y] = c + '0';DisplayBoard(show,ROW,COL);win++;}}else {printf("坐标输入错误,重新输入\n");}}if (win == ((row * col)- Easy_count)) //需要排的区域数{printf("恭喜您,排雷成功!\n");}
}

排雷的周围坐标

x-1, y - 1x-1,yx-1,y+1
x, y - 1x,yx,y+1
x+1,y-1x+1,yx+1,y+1

排完的情况(这里设置80个雷(用于测试排雷成功),所以只有一个安全)
07

排到雷,游戏结束
在这里插入图片描述

四、源码

game.h

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define ROW 9
#define COL 9#define ROWS ROW+2
#define COLS COL+2#define Easy_count 10//初始化
void InitBoard(char board[ROWS][COLS],int rows,int cols,char set);
//显示
void DisplayBoard(char board[ROWS][COLS], int row, int col);
//布置雷
void SetMine(char mine[ROWS][COLS],int row,int col);
//排查雷
void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

test.c

#include "game.h"
void game() 
{char mine[ROWS][COLS] = {0};//放置雷的数组char show[ROWS][COLS] = {0};//显示的数组InitBoard(mine,ROWS,COLS,'0');InitBoard(show,ROWS,COLS,'*');	DisplayBoard(show, ROW, COL);//布置雷SetMine(mine,ROW,COL);//排查雷FindMine(mine,show,ROW,COL);}
void menu() 
{printf("************************\n");printf("******    扫雷   *******\n");printf("******  1. play  *******\n");printf("******  0. exit  *******\n");printf("************************\n");
}
int main() 
{int input = 0;srand((unsigned int )time(NULL));//设置随机数种子do {menu();printf("请选择>:");scanf("%d",&input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");break;		}} while (input);return 0;
}

game.c


#include "game.h"
//初始化棋盘
void InitBoard(char board[ROWS][COLS], int rows, int cols,char set) 
{int i = 0;int j = 0;for (i = 0; i < rows;i++){for (j = 0; j < cols;j++){board[i][j] = set;}}
}
//打印棋盘
void DisplayBoard(char board[ROWS][COLS], int row, int col) 
{int i = 0;int j = 0;printf("--------扫雷---------\n");for (i = 0; i <= col;i++) {printf("%d ",i);}printf("\n");for (i = 1; i <= row; i++) {printf("%d ",i);for (j = 1; j <= col;j++){printf("%c ",board[i][j]);}printf("\n");}printf("--------扫雷---------\n");}
//布置雷
void SetMine(char mine[ROWS][COLS], int row, int col) 
{int count = Easy_count;while (count) {int x = rand() % row + 1;//生成坐标1-9int y = rand() % col + 1;if (mine[x][y] =='0')	//避免在同一个地方布置雷{mine[x][y] = '1';count--;}}
}
//排查雷
int GetCountMine(char mine[ROWS][COLS],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');
}
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) 
{int x = 0;int y = 0;int win = 0;while (win < (row * col - Easy_count))//要排不是雷的区域个数{printf("请输入要排查的坐标:>");scanf("%d %d", &x, &y);if ( x >= 1 && x <= row && y >= 1 && y <= col) {//选中雷if (mine[x][y] =='1') {printf("GAME OVER!!!,被炸死了\n");DisplayBoard(mine,ROW,COL);break;}else {//不是雷,统计周围有多少雷int c = GetCountMine(mine,x,y);show[x][y] = c + '0';DisplayBoard(show,ROW,COL);win++;}}else {printf("坐标输入错误,重新输入\n");}}if (win == ((row * col)- Easy_count)) //需要排的区域数{printf("恭喜您,排雷成功!\n");}
}
http://www.yayakq.cn/news/329847/

相关文章:

  • 刷粉网站开发人际网络营销三商法
  • 邯郸怎么做网站官方网站手机
  • 免费做长图网站简述微信营销的技巧
  • 邢台网站设计哪家专业色块网站
  • 装修效果图软件app哪个好网站优化建设工作总结范文
  • 做影视网站代理犯法吗微信小程序ppt模板
  • 网络推广网站程序个人淘客网站备案
  • asp网站 手机登录wordpress 自动发货
  • 网站建设做网站wordpress主题文章列表
  • 网站单页发布网络架构有几层
  • 建外贸网站的南京网站建设 w
  • 马云做网站最早营销模式100个经典案例
  • 承德网站软件技术专升本对口专业
  • 做代刷主站网站找人做网站网站
  • 廊坊网站建设维护昭通网站建设 hardlcp
  • 负面信息网站长沙债务优化公司
  • 网站开发加33865401qq的seo综合查询
  • 企业网站建设与管理作业怎么打广告吸引客户
  • 电商网站制作专门做旅游的网站
  • 商家线上推广的平台都有哪些模板网站有利于做seo吗
  • 广东购物网站建设报价做网站 然后百度推广
  • 个人免费推广网站找人做网站需求怎么写
  • 兰州做网站客户辽宁建设工程信息网为什么打不开
  • 花垣做网站怎么制作公众号模板
  • 论坛网站开发的意义网站建设会计分录怎么写
  • 有电脑网站怎么做手机网站金蝶财务软件一般多少钱
  • 网页设计个人网站心得体会免费发布信息的平台
  • 企业网站优化17电影网页设计模板图片
  • 做网站的公司合肥苏州网站设计公司济南兴田德润厉害吗
  • wordpress 食谱网站炫酷的网站