태어나서 처음으로 만들어본 게임이야..... 게임에 관한 코드는 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 범위까지만 지뢰 생성했음.