C 언어 지뢰 찾기 | 김유진(학부 1학년) 학생의 C 텀 프로젝트 – 지뢰 찾기 게임 발표 동영상 69 개의 자세한 답변

당신은 주제를 찾고 있습니까 “c 언어 지뢰 찾기 – 김유진(학부 1학년) 학생의 C 텀 프로젝트 – 지뢰 찾기 게임 발표 동영상“? 다음 카테고리의 웹사이트 th.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://th.taphoamini.com/wiki. 바로 아래에서 답을 찾을 수 있습니다. 작성자 대구가톨릭대학교 SW중심대학사업단 이(가) 작성한 기사에는 조회수 319회 및 좋아요 10개 개의 좋아요가 있습니다.

Table of Contents

c 언어 지뢰 찾기 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 김유진(학부 1학년) 학생의 C 텀 프로젝트 – 지뢰 찾기 게임 발표 동영상 – c 언어 지뢰 찾기 주제에 대한 세부정보를 참조하세요

2020학년도 2학기 C프로그래밍 교과목에서 수행한 지뢰 찾기 게임 프로젝트 발표 동영상입니다.
http://itgit.cu.ac.kr/yoy6348/mine_search

소프트웨어융합대학 http://software.cu.ac.kr​
SW중심대학사업단 http://sw.cu.ac.kr​
SW중심대학사업단 밴드 https://band.us/@dcusw
DCU 개방형 온라인 SW 교육 플랫폼 https://swmooc.cu.ac.kr
대구가톨릭대학교 Git http://itgit.cu.ac.kr

c 언어 지뢰 찾기 주제에 대한 자세한 내용은 여기를 참조하세요.

[소스공유] C언어로 만든 지뢰찾기

[소스공유] C언어로 만든 지뢰찾기. 인생마린 2017. 5. 24. 20:02. 반응형. 제가 대학교 1학년때 만들었던 지뢰찾기네요~ 기억이 새록새록.

+ 더 읽기

Source: marinelifeirony.tistory.com

Date Published: 2/9/2021

View: 8400

[C언어] C언어 코딩도장 Unit 38 지뢰찾기 문제

이번 포스팅은 ‘C언어 코딩도장’의 에 나와있는 지뢰찾기 문제의 답입니다. 문제. 표준 입력으로 행렬의 크기 m, n과 …

+ 여기에 표시

Source: jeeyune.github.io

Date Published: 9/5/2021

View: 1032

[소스코드 : C언어] 26.지뢰 찾기 게임 – 네이버 블로그

[소스코드 : C언어] 26.지뢰 찾기 게임 … 지뢰 찾기 게임을 만들어 보겠습니다. … 지뢰의 위치를 임의의 x, y 좌표에 지뢰 개수만큼 설정.

+ 여기에 보기

Source: m.blog.naver.com

Date Published: 7/27/2022

View: 460

지뢰찾기 – 코딩도장

지뢰찾기 게임은 M x N 매트릭스에 위치해 있는 지뢰를 찾는 게임이다. M x N 매트릭스 상의 격자(square)는 … C언어 입니다. 기본적으로 배열의 원소를 기준으로 …

+ 여기에 자세히 보기

Source: codingdojang.com

Date Published: 12/23/2022

View: 2649

12] C언어 문제 풀이 #4 – 소프트웨어_끄적임 – Tistory

이번시간에는 2차원 배열을 보다 쉽게 이해할 수 있는 문제를 가져왔습니다. | C언어 문제. 이번 문제는. 9×9 크기의 지뢰찾기 게임을 만드는 것입니다 …

+ 여기에 보기

Source: swdoodle.tistory.com

Date Published: 6/19/2022

View: 3449

[c언어] 코딩도장 38.8 지뢰찾기 문제 풀이

[c언어] 코딩도장 38.8 지뢰찾기 문제 풀이. 곽쥬 2021. 6. 21. 22:32. 320×100. 오늘은 코딩도장 38.8 심사문제 풀이를 해보겠습니다. <문제>표준 입력으로 행렬의 …

+ 여기에 보기

Source: jicoding.tistory.com

Date Published: 12/28/2021

View: 6234

소스 공개] C언어로 구현한 CUI 지뢰 찾기 게임(퍼져나가는 0 …

소스 공개] C언어로 구현한 CUI 지뢰 찾기 게임(퍼져나가는 0 기능 포함). ka373 2019. 9. 9. 08:12. 제작한 코드는 깃허브에 올려 두었다:.

+ 여기를 클릭

Source: ka373.tistory.com

Date Published: 1/29/2022

View: 5016

(C/C++) 폭탄게임(지뢰찾기) 구현해보기! – 혀래이의 개발이야기

C언어. (C/C++) 폭탄게임(지뢰찾기) 구현해보기! 혀래이 …

+ 여기에 더 보기

Source: h-coding.tistory.com

Date Published: 4/15/2021

View: 4950

[C] 간단한 지뢰찾기(지뢰의 개수 출력) – 조이의 개발새발 블로그

[C] 간단한 지뢰찾기(지뢰의 개수 출력). yulzzang 2020. 7. 17. 20:50. 입력 : 지뢰는 문자 *로 하고 일반 셀은 #로 입력. 출력 : 지뢰가 설치되어 있지 않은 셀 위치 …

+ 여기에 보기

Source: devyul.tistory.com

Date Published: 7/26/2022

View: 5262

주제와 관련된 이미지 c 언어 지뢰 찾기

주제와 관련된 더 많은 사진을 참조하십시오 김유진(학부 1학년) 학생의 C 텀 프로젝트 – 지뢰 찾기 게임 발표 동영상. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

김유진(학부 1학년) 학생의 C 텀 프로젝트 - 지뢰 찾기 게임 발표 동영상
김유진(학부 1학년) 학생의 C 텀 프로젝트 – 지뢰 찾기 게임 발표 동영상

주제에 대한 기사 평가 c 언어 지뢰 찾기

  • Author: 대구가톨릭대학교 SW중심대학사업단
  • Views: 조회수 319회
  • Likes: 좋아요 10개
  • Date Published: 2021. 1. 7.
  • Video Url link: https://www.youtube.com/watch?v=dY1tHN0VPCw

[소스공유] C언어로 만든 지뢰찾기

반응형

제가 대학교 1학년때 만들었던 지뢰찾기네요~ 기억이 새록새록

그때 이거만들고 엄청 좋아했었는데 ㅎㅎ

복붙 no! 직접써가며 코드를 이해해보아요~ 실력이 금방늘꺼에요

실행결과물보기

접기

접기

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 #include < stdio.h > #include < stdlib.h > #include < time.h > #include < Windows.h > void draw( int a[ 30 ][ 30 ]) { for ( int i = 0 ; i < 30 ; i + + ) { for ( int j = 0 ; j < 30 ; j + + ) { if (a[i][j] = = 0 ) //아직안열림 printf ( "■" ); else if (a[i][j] = = 1 ) //지뢰임 printf ( "※" ); else if (a[i][j] = = 2 ) //맞음 printf ( "●" ); } printf ( " " ); } } int main() { int map[ 30 ][ 30 ]; int hide[ 30 ][ 30 ]; srand(( unsigned )time( NULL )); int a, b, c, d, k; for ( int i = 0 ; i < 30 ; i + + ) //배열 모든값 0으로 해줌 { for ( int j = 0 ; j < 30 ; j + + ) { map[i][j] = 0 ; hide[i][j] = 0 ; } } printf ( "생성할 지뢰개수를 입력해주세요(30x30) " ); scanf_s( "%d" , & k); for ( int i = 0 ; i < k; i + + ) //지뢰생성 { while ( 1 ) { a = rand() % 30 ; b = rand() % 30 ; if (map[a][b] = = 1 ) ; else { map[a][b] = 1 ; break ; } } map[a][b] = 1 ; } while ( 1 ) { draw(hide); printf ( "x좌표입력: " ); scanf_s( "%d" , & c); printf ( "y좌표입력: " ); scanf_s( "%d" , & d); c - - ; d - - ; if (c > = 30 | | d > = 30 | | c < 0 | | d < 0 ) { printf ( "범위안의 숫자를입력해주세요 " ); Sleep( 1000 ); } else if (map[c][d] = = 1 ) { hide[c][d] = 1 ; system( "cls" ); draw(hide); printf ( "꽝입니다~ㅠㅠ " ); Sleep( 2000 ); break ; } else if (hide[c][d] = = 2 ) { printf ( "이미 방문했습니다^^ " ); } else if (map[c][d] = = 0 ) { printf ( "맞았습니다~^^ " ); hide[c][d] = 2 ; } Sleep( 1000 ); system( "cls" ); } printf ( "지뢰위치 " ); draw(map); //게임 끝난후 지뢰위치 보여줌 } 반응형

[C언어] C언어 코딩도장 Unit 38 지뢰찾기 문제

#define _CRT_SECURE_NO_WARNINGS #include #include #include int main (){ int m , n ; int mine_counter = 0 ; // 주변 지뢰 카운터 int i , j ; scanf ( “%d %d” , & m , & n ); // 행렬의 크기 입력 char ** minesweeper = malloc ( sizeof ( char * ) * m ); // 행렬의 세로(가로줄) 할당 for ( i = 0 ; i < m ; i ++ ){ // 세로 크기만큼 반복 minesweeper [ i ] = malloc ( sizeof ( char ) * ( n + 1 )); // 가로 크기만큼 반복 memset ( minesweeper [ i ], 0 , sizeof ( char ) * ( n + 1 )); // 각 요소를 0으로 초기화 } for ( i = 0 ; i < m ; i ++ ){ // 문자열 입력 scanf ( "%s" , minesweeper [ i ]); } for ( i = 0 ; i < m ; i ++ ){ // 배열의 요소를 검색 후 '*' 와 같으면 넘어감 for ( j = 0 ; j < n ; j ++ ){ if ( minesweeper [ i ][ j ] == '*' ){ printf ( "%c" , minesweeper [ i ][ j ]); continue ; } else { // '*'와 같지 않으면 현재 위치 주변 8개 for ( int y = i - 1 ; y <= i + 1 ; y ++ ){ // (왼쪽 위 대각선, 위, 오른쪽 위 대각선, for ( int x = j - 1 ; x <= j + 1 ; x ++ ){ // 왼쪽, 오른쪽 if ( y < 0 || x < 0 || y >= m || x >= n ) continue ; // 왼쪽 아래 대각선, 아래, 오른쪽 아래 대각선) else if ( minesweeper [ y ][ x ] == ‘*’ ) mine_counter += 1 ; // 범위를 벗어나면 넘어가고, 검색했을때 ‘*’와 같다면 mine_counter에 1씩 추가 } } minesweeper [ i ][ j ] = mine_counter ; // 해당 위치에 지뢰 갯수 표시 후 mine_counter는 0으로 초기화 printf ( “%d” , minesweeper [ i ][ j ]); mine_counter = 0 ; } } printf ( ”

” ); } for ( int i = 0 ; i < m ; i ++ ){ // 할당한 메모리 해제 free ( minesweeper [ i ]); } free ( minesweeper ); return 0 ; }

[소스코드 : C언어] 26.지뢰 찾기 게임

오늘은 오랜 역사를 가진,

그리고 윈도우의 초기 버전부터 기본 설치되어 있던

지뢰 찾기 게임을 만들어 보겠습니다.

두 개의 구조체를 구성하였는데

Node 구조체는

BOOL mine; // 지뢰

BOOL strip; // 블록 제거

BOOL flag; // 깃발

BOOL wall; // 벽면

int mineCnt; // 주변 지뢰 개수

APoint 구조체는

int x; // 플레이어의 x 좌표

int y; // 플레이어의 y 좌표

게임 시작에 앞서 난이도를 선택할 수 있습니다.

벽면 포함

초급은 10 x 10 에 지뢰 10개

중급은 15 x 15 에 지뢰 30개

고급은 20 x 20 에 지뢰 80개

초기 맵 구성은 난이도 선택에 따라 맵 크기만큼

각 블록에 대해 Node의 구성요소들을 0으로 세팅하고,

벽면에 대해서는 wall 요소를 1로 세팅.

그리고, 지뢰의 개수를 난이도에 따라 세팅하고,

지뢰의 위치를 임의의 x, y 좌표에 지뢰 개수만큼 설정.

이후, 개별 블록에 대해 자신의 블록 주변의 지뢰 개수를 체크 후 설정.

모든 설정을 마친 후 게임이 시작되면

루프를 돌며 키 입력을 기다립니다.

———————————————————-

여기서 주의할 점은

맵 구성을 위한 배열 gameMap의 x좌표는 상하, y좌표는 좌우.

반면, 플레이어의 x좌표는 좌우, y좌표는 상하.

———————————————————-

좌우상하 키 입력이 있으면 해당 방향으로 이동을 하고

f 혹은 F 키가 입력되면 해당 블록의 flag 를 1 혹은 0으로 변경.

그리고 resultFunc() 함수를 통해

벽을 제외한 블록 개수와 총 지뢰 개수가 같을 경우 성공(1)을 리턴.

그렇지 않을 경우 0을 리턴.

스페이스 바를 입력할 경우 블록을 제거하면서 지뢰이면

블록의 strip 요소를 모두 1로 바꾸고 실패 종료.

지뢰가 아니면,

재귀 함수 mineRecursive()를 통해 블록을 제거하는 작업을 하게 됩니다.

벽이거나 블록이 제거된 상태인 경우 그냥 리턴.

주변 지뢰 개수를 가지고 있는 블록인 경우에는 블록 제거 후 리턴.

그 외의 경우 해당 블록을 제거하고

해당 블록을 둘러싼 상하좌우 9개(자신포함)의 블록에 대해 다시 재귀 함수를 호출합니다.

이 과정을 통해 블록이 한 번에 제거되게 됩니다.

ESC 키는 게임 중 메인 화면으로 이동합니다.

마지막으로 displayMap() 함수를 통해

각각의 블록에 대해 해당 상황에 맞게 표시해주게 됩니다.

코드를 통해 확인해 보세요.

/////////////////////////////////////////

// 2016.12.19

// Written by 윤호태

#include

#include

#include

#include

#define MAX_X 20

#define MAX_Y 20

#define LEFT 75

#define RIGHT 77

#define UP 72

#define DOWN 80

#define SPACEBAR 32

#define ESC 27

struct Node

{

BOOL mine;

BOOL strip;

BOOL flag;

BOOL wall;

int mineCnt;

};

struct APoint

{

int x;

int y;

};

void mainMenu();

void levelSelectMenu();

void initMap(struct Node (*gameMap)[MAX_Y], int gameLevel, int* retMineCnt);

void randMine(struct Node (*gameMap)[MAX_Y], int gameLevel, int* retMineCnt);

int gameStart(struct Node (*gameMap)[MAX_Y], int gameLevel, int* retMineCnt);

void displayMap(struct Node (*gameMap)[MAX_Y], int gameLevel, int* retMineCnt);

void mineRecursive(struct Node (*gameMap)[MAX_Y], int tmpX, int tmpY);

int resultFunc(struct Node (*gameMap)[MAX_Y], int gameLevel, int* retMineCnt, int tmpRetMineCnt);

int levelSelect(struct Node (*gameMap)[MAX_Y]);

int randx(int x, int y);

void gotoxy(int x, int y);

void textcolor(int color_number);

void main()

{

struct Node gameMap[MAX_X][MAX_Y];

int gameLevel=10;

int select;

int retMineCnt;

int elapsedTime=0;

int level1=999, level2=999, level3=999;

while(1)

{

system(“cls”);

mainMenu();

fflush(stdin); scanf(“%d”,&select);

system(“cls”);

switch(select)

{

case 1:

initMap(gameMap, gameLevel, &retMineCnt);

elapsedTime = gameStart(gameMap, gameLevel, &retMineCnt);

if(gameLevel == 10) if(level1 > elapsedTime) level1 = elapsedTime;

else if(gameLevel == 5) if(level2 > elapsedTime) level2 = elapsedTime;

else if(gameLevel == 0) if(level3 > elapsedTime) level3 = elapsedTime;

break;

case 2:

gameLevel = levelSelect(gameMap);

break;

case 3:

printf(“▤▤ 최고 기록 ▤▤

“);

printf(” 1.초 급 : %d

“, level1);

printf(” 2.중 급 : %d

“, level2);

printf(” 3.고 급 : %d

“, level3);

system(“pause”);

break;

case 0:

puts(“게임을 종료합니다”);

return;

default:

break;

}

}

}

void mainMenu()

{

textcolor(14);

puts(“┏━━━━━━━━━━━━━━━━━┓”);

puts(“┃ ▤▤ 지뢰 찾기 게임 ▤▤ ┃”);

puts(“┃ ┃”);

puts(“┃ 1. 게임 시작 ┃”);

puts(“┃ ┃”);

puts(“┃ 2. 난이도 선택 ┃”);

puts(“┃ ┃”);

puts(“┃ 3. 최고 점수 ┃”);

puts(“┃ ┃”);

puts(“┃ 0. 종 료 ┃”);

puts(“┃ ┃”);

puts(“┗━━━━━━━━━━━━━━━━━┛”);

printf(” Select > “);

}

void levelSelectMenu()

{

textcolor(11);

puts(“┏━━━━━━━━━━━━━━┓”);

puts(“┃ ▤▤ 난이도 선택 ▤▤ ┃”);

puts(“┃ ┃”);

puts(“┃ 1. 초 급 ┃”);

puts(“┃ ┃”);

puts(“┃ 2. 중 급 ┃”);

puts(“┃ ┃”);

puts(“┃ 3. 고 급 ┃”);

puts(“┃ ┃”);

puts(“┗━━━━━━━━━━━━━━┛”);

printf(” Select > “);

}

void initMap(struct Node (*gameMap)[MAX_Y], int gameLevel, int* retMineCnt)

{

int i, j;

int cx, cy; for(i=0; i 0) gotoxy(player.x-=2, player.y);

break;

case RIGHT:

if(player.x < (MAX_Y-gameLevel-2)*2) gotoxy(player.x+=2, player.y); break; case UP: if(player.y-1 > 0) gotoxy(player.x, –player.y);

break;

case DOWN:

if(player.y+1 < MAX_X-gameLevel-1) gotoxy(player.x, ++player.y); break; default: break; } if(ch == 'f' || ch == 'F') // flag { if(gameMap[player.y][player.x/2].flag == 0) {gameMap[player.y][player.x/2].flag = 1; --*retMineCnt;} else {gameMap[player.y][player.x/2].flag = 0; ++*retMineCnt;} if(resultFunc(gameMap, gameLevel, retMineCnt, tmpRetMinCnt) == 1) { time(&endTime); elapsedTime = difftime(endTime, startTime); gotoxy(((MAX_X-gameLevel)*2)+3, 5); printf("▤ 경과 시간 : %3d 초 ", (int)elapsedTime); gotoxy(((MAX_X-gameLevel)*2)+3, 6); system("pause"); return (int)elapsedTime; } } else if(ch == SPACEBAR) { if(gameMap[player.y][player.x/2].mine != 1) { mineRecursive(gameMap, player.y, player.x/2); if(resultFunc(gameMap, gameLevel, retMineCnt, tmpRetMinCnt) == 1) { time(&endTime); elapsedTime = difftime(endTime, startTime); gotoxy(((MAX_X-gameLevel)*2)+3, 5); printf("▤ 경과 시간 : %3d 초 ", (int)elapsedTime); gotoxy(((MAX_X-gameLevel)*2)+3, 6); system("pause"); return (int)elapsedTime; } } else // 지뢰일 경우 { for(i=0; i

출처 : www.programming-challenges.com

지뢰찾기 게임은 M x N 매트릭스에 위치해 있는 지뢰를 찾는 게임이다.

M x N 매트릭스 상의 격자(square)는 지뢰이거나 지뢰가 아니다.

지뢰 격자는 * 로 표시한다. 지뢰가 아닌 격자(square)는 숫자로 표시하며 그 숫자는 인접해 있는 지뢰의 수를 의미한다. (격자(sqaure)는 최대 8개의 인접한 지뢰를 가질 수 있다.)

다음은 4×4 매트릭스에서 2개의 지뢰(*)를 표시하는 방법이다.

*… …. .*.. ….

이 게임의 목표는 지뢰의 위치(*)를 제외한 나머지 격자들의 숫자를 맞추는 것이다.

위 경우의 답은 아래와 같다.

*100 2210 1*10 1110

입력

첫번째 줄은 M x N 의 M(행)과 N(열)에 해당되는 숫자이다. N과 M은 0보다 크고 100 이하이다. (0< N, M <=100) 그 다음 M개의 줄이 차례로 입력되고 각 줄은 정확하게 N개의 문자가 입력된다. 지뢰 격자는 * 로 표시하며 지뢰가 아닌 격자는 . (dot)로 표시한다. 출력 지뢰(*)를 제외한 나머지 격자의 숫자값을 찾아서 M x N 매트릭스를 출력한다. 예1) 입력 4 4 *... .... .*.. .... 출력 *100 2210 1*10 1110 예2) 입력 3 5 **... ..... .*... 출력

[C언어_12] C언어 문제 풀이 #4

안녕하세요.

이번 포스팅에서는 2차원 배열을 이용한 문제를 풀어보려고 합니다.

| 지난 강좌 Review

swdoodle.tistory.com/16

지난시간에는 2차원 배열과 메모리의 특성에 대해 알아보았습니다.

이번시간에는 2차원 배열을 보다 쉽게 이해할 수 있는 문제를 가져왔습니다.

| C언어 문제

이번 문제는

9×9 크기의 지뢰찾기 게임을 만드는 것입니다.

문제 출처 : codeup.kr/problem.php?id=1524

우리는 값을 입력하여서 지뢰찾기 맵을 만들고

좌표를 입력하여 그 주위에 지뢰가 몇 개 있는지 출력하는 프로그램을 만들려고 합니다.

| 문제 조건

먼저 값을 다음과 같이 입력합니다.

1 0 1 0 0 0 0 0 0

1 0 0 0 1 0 0 0 0

1 0 0 0 1 0 0 1 0

1 0 1 1 1 0 0 0 0

1 0 1 0 1 0 0 0 0

1 0 1 1 1 0 0 1 0

1 0 0 0 1 0 0 0 0

1 0 0 0 1 0 0 1 0

1 0 0 0 1 0 0 0 0

여기서 1은 지뢰, 0은 빈칸을 의미합니다.

즉 다음과 같이 지뢰가 있다고 가정합시다.

여기서 좌표는 맨 왼쪽 위칸이 ( 0 , 0 ) 이라고 가정하고

↓가 X축의 양의 방향, →가 Y축의 양의 방향 이라고 가정합시다.

| 문제 풀이

먼저 위의 지뢰찾기 맵을 2차원 배열을 이용해서 저장해봅시다.

#include void main(){ int nums[9][9] = {}; //2차원 배열 만들기 for(int i = 0; i < 9; i++) //X방향 { for(int k = 0; k < 9; k++) //Y방향 { scanf("%d", &nums[i][k]); } } } 위와 같이 코드를 작성하고 값을 입력하면 num[0][0] = 1 num[0][1] = 0 num[0][2] = 1 ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ num[1][0] = 1 num[1][1] = 0 num[1][2] = 0 ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ 위와 같이 값이 저장될 것 입니다. 그리고 우리가 입력하고자 하는 칸의 좌표를 입력받아야겠지요? int X,Y; ////X : X좌표, Y : Y좌표 scanf("%d %d". &X, &Y); ///X Y 형태로 입력 위와 같이 코드를 작성하면 될 것입니다. 여기서 입력한 값이 ( 5, 5 )이라고 가정합시다. 그러면 ( 5 , 5 )칸의 주위에는 지뢰가 몇개가 있을까요? 주위의 9칸을 살펴보면 지뢰는 총 3개가 있는 것을 알 수 있습니다. 즉 우리가 살펴보아야 할 칸은 (4 , 4) (4 , 5) (4 , 6) (5 , 4) (5 , 5) (5 , 6) (6 , 4) (6 , 5) (6 , 6) 위와 같이 8칸을 살펴보아야 합니다. 그러면 조건문과 반복문을 적절히 활용하면 되겠지요? int count = 0; for(int i = X-1; i <= X+1; i++) { for(int k = Y-1; k <= Y+1; k++) { if (nums[i][k] == 1) //만약 칸의 값이 1 일경우 count++; } } 위 코드에서는 ( 5, 5 )가 지뢰가 아니라고 가정하였습니다. 지뢰찾기 게임을 해보았을 때 지뢰를 밟으면 게임오버가 되지요? 입력한 값에 지뢰가 있을 때 GAME OVER!라는 문장을 출력해줍시다. int count = 0; if(nums[X][Y] == 1) printf("GAME OVER!"); else{ for(int i = X-1; i <= X+1; i++)// X-1 부터 X+1까지 { for(int k = Y-1; k <= Y+1; k++)// Y-1 부터 Y+1까지 { if (nums[i][k] == 1) //만약 칸의 값이 1 일경우 count++; } } printf("Mines Found : %d", count); } 그러면 제대로 작동하는지 확인해 볼까요? 아래의 코드를 실행해보세요. #define _CRT_SECURE_NO_WARNINGS #include int main() { int nums[9][9] = {}; int X, Y; for(int i = 0; i < 9; i++) { for(int k = 0; k < 9; k++) { scanf("%d", &nums[i][k]); } } scanf("%d %d", &X, &Y); int count = 0; if (nums[X][Y] == 1) printf("GAME OVER!"); else { for (int i = X - 1; i <= X + 1; i++) { for (int k = Y - 1; k <= Y + 1; k++) { if (nums[i][k] == 1) //만약 칸의 값이 1 일경우 count++; } } printf("Mine Found : %d", count); } } 제대로 작동하는 것을 확인할 수 있습니다. | 생각해보기 위의 문제는 가장자리를 고려하지 않은 문제입니다. 만약 입력한 값이 가장자리에 있는 칸이라면 조건문과 반복문이 바뀌어야 합니다. 이 경우를 추가해서 한번 프로그램을 만들어 보세요. | 마무리 이번 시간에는 배열을 활용한 문제를 풀어보았습니다. 이 문제를 통해서 배열을 좀 더 쉽게 이해하셨으면 좋겠습니다. 감사합니다.

[c언어] 코딩도장 38.8 지뢰찾기 문제 풀이

728×90

오늘은 코딩도장 38.8 심사문제 풀이를 해보겠습니다.

<문제>표준 입력으로 행렬의 크기 m, n과 문자(char) 행렬이 입력됩니다(m과 n의 범위는 3~10). 입력된 m, n은 공백으로 구분되며 행렬 안에서 *은 지뢰이고 .은 지뢰가 아닙니다. 지뢰가 아닌 요소에는 인접한 지뢰의 개수를 출력하는 프로그램을 만드세요(scanf 함수 호출 전에 문자열을 출력하면 안 됩니다).

‘인접하다’라는 것의 의미를 가로 5, 세로 5 크기의 2차원 배열을 통해 자세히 알아보겠습니다.

위 그림에 있는 숫자의 의미는 각 행에 대한 열의 인덱스라고 생각하시면 됩니다.

동그라미 친 부분이 배열[1][2]부분, 즉 하늘색 숫자에 대해 인접한 지점입니다.

인접한 지점을 찾을 때 첫번째 행과 열, 마지막 행과 열 지점은 다른 지점과 다른 조건이 붙는다는 점을 주의해야 합니다.

배열[0][0]부분을 예로 들어보겠습니다.

728×90

소스 공개] C언어로 구현한 CUI 지뢰 찾기 게임(퍼져나가는 0 기능 포함)

제작한 코드는 깃허브에 올려 두었다:

https://github.com/ka373/SimpleCUIMinesweeperWithSpreadingZeros

_______________________________

주말에 취미 삼아 CUI 지뢰 찾기 게임을 구현해 보았다.

심플한 게임이지만,

정말 프로그래밍을 하겠다는 생각으로 따져가면 은근히 생각할 부분이 있었다.

그리고, 지뢰찾기 게임을 만든 사람들을 보면

0(내가 밟은 자리 주변에 지뢰가 없을 경우)이 퍼져나가는 기능을 구현하지 않은 사람도 많았으나, 본 프로그램에서는 구현해 두었다.

또한, 많은 사람은 자료구조나 알고리즘을 자세히 배우기 전에 지뢰 찾기 게임을 구현하고자 하는데, 이 프로그램은 그들도 이해할 수 있도록 만들었다.

지금부터 제작한 지뢰찾기 프로그램에 대해서 간단히 소개하겠다.

I. 게임의 목적

지뢰를 제외한 보드에 있는 모든 땅을 밟으면 게임을 클리어할 수 있다.

II. 게임의 진행

보드가 있고, 그 보드를 밟아 나가거나 지뢰 혹은 ?를 표시하는 식으로 게임을 진행한다.

_______________________________

0. 게임의 구조

게임이 종료될 때까지 1)~4)를 반복

1) 블럭(땅)의 위치와 타입을 입력 받는다.

2) 게임 진행 함수에 위치와 타입을 입력한다.

3) 살았는지 죽었는지 판별한다.

4) 진행 상황(보드)를 프린트한다.

1. 보드 만들기

보드에서 진행되는 게임이므로, 보드가 필요하다.

두 개의 보드 1) 내가 탐색해 나가고 있는 보이는 보드(board_visible)와 2)해답 보드(board_kotae)를 만든다.

1 2 int board_visible[NUM_OF_ROWS][NUM_OF_COLUMNS]; // Similar to the board seen by the user int board_kotae[NUM_OF_ROWS][NUM_OF_COLUMNS]; //Board with numbers and mines (correct answer board) cs

2. 해답 보드(board_kotae) 구성

2.1. 지뢰 만들어서 배치하기

보드 블럭의 개수만큼의 난수를 만들고, 만들어진 난수에 따라 보드에 지뢰를 배치한다.

1 2 3 4 5 6 7 8 9 10 //mine planting if (process_NUM_MINE_randoms() = = 1 ) { for (i = 0 ; i < NUM_MINE; i + + ) { int mine_row = obtained_randoms[i] / NUM_OF_ROWS; int mine_column = obtained_randoms[i] % NUM_OF_ROWS; board_kotae[mine_row][mine_column] = MINE; //printf(" Location of mines: row: %d column: %d ", mine_row, mine_column); } } Colored by Color Scripter cs 2.2. 숫자 설정 배열을 탐색하면서, 해당 블록 주변 블록에 있는 지뢰의 수를 세어서 숫자를 할당한다. 3. 게임 진행 함수 만들기(process_game) 3.1. 입력 받은 위치가 이미 방문한 장소이면 무효처리 한다. 3.2. 새로운 블럭을 밟았을 경우 해답 보드를 참고해서 보이는 보드에 값을 입력한다. 여기서 보이는 보드에 입력하는 값은 보드를 출력 할 때 사용한다. 3.2.1. 밟은 곳이 1이상 8이하의 숫자일 경우 보이는 보드에 해당 숫자를 입력한다. 3.2.2. 밟은 곳이 지뢰일 경우 보이는 보드에 해당 숫자를 입력한다. 게임 오버를 나타내는 값을 리턴한다.(나의 경우는 is_live = 0; 와 같이 사용) 3.2.3. 밟은 곳이 0일 경우(주위에 지뢰가 없을 경우) 선택한 부분이 0일 경우, 0 이외의 숫자가 나올 때까지 0이 퍼져 나간다. 이 게임의 백미이자, 구현 난도가 다른 부분에 비해 높은 부분이라고 생각한다. 하지만 어떻게 하는지 봐 봐버리면 훨씬 쉽게 느껴질 것이다. 그러므로, 지뢰찾기를 스스로의 힘으로 구현하고 싶은 사람은 이 부분을 참고 하기 전에 스스로 이 부분을 해결해 보길 바란다. 나의 경우, 재귀함수를 통해 다음과 같이 구현했다. 밟은 곳이 0일 경우 좌상, 상, 우상, 좌, 우, 좌하, 하, 우하 방향으로 재귀적으로 검사해 나간다. 시간을 잠시 내서 취미 개발처럼 만든 것이라, 이것이 최적화된 알고리즘이라고 할 수는 없겠다. 다만 필요한 성능을 내는 데는 큰 문제가 없는 것 같다. 이 글을 읽는 사람은 다른 더 좋은 알고리즘도 생각해 보길 바란다. 일부 경로를 그려보자면 다음과 같다: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ///////////////////////////////////////////////////////////////////////////// //spreading zeros(0の連鎖爆弾!0의 연쇄폭탄!) if (board_visible[row_entered][column_entered] = = 0 ) { if (can_go(row_entered - 1 , column_entered - 1 )) { process_game(row_entered - 1 , column_entered - 1 , STEPPED); //Spread to left upper diagonal ↖ } if (can_go(row_entered - 1 , column_entered + 1 )) { process_game(row_entered - 1 , column_entered + 1 , STEPPED); //Spread across the upper right diagonal ↗ } if (can_go(row_entered + 1 , column_entered - 1 )) { process_game(row_entered + 1 , column_entered - 1 , STEPPED); //Spread to left lower diagonal ↙ } if (can_go(row_entered + 1 , column_entered + 1 )) { process_game(row_entered + 1 , column_entered + 1 , STEPPED); //Spread across the lower right diagonal ↘ } if (can_go(row_entered - 1 , column_entered)) { process_game(row_entered - 1 , column_entered, STEPPED); } //Spread up ↑ if (can_go(row_entered + 1 , column_entered)) { process_game(row_entered + 1 , column_entered, STEPPED); } //Spread down ↓ if (can_go(row_entered, column_entered - 1 )) { process_game(row_entered, column_entered - 1 , STEPPED); } //Spread left ← if (can_go(row_entered, column_entered + 1 )) { process_game(row_entered, column_entered + 1 , STEPPED); } //Spread to the right → } // end of if연쇄폭탄 ///////////////////////////////////////////////////////////////////////////// Colored by Color Scripter cs _______________________________ 지뢰 찾기 게임을 만드는 데 필요한 것들을 몇 가지만 정리해 보았다. 그리고, 재귀적인 처리를 통해 지뢰 찾기 게임 구현의 매력 중 하나인 퍼져나가는 0 기능을 구현해 보았다. 이렇게, 지뢰 찾기나 간단한 게임, 프로그램 등을 구현함으로서, 세상에 도움도 되고, 연습도 되고, 프로그래밍 실력이나 구현 능력 향상도 조금은 되지 않을까 싶다.

(C/C++) 폭탄게임(지뢰찾기) 구현해보기!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

// 10 x 10 이차원 배열 // 1, 0 으로 랜덤한 값이 저장되어 있음 // 1 : 폭탄 0 : 안전지대 // 플레이어 -> 정수를 두 개 입력 ( 2, 3 ) // 컴퓨터 -> 랜덤하게 두 자리 지정 ( 1, 4 ) // 폭탄을 밟으면 게임 오버 // 게임 오버까지 계속 진행 // 플레이어 win! / 컴퓨터 win! // 1,0 표시하다가 완성하면 x로 덮어주기 // 건드린 공간은 0,1로 재표시 #include < stdio.h > #include < stdlib.h > #include < time.h > #include < Windows.h > void main() { srand(time( NULL )); int map[ 10 ][ 10 ]; char x_map[ 10 ][ 10 ]; int player_x, player_y, com_x, com_y; // 폭탄게임 초기화 for ( int i = 0 ; i < 10 ; i + + ) { for ( int j = 0 ; j < 10 ; j + + ) { map[i][j] = rand() % 4 ; x_map[i][j] = 'X' ; } } while ( 1 ) { // 컴퓨터의 랜덤선택 com_x = rand() % 10 + 1 ; com_y = rand() % 10 + 1 ; if (x_map[com_x - 1 ][com_y - 1 ] = = '1' | | x_map[com_x - 1 ][com_y - 1 ] = = '0' ) { continue ; } for ( int i = 0 ; i < 10 ; i + + ) { for ( int j = 0 ; j < 10 ; j + + ) { printf ( " %c l" , x_map[i][j]); } printf ( " " ); printf ( "----------------------------------------" ); printf ( " " ); } printf ( "x좌표와 y좌표를 입력하세요! : " ); scanf ( "%d %d" , & player_x, & player_y); if (player_x < 1 | | player_x > 10 | | player_y < 1 | | player_y > 10 ) { printf ( “잘못된 범위입니다. 다시 입력하세요!

” ); continue ; } else if (x_map[player_x – 1 ][player_y – 1 ] = = ‘1’ | | x_map[player_x – 1 ][player_y – 1 ] = = ‘0’ ) { printf ( “이미 선택된 자리입니다. 다른 자리를 입력하세요!

” ); continue ; } if (map[player_x – 1 ][player_y – 1 ] = = 1 ) { x_map[player_x – 1 ][player_y – 1 ] = ‘*’ ; printf ( “컴퓨터 win!

” ); break ; } else { x_map[player_x – 1 ][player_y – 1 ] = ‘0’ ; } Sleep( 1000 ); printf ( “컴퓨터의 선택 : %d %d

” , com_x, com_y); if (map[com_x – 1 ][com_y – 1 ] = = 1 ) { x_map[com_x – 1 ][com_y – 1 ] = ‘*’ ; printf ( “플레이어 win!

” ); break ; } else { x_map[com_x – 1 ][com_y – 1 ] = ‘0’ ; } Sleep( 1000 ); system( “cls” ); } Sleep( 1000 ); system( “cls” ); printf ( “결과를 공개합니다!

” ); for ( int i = 0 ; i < 10 ; i + + ) { for ( int j = 0 ; j < 10 ; j + + ) { printf ( " %c l" , x_map[i][j]); } printf ( " " ); printf ( "----------------------------------------" ); printf ( " " ); } } Colored by Color Scripter

[C] 간단한 지뢰찾기(지뢰의 개수 출력)

입력 : 지뢰는 문자 *로 하고 일반 셀은 #로 입력

출력 : 지뢰가 설치되어 있지 않은 셀 위치에 주변 지뢰의 개수 출력

EX)

입력 :

#####

#*###

##*##

#*###

###*#

출력:

11100

1*210

23*10

1*321

112*1

입력과 출력할 때 모두 2차원 배열 사용

#include #define X_VALUE 5 //2차원 배열의 행의 수 #define Y_VALUE 5 //2차원 배열의 열의 수 void readBombInfo(char grid[][Y_VALUE + 1]) { int i; // grid 및 지뢰 정보 입력 for (i = 0; i < X_VALUE; i++) scanf("%s", grid[i]); } void countBomb(char grid[][Y_VALUE + 1], int numOfBombs[][Y_VALUE]) { int i, j; for (i = 0; i < X_VALUE; i++) for (j = 0; j < Y_VALUE; j++) if (grid[i][j] == '*') { //위의 세 셀 if (i - 1 >= 0) { numOfBombs[i – 1][j]++; if (j – 1 >= 0) numOfBombs[i – 1][j – 1]++; if (j + 1 < Y_VALUE) numOfBombs[i - 1][j + 1]++; } //아래 세 쎌 if (i + 1 < X_VALUE) { numOfBombs[i + 1][j]++; if (j - 1 >= 0) numOfBombs[i + 1][j – 1]++; if (j + 1 < Y_VALUE) numOfBombs[i + 1][j + 1]++; } //왼쪽 if (j - 1 >= 0) numOfBombs[i][j – 1]++; //오른쪽 if (j + 1 < Y_VALUE) numOfBombs[i][j + 1]++; } } void display_numOfBombs(char grid[][Y_VALUE + 1], int numOfBombs[][Y_VALUE]) { int i, j; printf(" 지뢰의 개수 "); for (i = 0; i < X_VALUE; i++) { for (j = 0; j < Y_VALUE; j++) if (grid[i][j] == '*') printf("*"); else printf("%d", numOfBombs[i][j]); printf(" "); } } int main(void) { char grid[X_VALUE][Y_VALUE + 1]; //문자열의 경우 마지막에 NULL이 들어가야 하므로 // 5X5 배열이 아닌 5X6 배열이 되어야 한다. int numOfBombs[X_VALUE][Y_VALUE] = { 0 }; //지뢰의 개수를 넣는 정수형 5X5 배열 readBombInfo(grid); countBomb(grid, numOfBombs); display_numOfBombs(grid, numOfBombs); }

키워드에 대한 정보 c 언어 지뢰 찾기

다음은 Bing에서 c 언어 지뢰 찾기 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 김유진(학부 1학년) 학생의 C 텀 프로젝트 – 지뢰 찾기 게임 발표 동영상

  • 대구가톨릭대학교
  • 대구가톨릭대
  • 대구가톨릭
  • 대가대
  • DCU
  • SW
  • 소프트웨어
  • 소프트웨어융합
  • SW중심대학
  • 소프트웨어중심대학
  • SW중심
  • 컴퓨터소프트웨어
  • 컴퓨터
  • 컴퓨터공학
  • 스마트IoT
  • IoT
  • 사이버보안
  • 정보보호
  • 모바일
  • 모바일 소프트웨어
  • 인공지능
  • 빅데이터
  • SW융합
  • 장학금
  • 입시
  • 대구
  • 경북
  • 대경
  • 사업
  • 예산
  • 특혜
  • 해외
  • SW가치
  • SW기초
  • SW전공
  • 오픈소스
  • OSS
  • 오픈소스 소프트웨어
  • 특강
  • 단기강좌
  • 지뢰 찾기
  • 지뢰찾기
  • 지뢰 게임
  • C언어
  • C프로젝트
  • C프로그래밍

김유진(학부 #1학년) #학생의 #C #텀 #프로젝트 #- #지뢰 #찾기 #게임 #발표 #동영상


YouTube에서 c 언어 지뢰 찾기 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 김유진(학부 1학년) 학생의 C 텀 프로젝트 – 지뢰 찾기 게임 발표 동영상 | c 언어 지뢰 찾기, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  대금 굴 주변 맛집 | [야! 가보자] 대금굴 황금동굴 삼척여행 환선굴 동굴여행 모노레일 은하철도 [[예약필수]] 종류석, 석순, 석주 모든 답변

Leave a Comment