大一萌新开始维护自己的csdn了

学了一个多月c语言了

自己写了一个扫雷小游戏(花了3h左右)

非常的不规范

但是还是放出来捏

(用vs2022写的)

这是yanshu.c

#define _CRT_SECURE_NO_WARNINGS
#include"hahaha.h"

void Crearr(char board[ROWS][ROWS],int x,int y)
{
	int j = 0;
	int k = 0;
	for(j=0;j<ROWS;j++)
	{
		for(k=0;k<ROWS;k++)
		{
			board[j][k] = 'O';
		}
	}
}
void Boom(char map[ROWS][ROWS], char boom[ROWS][ROWS], int y)
{
	srand((unsigned int)time(NULL));
	if (y >= (ROW * ROW))
		return 0;
	int z = y;
	for(z=y;z<=(ROW*ROW)&&z>0;z--)
	{
		int c = rand() % ROW + 1;
		int d = rand() % ROW + 1;
		if (boom[c][d]=='O')
		{
			boom[c][d] = '*';
		}
		else
		{
			z++;
		}

	}

	int e = ROW;
	int f = ROW;
	for (e=ROW; e > 0; e--)
	{
		for (f=ROW; f > 0; f--)
		{
			if(boom[e][f]=='*')
			{
				map[e-1][f-1] = map[e-1][f-1] + 1;
				map[e-1][f] = map[e-1][f] + 1;
				map[e-1][f+1] = map[e-1][f+1] + 1;
				map[e][f+1] = map[e][f+1] + 1;
				map[e][f-1] = map[e][f-1] + 1;
				map[e+1][f+1] = map[e+1][f+1] + 1;
				map[e+1][f] = map[e+1][f] + 1;
				map[e+1][f-1] = map[e+1][f-1] + 1;
			}
		}
	}
	e = ROW;
	f = ROW;
	for(e=ROW;e>0;e--)
	{
		for(f=ROW;f>0;f--)
		{
			if (map[e][f] != 'O')
			{
				map[e][f] = map[e][f] - 'O' + '0';
			}
		}
	}
}
void Det2(char hh1[ROWS][ROWS], char hh2[ROWS][ROWS], char hh3[ROWS][ROWS], int h4, int h5)
{
	hh2[h4][h5] = '1';
	if (h4 < 1 || h4 > ROW || h5 < 1 || h5 > ROW)
	{
		return;
	}
		hh1[h4][h5] = ' ';
		hh3[h4][h5] = ' ';
		if (hh1[h4 + 1][h5 + 1] == 'O')
		{
			hh1[h4 + 1][h5 + 1] = ' ';
			hh3[h4 + 1][h5 + 1] = hh1[h4 + 1][h5 + 1];
		}
		else
			hh3[h4 + 1][h5 + 1] = hh1[h4 + 1][h5 + 1];
		if (hh1[h4 + 1][h5] == 'O')
		{
			hh1[h4 + 1][h5] = ' ';
			hh3[h4 + 1][h5] = hh1[h4 + 1][h5];
		}
		else
			hh3[h4 + 1][h5] = hh1[h4 + 1][h5];
		if (hh1[h4 + 1][h5 - 1] == 'O')
		{
			hh1[h4 + 1][h5 - 1] = ' ';
			hh3[h4 + 1][h5 - 1] = hh1[h4 + 1][h5 - 1];
		}
		else
			hh3[h4 + 1][h5 - 1] = hh1[h4 + 1][h5 - 1];
		if (hh1[h4][h5 + 1] == 'O')
		{
			hh1[h4][h5 + 1] = ' ';
			hh3[h4][h5 + 1] = hh1[h4][h5 + 1];
		}
		else 		
			hh3[h4][h5 + 1] = hh1[h4][h5 + 1];
		if (hh1[h4][h5 - 1] == 'O')
		{
			hh1[h4][h5 - 1] = ' ';
			hh3[h4][h5 - 1] = hh1[h4][h5 - 1];
		}
		else
			hh3[h4][h5 - 1] = hh1[h4][h5 - 1];
		if (hh1[h4 - 1][h5 + 1] == 'O')
		{
			hh1[h4 - 1][h5 + 1] = ' ';
			hh3[h4 - 1][h5 + 1] = hh1[h4 - 1][h5 + 1];
		}
		else
			hh3[h4 - 1][h5 + 1] = hh1[h4 - 1][h5 + 1];
		if (hh1[h4 - 1][h5] == 'O')
		{
			hh1[h4 - 1][h5] = ' ';
			hh3[h4 - 1][h5] = hh1[h4 - 1][h5];
		}
		else
			hh3[h4 - 1][h5] = hh1[h4 - 1][h5];
		if (hh1[h4 - 1][h5 - 1] == 'O')
		{
			hh1[h4 - 1][h5 - 1] = ' ';
			hh3[h4 - 1][h5 - 1] = hh1[h4 - 1][h5 - 1];
		}
		else
			hh3[h4 - 1][h5 - 1] = hh1[h4 - 1][h5 - 1];

	if (hh1[h4 + 1][h5 + 1] == ' ' &&  hh2[h4 + 1][h5 + 1] != '1' && hh2[h4+1][h5 + 1] != '*')
	    Det2(hh1, hh2, hh3, h4 + 1, h5 + 1);
	if (hh1[h4][h5+1] == ' ' && hh2[h4 ][h5 + 1] != '1' && hh2[h4][h5 + 1] != '*')
	    Det2(hh1, hh2, hh3, h4, h5+1);
	if (hh1[h4-1][h5+1] == ' ' &&  hh2[h4 - 1][h5 + 1] != '1' && hh2[h4-1][h5 + 1] != '*')
		Det2(hh1, hh2, hh3, h4-1, h5+1);
	if (hh1[h4+1][h5] == ' ' &&  hh2[h4 +1][h5] != '1' && hh2[h4+1][h5] != '*')
		Det2(hh1, hh2, hh3, h4+1, h5);
	if (hh1[h4-1][h5] == ' ' &&  hh2[h4-1 ][h5] != '1' && hh2[h4-1][h5] != '*')
		Det2(hh1, hh2, hh3, h4-1, h5);
	if (hh1[h4+1][h5-1] == ' ' && hh2[h4 + 1][h5 - 1] != '1' && hh2[h4+1][h5 - 1] != '*')
		Det2(hh1, hh2, hh3, h4+1, h5-1);
	if (hh1[h4][h5-1] == ' '  && hh2[h4 ][h5 - 1] != '1' && hh2[h4][h5 - 1] != '*')
		Det2(hh1, hh2, hh3, h4, h5-1);
	if (hh1[h4-1][h5-1] == ' ' && hh2[h4 - 1][h5 - 1] != '1' && hh2[h4-1][h5 - 1] != '*')
		Det2(hh1, hh2, hh3, h4-1, h5-1);
}
int Det(char hh1[ROWS][ROWS], char hh2[ROWS][ROWS], char hh3[ROWS][ROWS], int h4, int h5)
{
	if (hh2[h4][h5] == '*')
	{
		return 1;
	}
	else
	{
		if (hh1[h4][h5] == 'O')
		{
			hh1[h4][h5] = ' ';
			Det2(hh1, hh2, hh3, h4, h5);
			return 2;
		}
		else
			hh3[h4][h5] = hh1[h4][h5];
		return 2;
	}
}

int win(char d[ROWS][ROWS])
{
	int j, k;
	int count = 0;
	for (j = 1; j <= ROW; j++)
	{
		for (k = 1; k <= ROW; k++)
		{
			if (d[j][k] == 'O')
				count++;
		}
	}
	return count;
}

这是main.c

#define _CRT_SECURE_NO_WARNINGS
#include"hahaha.h"


void game()
{
	system("cls");
	int b = 0;
	printf("输入炸弹数\n");
	scanf("%d", &b);
	system("cls");

	char map[ROWS][ROWS] = {0};
	char boom[ROWS][ROWS] = {0};
	char kong[ROWS][ROWS] = { 0 };
	Crearr(map,ROWS,ROWS);
	Crearr(boom, ROWS, ROWS);
	Crearr(kong, ROWS, ROWS);
	Boom(map,boom, b);
	int j = 0;
    int k = 0;



	while (1)
	{
		system("cls");
		printf("   1 2 3 4 5 6 7 8 9 10\n");
		for (j = 1; j <= ROW; j++)
		{
			printf("%2d ", j);
			for (k = 1; k <= ROW; k++)
			{
				printf("%c ", kong[j][k]);
			}
			printf("\n");
		}
		int i = 0;
		int o = 0;
		printf("请输入坐标(行,列):");
		scanf("%d%d", &i, &o);
		if (i <= ROW && i > 0 && o <= ROW && o > 0)
		{
			int p = Det(map, boom, kong, i, o);
			switch(p)
			{
			case 1:
			{
				system("cls");
				printf("你被炸死了\n");
				for (j = 1; j <= ROW; j++)
				{
					for (k = 1; k <= ROW; k++)
					{
						printf("%c ", boom[j][k]);
					}
					printf("\n");
				}
				return 0;
			}
			case 2:
			{
				int y = win(kong);
				if(y==b)
				{
					system("cls");
					printf("你赢了!!");
					return 0;
				}
				else
				    break;
			}

			}
		}
		else
		{
			printf("坐标输错了");
			break;
		}
	}



	
}




int main()
{
	int a=0;
	while(1)
	{
		printf("1开始0结束\n");
		scanf("%d", &a);
		getchar();
		if (a == 1)
		{
			game();
			printf("是否再来一局\n");
		}
		else if (a == 0)
		{
			return 0;
		}
		else
		{
			return 0;
		}
	}

}

这是头文件hahaha.h

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

#define ROW 10
#define ROWS 12

void Crearr(char board[ROWS][ROWS],int x,int y);
void Boom(char map[ROWS][ROWS],char boom[ROWS][ROWS], int y);
int win(char d[ROWS][ROWS]);

问题非常多比如乱命名、随便的逻辑、没注释等。

但对于我这个萌新来讲已经很不错啦

总之就是写出自己的第一篇博客

等我未来变nb了继续发!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值