C 언어 지뢰 제거 프로젝트 실현

본 논문 의 사례 는 C 언어 가 지뢰 제거 프로젝트 를 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
핵심 사상 은 천둥 의 분 포 는'답안'으로 간주 하고,낙자 의 바둑판 은'시험지'로 간주 하 는 것 이다.
답안 지 를 맞 추 는 동시에"답"을 맞 춰 야 합 니 다.이 위치 에 천둥 이 있 는 지 없 는 지,있 으 면 붐!주변 9 궁 격 에 있 는 레이 의 수 를 판단 하지 않 고 이 문 자 를'시험지'에 인쇄 합 니 다!
또한 배열 의 경 계 를 넘 는 것 을 방지 하기 위해 모든 칸 에 9 궁 격 이 있 는 것 을 확보 하기 위해 행 과 열 에 모두 2 를 더 해 야 한다.
마지막 으로 승 부 를 판단 하 는 기준:총 칸 수-뇌 수=낙자 횟수,승 리 를 판정 할 수 있 습 니 다!
다음은 테스트 모듈:

#include"game.h"

void meau() {
 printf("****************************
"); printf("********* 1.play ***********
"); printf("********* 0.exit ***********
"); printf("****************************
"); } void game() { // char mine[ROWS][COLS] = { 0 };// char show[ROWS][COLS] = { 0 };// // // Initboard(mine,ROWS,COLS,'0'); //DisplayBoard(mine, ROW, COL); Initboard(show, ROWS, COLS,'*'); DisplayBoard(show, ROW, COL); // setboom(mine , ROW , COL); //DisplayBoard(mine, ROW, COL); // FindBoom(mine,show,ROW,COL); } void main() { int input = 0; srand((unsigned int)time(NULL)); do { meau(); printf(" :
"); scanf("%d",&input); switch (input) { case 1: //printf("
"); game(); break; case 0: printf("
"); break; default: printf(" , "); break; } } while (input); }
다음은 게임 헤더 파일 모듈 입 니 다.

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define ROW 9
#define COL 9
#define COUNT 80

#define ROWS ROW+2
#define COLS COL+2

//     
void Initboard(char board[ROWS][COLS], int rows, int cols,char set);

//    
void DisplayBoard(char board[ROWS][COLS], int rows, int cols);

//             
void setboom(char board[ROWS][COLS], int row, int col);

//    
void FindBoom(char mine[ROWS][COLS], char show[ROWS][COLS], int row ,int col);
다음은 게임 프로그램 모듈 입 니 다.

#include"game.h"

//     
void Initboard(char board[ROWS][COLS], int rows, int cols, char set) {
 for (int i = 0; i < rows; i++)
 {
  for (int j = 0; j < cols; j++) {
   board[i][j] = set;
  }
  
 }
}

//        9*9 
void DisplayBoard(char board[ROWS][COLS], int row, int col) {
 printf("--------------------
"); // for (int i = 0; i <= col; i++) { printf("%d ", i); } printf("
"); for (int i = 1; i <= row; i++) { // printf("%d ",i); for (int j = 1; j <= col; j++) { printf("%c ", board[i][j]); } printf("
"); } printf("--------------------
"); } // void setboom(char board[ROWS][COLS], int row, int col) { printf("
"); int x = 0; int y = 0; // int count = COUNT; while (count) { int x = rand() % row + 1; // 1~9 int y = rand() % col + 1; if (board[x][y] != '1') { board[x][y] = '1'; count--; } } } // int GetCount(char mine[ROWS][COLS],int x,int y) { int count = 0; for (int i = x-1; i <= x+1; i++) { for (int j = y-1; j <= y+1; j++) { if (mine[i][j] == '1') { count++; } } } return count; } // void FindBoom(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) { int x = 0; int y = 0; int count = 0; int win = 0; // 9*9-10 = 70 ; // while (win < row*col - COUNT) { printf(" :->
"); scanf("%d%d", &x, &y); if (x >= 1 && x <= row && y >= 1 && y <= col) { if (mine[x][y] == '1') { printf(" BOOM BOOM BOOM
"); DisplayBoard(mine, ROW, COL); break; } else { // mine // show[x][y]; count = GetCount(mine,x,y); show[x][y] = count + '0';//count , + 0 ! ! DisplayBoard(show,ROW,COL); win++; } } else { printf(" , "); } } if (win == row * col - COUNT) { printf("
"); } }
결론:지뢰 제거 게임 은 2 차원 배열 을 신속 하고 정교 하 게 활용 하려 면 몇 번 더 연습 해 야 한다.이런 배열 의 전 참,배열 조작,배열 사고,배열 과 배열 간 의 연동 사 고 를 일상적인 조작 에 융합 시 켜 야 한다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기