温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

利用C语言如何编写一个扫雷小游戏

发布时间:2021-02-07 18:32:25 来源:亿速云 阅读:147 作者:Leah 栏目:开发技术

本篇文章给大家分享的是有关利用C语言如何编写一个扫雷小游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

game1.h中的代码如下:

里边放置的是相关的函数声明

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

#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 board[ROWS][COLS],int row,int col);
void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

saolei.c中的代码如下:

这里主要是实现菜单的打印以及棋盘的打印

#define _CRT_SECURE_NO_WARNINGS 1
#include"game1.h"

void menu()
{
 printf("**************************\n");
 printf("******* 1.play *********\n");
 printf("******* 0.exit *********\n");
 printf("**************************\n");
}

void game1()
{
 //雷的信息存储
 //布置好雷的信息
 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 saolei()
{
 int input=0;
 srand((unsigned int)time(NULL));
 do
 {
 menu();
 printf("请选择:");
 scanf("%d",&input);
 switch(input)
 {
 case 1:
 game1();
 break;
 case 0:
 printf("退出游戏\n");
 break;
 default:
 printf("选择错误,请重新选择!\n");
 break;
 }
 }while(input);
}

int main()
{
 saolei();
 return 0;
}

game1.c中的代码如下:

主要是玩家玩游戏排雷的整个游戏过程的相关函数操作。

#define _CRT_SECURE_NO_WARNINGS 1
#include"game1.h"
#include<stdio.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;
 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");
 }
}

void SetMine(char board[ROWS][COLS],int row,int col)
{
 int count=EASY_COUNT;
 while(count)
 {
 int x=rand()%row+1;
 int y=rand()%col+1;
 if(board[x][y]=='0')
 {
 board[x][y]='1';
 count--;
 }
 }
}

int get_mine_count(char mine[ROWS][COLS],int x,int y)
{
  return mine[x-1][y]+
 mine[x-1][y-1]+
 mine[x][y-1]+
 mine[x+1][y-1]+
 mine[x+1][y]+
 mine[x+1][y+1]+
 mine[x][y+1]+
 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("很遗憾,你被炸死了\n");
 DisplayBoard(mine,row,col);
 break;
 }
 else
 {
 int count=get_mine_count(mine,x,y);
 show[x][y]=count+'0';
 DisplayBoard(show,row,col);
 win++;
 }
  }
 else
 {
  printf("输入坐标非法,请重新输入!");
  }
 }
 if(win==win<row*col-EASY_COUNT)
 {
 printf("恭喜你,排雷成功!\n");
 DisplayBoard(mine,row,col);
 }
}

以上就是利用C语言如何编写一个扫雷小游戏,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI