C 언어 콘 솔 지뢰 제거 게임 실현
7157 단어 C 언어지뢰 를 제거 하 다
기 존의 게임 경험 에 따 르 면 우 리 는 먼저 지뢰 제거 게임 의 승리 규칙 을 확정 할 수 있다.지뢰 가 아 닌 모든 지역 을 뒤 져 야 승리 라 고 할 수 있다.
그 다음 에 우 리 는 전체 프로그램의 디자인 방향 을 확정 해 야 한다.
1.우선,우 리 는 9*9 의 2 차원 수 를 정의 합 니까?아니면 펼 치지 않 은 상태 그룹 을 정의 합 니까?첫 번 째 배열 은 뇌 구 맵 의 전개 상황 을 나타 내 는 데 사 용 됩 니 다.즉,각 소 그룹 요소 의 위치 상 태 는 전개 상태 인지 전개 되 지 않 은 상태 인지,쇼 맵()이 라 고 명명 되 었 습 니 다.두 번 째 배열 은 지뢰 의 분포 상황 을 나타 내 는 데 사 용 됩 니 다.소 조 의 모든 요소 위 치 는 지뢰 인지 아 닌 지 를 표시 합 니 다.우 리 는 minMap()이 라 고 명명 합 니 다.
2.두 개의 지 도 를 초기 화하 고 지 도 를 출력 합 니 다.
3.유 저 는 2 차원 배열 의 좌 표를 입력 하여 위 치 를 입력 하고 지도 위 치 를 펼 칩 니 다.
4.유저 가 입력 한 위치 가 합 법 적 인지 판단 합 니 다.
5.유저 가 입력 한 위치 에 지뢰 가 있 는 지 판단 하고 지뢰 가 있 으 면 게임 종료 선언;지뢰 가 없 으 면 게임 을 계속 합 니 다.
6.게임 을 계속 하면 플레이어 가 입력 한 위치 에 근처 지뢰 의 개수 가 표 시 됩 니 다.
첫 번 째 단 계 는 구조 menu()함 수 를 통 해 간단 한 상호작용 메뉴 와 게이머 의 상호작용 을 구축 하여 게임 을 시작 할 지 여 부 를 판단 합 니 다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//
#define MAX_ROW 9
#define MAX_COL 9
#define DEFAULT_MINE_COUNT 10
int menu() {
printf("======================
");
printf(" 1.
");
printf(" 0.
");
printf("======================
");
printf(" : ");
int choice = 0;
scanf("%d", &choice);
return choice;
}
int main() {
srand((unsigned int)time(0));
while (1) {
int choice = menu();
if (choice == 1) {
game();// game() .
}
else if (choice == 0) {
printf("Goodbye!
");
break;
}
else {
printf(" !
");
}
}
system("pause");
return 0;
}
두 번 째 단 계 는 첫 번 째 단계 에서 호출 된 game()함 수 를 구성 합 니 다.game()함 수 는 핵심 기능 함수 로 그 주요 임 무 는 기본 절 차 를 완성 하 는 것 입 니 다.1.init()함 수 를 구축 하고 2 차원 배열 을 초기 화 합 니 다.쇼 맵 을 초기 화하 고 배열 의 모든 요 소 를*로 설정 합 니 다.mineMap 을 초기 화하 고'0'으로 설정 한 다음 에 랜 덤 으로 N 개의'1'을 생 성 합 니 다.이곳 의'1'은 지뢰 를 의미 합 니 다.N 의 값 은 DEFAULT 입 니 다.MINE_COUNT,즉 지뢰 의 수량 이다.
void init(char showMap[MAX_ROW][MAX_COL],
char mineMap[MAX_ROW][MAX_COL]) {
for (int row = 0; row < MAX_ROW; row++) {
for (int col = 0; col < MAX_COL; col++) {
showMap[row][col] = '*';
}
}
for (int row = 0; row < MAX_ROW; row++) {
for (int col = 0; col < MAX_COL; col++) {
mineMap[row][col] = '0';
}
}
int n = DEFAULT_MINE_COUNT;
while (n > 0) {
// .
int row = rand() % MAX_ROW;
int col = rand() % MAX_COL;
if (mineMap[row][col] == '1') {
// , ,
// .
continue;
}
mineMap[row][col] = '1';
n--;
}
}
2.printMap()함 수 를 구축 합 니 다.이 함 수 는 지 도 를 인쇄 하고 표시 하 는 것 을 책임 집 니 다.주의해 야 할 것 은 대부분의 경우 showMap 을 인쇄 하지만 Gameover 에 서 는 mineMap 을 인쇄 해 야 합 니 다.
void printMap(char theMap[MAX_ROW][MAX_COL]) {
// , 。
// 。
printf(" |");
for (int col = 0; col < MAX_COL; col++) {
printf("%d ", col);
}
printf("
");
printf("--+------------------
");
for (int row = 0; row < MAX_ROW; row++) {
printf(" %d|", row);
for (int col = 0; col < MAX_COL; col++) {
printf("%c ", theMap[row][col]);
}
printf("
");
}
}
3.updateShowMap()함 수 를 구축 하여 현재 입력 한(row,col)의 위치 에 따라 현재 위치 주위 에 몇 개의 천둥 이 있 는 지 계산 하고 쇼 맵 에 업데이트 합 니 다.
void updateShowMap(char showMap[MAX_ROW][MAX_COL],
char mineMap[MAX_ROW][MAX_COL], int row, int col) {
int count = 0;
for (int r = row - 1; r <= row + 1; r++) {
for (int c = col - 1; c <= col + 1; c++) {
if (r < 0 || r >= MAX_ROW
|| c < 0 || c >= MAX_COL) {
// (row, col) , 。
continue;
}
if (mineMap[r][c] == '1') {
count++;
}
}
}
// count (row, col ) 。
// showMap 。
// count , : count 2, '2' (ASCII 50)
showMap[row][col] = count + '0';
}
마지막 으로,우 리 는 아래 의 기능 함 수 를 통합 하면 우리 의 game()함 수 를 얻 을 수 있다.
void game() {
// 1. 。( )。
char showMap[MAX_ROW][MAX_COL] = { 0 };
char mineMap[MAX_ROW][MAX_COL] = { 0 };
init(showMap, mineMap);
int openedBlockCount = 0;
while (1) {
printMap(mineMap);
printf("=================================
");
printMap(showMap);
// 2. , 。
int row = 0;
int col = 0;
printf(" (row col): ");
scanf("%d %d", &row, &col);
if (row < 0 || row >= MAX_ROW || col < 0 || col >= MAX_COL) {
printf(" !
");
continue;
}
if (showMap[row][col] != '*') {
printf(" !
");
continue;
}
// 3. . , GameOver。
if (mineMap[row][col] == '1') {
printf("GameOver!
");
// , 。
printMap(mineMap);
break;
}
// 4. , , 。
updateShowMap(showMap, mineMap, row, col);
// 5. ,
// 。
openedBlockCount++;
if (openedBlockCount == MAX_ROW * MAX_COL - DEFAULT_MINE_COUNT) {
printf(" !
");
printMap(mineMap);
break;
}
}
}
캡 처 실행:1.게임 시작:
2.좌표 불법 알림 입력:
3.좌표 위 치 를 입력 하면 펼 쳐 집 니 다.
4.게임 종료.
더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.
C++클래식 게임 모음
python 클래식 게임 모음
python 러시아 블록 게임 집합
JavaScript 클래식 게임 을 계속 합 니 다.
자바 클래식 게임 모음
javascript 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.