C言語開発による掃海ゲームの実現


本論文の実例はC言語による掃海ゲームの具体的なコードを共有しています。参考にしてください。具体的な内容は以下の通りです。
簡単な説明:
スキャンする場所を入力します。
雷ならゲームは失敗です。
雷ではない位置を全部掃除したら、ゲームが勝利します。
主な詳細
1、初期化(プレーヤーの地雷除去図、地雷配置図)
展示された地図(プレイヤーが見られる地図)showMap

for (int row = 0; row < ROW; row++){

 for (int col = 0; col < COL; col++){
 showMap[row][col] = '*';
 }
}
地雷のレイアウトマップ(プレイヤーには見えない地図)mineMap

for (int row = 0; row < ROW; row++){

 for (int col = 0; col < COL; col++){
 mineMap[row][col] = '*';
 }
 }
 int count = 0;
 while (count<MINECOUNT){
 int row = rand() % 9;
 int col = rand() % 9;
 mineMap[row][col] = 'L';
 count++;
 }
}
3、地図を印刷する

void print(char Map[ROW][COL]){
 printf(" |0|1|2|3|4|5|6|7|8|
"); for (int row = 0; row < ROW; row++){ printf("%d |", row); for (int col = 0; col < COL; col++){ printf("%c ", Map[row][col]); } printf("
"); } }
5、プレーヤーはスキャンする位置情報を入力します。(9*9格子の中の特定の位置)

void Input(char showMap[ROW][COL], char mineMap[ROW][COL], int* row, int* col){
 while (1){
 printf("           :");
 scanf("%d %d", row, col);
 if (((*row) < 0) || ((*row) >= ROW)
 || ((*col) < 0) || ((*col) >= COL)){
 printf("     ");
 continue;
 }
 if (showMap[*row][*col] == '*'){
 showMap[*row][*col] = ' ';
 break;
 }
 }
}
7、ある位置が地雷であるかどうかを判断する

//  1   ;  0     
int isMine(char mineMap[ROW][COL], int row, int col){
 if (mineMap[row][col] == 'L'){
 return 1;
 }
 return 0;
}
9、ある位置の近くの地雷の個数

int MineNerborhood(char mineMap[ROW][COL], int row, int col){
 if (row < 0 || row >= ROW
 || col < 0 || col >= COL){
 return '0';
 }
 int count = 0;
 for (int r = row - 1; r <= row + 1; r++){
 for (int c = col - 1; c <= col + 1; c++){
 if (mineMap[r][c] == 'L'){
 count++;
 }
 }
 }
 return count + '0';
}
ソースコード:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define ROW 9
#define COL 9
#define MINECOUNT 10

void Input(char showMap[ROW][COL], char mineMap[ROW][COL], int* row, int* col){
 while (1){
 printf("           :");
 scanf("%d %d", row, col);
 if (((*row) < 0) || ((*row) >= ROW)
 || ((*col) < 0) || ((*col) >= COL)){
 printf("     ");
 continue;
 }
 if (showMap[*row][*col] == '*'){
 showMap[*row][*col] = ' ';
 break;
 }
 }
}

//  1   ;  0     
int isMine(char mineMap[ROW][COL], int row, int col){
 if (mineMap[row][col] == 'L'){
 return 1;
 }
 return 0;
}
//
void init(char showMap[ROW][COL], char mineMap[ROW][COL]){

 for (int row = 0; row < ROW; row++){

 for (int col = 0; col < COL; col++){
 showMap[row][col] = '*';
 }
 }
 for (int row = 0; row < ROW; row++){

 for (int col = 0; col < COL; col++){
 mineMap[row][col] = '*';
 }
 }
 int count = 0;
 while (count<MINECOUNT){
 int row = rand() % 9;
 int col = rand() % 9;
 mineMap[row][col] = 'L';
 count++;
 }
}
void print(char Map[ROW][COL]){
 printf(" |0|1|2|3|4|5|6|7|8|
"); for (int row = 0; row < ROW; row++){ printf("%d |", row); for (int col = 0; col < COL; col++){ printf("%c ", Map[row][col]); } printf("
"); } } //(row,col) int MineNerborhood(char mineMap[ROW][COL], int row, int col){ if (row < 0 || row >= ROW || col < 0 || col >= COL){ return '0'; } int count = 0; for (int r = row - 1; r <= row + 1; r++){ for (int c = col - 1; c <= col + 1; c++){ if (mineMap[r][c] == 'L'){ count++; } } } return count + '0'; } // void game(){ srand(time(0)); // char showMap[ROW][COL]; // char mineMap[ROW][COL]; // init(showMap, mineMap); //print(mineMap); // int notMineCount = 0; printf(" !
"); while (1){ // print(showMap); // int row, col; Input(showMap, mineMap, &row, &col); // if (isMine(mineMap, row, col) == 1){ printf(" , !

"); print(mineMap); break; } // showMap[row][col]=MineNerborhood(mineMap, row, col); notMineCount++; // if (notMineCount == ROW*COL - MINECOUNT){ print(mineMap); printf(" !
"); break; } } } int menu(){ printf("===================
"); printf("1.
"); printf("0.
"); printf("===================
"); printf(" :"); int choice; scanf("%d", &choice); return choice; } int main(){ while (1){ int choice = menu(); if (choice == 1){ game(); }else if (choice==0){ break; }else{ printf(" ,
"); } } system("pause"); return 0; }
実行結果:



もっと面白い経典ミニゲームはテーマを実現して、みんなに共有します。
C++クラシックミニゲームまとめ
pythonクラシックミニゲームまとめ
pythonテトリスゲーム集合
JavaScript経典ゲームは遊んで止まらないです。
java経典の小さいゲームのまとめ
javascript経典ミニゲームのまとめ
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。