C++实现一个扫雷的小游戏

本文介绍了使用C++编程实现的扫雷小游戏,当前版本为0.98,欢迎提出新功能建议。
摘要由CSDN通过智能技术生成

目前的版本是0.98版本,可以提出增加新功能意见哦
代码如下:

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
long long int c,dev,m,k,cnt,d,e,jie=10,z,abc,n,b[1000][1000],a[1000][1000],cc,cd,ce,def;	//c是随机行,k是随机列 
bool flag=0; 
bool check_lei(){
   	//用于游戏停止 
	for(int i=0;i<n;i++){
   
		for(int j=0;j<m;j++){
   
			if(b[i][j]==999||b[i][j]==5000)	def++;
		}
	}
	return (def==abc)?false:true;
}
void check(int d,int e){
   //附近的雷数 
	if(d<0||d>=n||e<0||e>=m){
   
		ce++;
		return;
	}	
	if(a[d][e]==10000){
   
		ce++;
		return;
	}
	if(b[d][e]!=999&&b[d][e]!=5000)	return;
	b[d][e]=a[d][e];
	if(b[d][e]!=0){
   
		for(int i=-1;i<=1;i++){
   
			for(int j=-1;j<=1;j++){
   
				if(d+i<0||d+i>=n||e+i<0||e+i>=m){
   
					ce++;
					continue;
				}
				if(b[d+i][e+i]==5000)	continue;
				if(b[d+i][e+j]!=999)	continue;
				if(a[d+i][e+j]==10000){
   
					ce++;
					continue;
				}
				if(ce<=5){
   
					b[d+i][e+j]=a[d+i][e+j];
					ce++;	
				}
			}	
		}
		return ;	
	}
	if(cd>n/2)	return;
	for(int i=-1;i<=1;i++){
   
		for(int j=-1;j<=1;j++){
   
			check(d+i,e+j);
		}
	}
	cd++;
}
void buZhi(){
   
	system("cls");	//清屏 
	srand(time(NULL));	//时间种子 
	for(int i=0;i<jie;i
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
很抱歉,我是一名语言模型,无法编写代码。但是,我可以给您提供一个C语言扫雷游戏的基本框架,让您可以进行参考和学习。 ``` #include <stdio.h> #include <stdlib.h> #include <time.h> #define ROW 10 //行数 #define COL 10 //列数 #define MINE_NUM 10 //地雷数量 int mine[ROW + 2][COL + 2] = {0}; //地图 int visited[ROW + 2][COL + 2] = {0}; //标记数组 int mine_count = 0; //已经找到的地雷数量 int gameover = 0; //游戏是否结束 //初始化地图 void init_map() { int i, j; //边界设置为-1 for(i = 0; i < ROW + 2; i++) { mine[i][0] = -1; mine[i][COL + 1] = -1; visited[i][0] = 1; visited[i][COL + 1] = 1; } for(j = 0; j < COL + 2; j++) { mine[0][j] = -1; mine[ROW + 1][j] = -1; visited[0][j] = 1; visited[ROW + 1][j] = 1; } //随机放置地雷 srand(time(NULL)); int r, c; for(i = 0; i < MINE_NUM; i++) { r = rand() % ROW + 1; c = rand() % COL + 1; if(mine[r][c] == 9) { i--; continue; } mine[r][c] = 9; mine_count++; } } //计算周围地雷数量 int count_mine(int row, int col) { int count = 0; int i, j; for(i = row - 1; i <= row + 1; i++) { for(j = col - 1; j <= col + 1; j++) { if(mine[i][j] == 9) { count++; } } } return count; } //显示地图 void display_map() { int i, j; for(i = 1; i <= ROW; i++) { for(j = 1; j <= COL; j++) { if(visited[i][j]) { if(mine[i][j] == 9) { printf("* "); } else { printf("%d ", count_mine(i, j)); } } else { printf("# "); } } printf("\n"); } } //游戏结束 void game_over() { printf("Game Over! You have found %d mines.\n", mine_count); gameover = 1; } //扫雷 void sweep_mine(int row, int col) { if(mine[row][col] == 9) { game_over(); return; } visited[row][col] = 1; if(count_mine(row, col) == 0) { int i, j; for(i = row - 1; i <= row + 1; i++) { for(j = col - 1; j <= col + 1; j++) { if(!visited[i][j]) { sweep_mine(i, j); } } } } } int main() { init_map(); while(!gameover) { display_map(); int row, col; printf("Please input the row and column number you want to sweep:\n"); scanf("%d %d", &row, &col); if(row < 1 || row > ROW || col < 1 || col > COL) { printf("Invalid input!\n"); continue; } if(visited[row][col]) { printf("This point has been swept!\n"); continue; } sweep_mine(row, col); if(mine_count == MINE_NUM) { printf("Congratulations! You have found all the mines!\n"); gameover = 1; } } return 0; } ``` 以上代码一个简单的扫雷游戏,可能还有一些不完善的地方,您可以根据自己的需要进行修改和完善。希望对您有所帮助!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值