태어나서 처음으로 만들어본 게임이야..... 게임에 관한 코드는 game : 루프로 가면 됨.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#define size 11
int main(void) {
int x = 0, y = 0;
int r, c;
char key;
srand(time(NULL));
printf("게임을 실행합니다...");
Sleep(1000);
start :
system("cls");
printf("1.게임 실행하기 2.게임 도움말 3.제작자 ");
key = _getch();
switch (key) {
case '1':
goto game;
case '2':
system("cls");
printf("지뢰 찾기 게임입니다 지뢰 탐색기가 상하,좌우,대각선(3X3)크기로 탐색합니다 지뢰는 가장자리에 존재하지 않습니다 지뢰를 피해 생존하십시오");
Sleep(5000);
goto start;
case '3':
system("cls");
printf("");
Sleep(3000);
goto start;
default:
goto start;
}
game :
system("cls");
char a = '*';
int n = 0;
int sum=0;
int map[size][size] = { 0 };
int num[size][size] = { 0 };
for (r = 0;r < size;r++) {
for (c = 0;c < size;c++) {
num[r][c] = -1;
}
}
for (r = 2;r < size - 2;r++) {
for (c = 2;c < size - 2;c++) {
map[r][c] = rand() % 2;
}
}
for (r = 0;r < size-1;r++) {
for (c = 0;c < size-1;c++) {
if ((r == 0) && (c == 0))
printf("0");
else if (r == 0)
printf("%2d", c);
else if (c == 0)
printf("%d", r);
else printf("%2c", a);
}
printf(" ");
}
while (map[x][y] != 1) {
printf("x좌표 y좌표 : ");
scanf("%d %d", &y, &x);
for (int q = y - 1; q < y + 2;q++) {
for (int w = x - 1;w < x + 2; w++) {
sum += map[q][w];
}
}
num[x][y] = sum;
system("cls");
for (r = 0;r < size-1;r++) {
for (c = 0;c < size-1;c++) {
if ((r == 0) && (c == 0))
printf("0");
else if (r == 0)
printf("%2d", c);
else if (c == 0)
printf("%d", r);
else if (num[r][c] >= 0)
printf("%2d", num[r][c]);
else
printf("%2c", a);
}
printf(" ");
}
printf("주변 지뢰 개수 : %d ", sum);
sum = 0;
n++;
}
printf("지뢰에 걸렸습니다 ");
printf("다시하려면 y키를 눌러주세요");
char end = _getch();
if (end == 'y')
goto game;
else
printf(" 실행횟수 : %d ", sum);
return 0;
}
대충 설명하자면 1번키가 눌리면 게임을 실행함.
2차원 배열을 생성해서 가로세로 0~10 사이즈를 만듬.(총11)
지뢰탐색기가 상하좌우대각선으로 총 3*3범위에 지뢰(1값)를 다 더해서 알려줘야 하는데 좌표를 0으로 찍으면 배열[-1]값을 받아들이게 되서 오류가 남.
그래서 2~8 범위까지만 지뢰 생성했음.
출시해도될듯