学了一个多月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了继续发!