C 언어 는 간단 한 지뢰 제거 게임 을 실현 한다.

본 논문 의 사례 는 C 언어 가 간단 한 지뢰 제거 게임 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
순서
1.우선 게임 선택 메뉴 인쇄
2.지도 및 초기 화
1)、플레이어 에 게 보 여 주 는 지도(showmap)
2)、지뢰 의 그림(mine맵 지뢰 의 위 치 를 알 수 있다)
3.지도 인쇄
4.사용자 가 좌 표를 입력 하고 좌표 의 합 리 성 을 확인한다.
5.현재 위치 에 지뢰 가 있 는 지 판단 하고 없 으 면 숫자 가 나타 납 니 다(주변 칸 에 지뢰 가 몇 개 있 는 지 표시)
6.새 지도 인쇄
7.천둥 밟 기 게임 이 끝나 거나 승리 할 때 까지 3~6 단 계 를 반복 한다.
8.다시 게임 을 진행 하거나 퇴장 합 니 다!
코드
주 함수 및 게임 선택 메뉴

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
#define ROW 9
#define COL 9
#define COUNT 10 //    
 
int menu()
{
 printf("*************************
"); printf("****** 1.play ******
"); printf("****** 0.exit ******
"); printf("*************************
"); printf(" :>"); int choice = 0; scanf("%d", &choice); return choice; } int main() { int choice = 0; srand((unsigned int)time(NULL)); while (1) { choice = menu(); if (choice == 1) { game(); } else if (choice == 0) { printf("goodbye!
"); break; } else { printf(" , !
"); } } system("pause"); return 0; }
게임
1.2 차원 배열 을 만 듭 니 다.2.두 개의 2 차원 배열 을 초기 화 합 니 다.3.지도 인쇄 하기;4.사용자 에 게 좌 표를 입력 하 게 하기;5.천둥 밟 기 여부 판정 하기;6.게임 의 승리 여 부 를 판단 한다.7.지 도 를 업데이트 하여 현재 위 치 를 하나의 숫자 로 바 꿉 니 다.

void game()
{
 //1.        
 char show_map[ROW][COL];
 char mine_map[ROW][COL];
 //2.            
 Init(show_map, mine_map); 
 int blank_count = 0;
 while (1)
 {
 PrintMap(mine_map);//      ,    mine_map
 printf("
"); //3. PrintMap(show_map); //4. printf(" :>"); int i = 0; int j = 0; scanf("%d %d", &i, &j); if (i < 0 || i >= ROW || j < 0 || j >= COL) { printf(" , !
"); continue; } if (show_map[i][j] != '*') { // printf(" , !
"); continue; } //5. if (mine_map[i][j] == '1') { // , PrintMap(mine_map); printf(" !
"); break; } blank_count++; //6. if (blank_count == ROW * COL - COUNT) { printf(" , !
"); break; } //7. , UpdateShowMa(show_map, mine_map, i, j); } }
지도 초기 화

void Init(char show_map[ROW][COL], char mine_map[ROW][COL])
{
 //1.show_map        *
 for (int i = 0; i < ROW; i++)
 {
 for (int j = 0; j < COL; j++)
 {
 show_map[i][j] = '*';
 }
 }
 //2.mine_map   
 for (int i = 0; i < ROW; i++)
 {
 for (int j = 0; j < COL; j++)
 {
 mine_map[i][j] = '0';
 }
 }
 //3.    10       
 int mine_count = COUNT;
 while (mine_count > 0)
 {
 //      
 int i = rand() % ROW;
 int j = rand() % COL;
 if (mine_map[i][j] == '1')
 {
 continue;
 }
 mine_map[i][j] = '1';
 --mine_count;
 }
}
지 도 를 인쇄 하 다

void PrintMap(char map[ROW][COL])
{
 //1.      (  )
 printf(" |");
 for (int j = 0; j < COL; j++)
 {
 printf(" %d", j);
 }
 printf("
"); //2. for (int j = 0; j < COL; j++) { printf("---"); } printf("
"); //3. for (int i = 0; i < ROW; i++) { printf(" %d|", i); for (int j = 0; j < COL; j++) { printf(" %c", map[i][j]); } printf("
"); } }
낙하 주위 격자 지뢰 의 개 수 를 판단 하 다.

void UpdateShowMa(char show_map[ROW][COL], char mine_map[ROW][COL], int i, int j)
{
 //      (i,j),  8       
 int count = 0;
 if (i - 1 >= 0 && j - 1 >= 0 && mine_map[i - 1][j - 1] == '1')
 { 
 count++;
 }
 if (i - 1 >= 0 && mine_map[i - 1][j] == '1')
 {
 count++;
 }
 if (i - 1 >= 0 && j + 1 < COL && mine_map[i - 1][j + 1] == '1')
 {
 count++;
 }
 if (j - 1 >= 0 && mine_map[i][j - 1] == '1')
 {
 count++;
 }
 if (j + 1 < COL && mine_map[i][j + 1] == '1')
 {
 count++;
 }
 if (i + 1 < ROW && j - 1 >= 0 && mine_map[i + 1][j - 1] == '1')
 {
 count++;
 }
 if (i + 1 < ROW && mine_map[i + 1][j] == '1')
 {
 count++;
 }
 if (i + 1 < ROW && j + 1 < COL && mine_map[i + 1][j + 1] == '1')
 {
 count++;
 }
 //count                
 show_map[i][j] = count + '0';
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기