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

본 논문 의 사례 는 C 언어 가 지뢰 제거 게임 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
vs 2019 에 새 프로젝트 를 만 든 다음 원본 파일 test.c 와 game.c 를 추가 하고 헤더 파일 game.h 를 만 듭 니 다.

test.c:

#include "game.h"
 
void game()
{
 char mine[ROWS][COLS] = { 0 };
 char show[ROWS][COLS] = { 0 };
 
 InitBoard(mine, ROWS, COLS, '0');
 InitBoard(show, ROWS, COLS, '*');
 
 SetMine(mine, ROW, COL);
 
 //DispalyBoard(mine, ROW, COL);
 DispalyBoard(show, ROW, COL);
 
 FindMine(mine, show, ROW, COL);
}
 
void menu()
{
 printf("**************************
"); printf("****** 1.play ******
"); printf("****** 0.exit ******
"); printf("**************************
"); } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf(" :"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("
"); break; default: printf(" ,
"); break; } } while (input); return 0; }
game.c:

#include "game.h"
 
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{
 int i = 0;
 for (i = 0; i < rows; i++)
 {
  int j = 0;
  for (j = 0; j < cols; j++)
  {
   board[i][j] = set;
  }
 }
}
 
 
void DispalyBoard(char board[ROWS][COLS], int row, int col)
{
 int i = 0;
 for (i = 0; i <= 9; i++)
 {
  printf("%d ", i);
 }
 printf("
"); for (i = 1; i <= row; i++) { int j = 0; printf("%d ", i); for (j = 1; j <= col; j++) { printf("%c ", board[i][j]); } printf("
"); } } void SetMine(char board[ROW][COL], int row, int col) { int count = EASY_COUNT; while (count) { int x = rand() % row + 1; int y = rand() % col + 1; if (board[x][y] != '1') { board[x][y] = '1'; count--; } } } int GetMineCount(char mine[ROWS][COLS], int x, int y) { return (mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0'); } void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) { int x = 0; int y = 0; int win = 0; while (win<row*col-EASY_COUNT) { printf(" :"); scanf("%d%d", &x, &y); if (x >= 1 && x <= row && y >= 1 && y <= col) { if (mine[x][y] == '1') { printf(" ,
"); DispalyBoard(mine, ROW, COL); break; } else { int count = GetMineCount(mine, x, y); show[x][y] = count + '0'; DispalyBoard(show, ROW, COL); win++; } } else { printf(" ,
"); } } if (win == row * col - EASY_COUNT) { printf("
"); } }
game.h:

#pragma once
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define ROW 9
#define COL 9
 
#define EASY_COUNT 10
#define ROWS ROW+2
#define COLS COL+2
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);
void DispalyBoard(char board[ROWS][COLS], int row, int col);
void SetMine(char board[ROWS][COLS], int row, int col);
void FindMine(char mine[ROW][COL], char show[ROW][COL], int row, int col);
그림 과 같이 실행 효과:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기