本篇内容主要讲解“如何使用C语言代码实现扫雷游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用C语言代码实现扫雷游戏”吧!
概述
扫雷是一款大众类的益智小游戏。游戏目标是根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。
实现过程
1、创建一个用户交互菜单
2、布雷函数
3、显示扫雷矩阵
4、玩家自定义坐标
5、计算排雷数
多文件实现
头文件 clear_mine.h
#pragma once //防止头文件被重复包含 #define _CRT_SECURE_NO_WARNINGS 1 //实现 scanf 编译通过 #include <stdio.h>#include <stdlib.h>#include <time.h>#include <windows.h> #define ROW 8 #define COL 8 #define STYLE '?' //初始化#define NUM 20 //埋雷数 extern void Game();
源文件main.c
向玩家展示菜单栏
#include "clear_mine.h" static void Menu() //用户交互菜单{ printf("########################\n"); printf("# 1. Play 0.Exit #\n"); printf("########################\n");} int main(){ int quit = 0; int select = 0; while (!quit) { Menu(); printf("Please Enter# "); scanf("%d", &select); switch (select) { case 1: Game(); break; case 0: quit = 1; break; default: printf("Position Error, Try Again!\n"); break; } } printf("byebye!\n"); system("pause"); return 0;}
源文件clear_mine.c
#include "clear_mine.h" static void SetMines(char board[][COL], int row, int col) //布雷{ int count = NUM; while (count) { int x = rand() % (row - 2) + 1; int y = rand() % (col - 2) + 1; //随机数生成 矩阵长宽分别-2 的随机数 if (board[x][y] == '0') //非法判断 只能同一个位置生成一个随机数 { board[x][y] = '1'; count--; } }} static void ShowLine(int col) { for (int i = 0; i <= (col - 2); i++) { printf("----"); } printf("\n");}static void ShowBoard(char board[][COL], int row, int col) //显示扫雷矩阵{ printf(" "); for (int i = 1; i <= (col - 2); i++) //表头数字打印 { printf("%d ", i); } printf("\n"); ShowLine(col); for (int i = 1; i <= (row - 2); i++) { printf("%-3d|", i); for (int j = 1; j <= (col - 2); j++) { printf(" %c |", board[i][j]); } printf("\n"); ShowLine(col); }} static char CountMines(char board[][COL], int x, int y) //计算某点周围8个位置雷总数{ return board[x - 1][y - 1] + board[x - 1][y] + board[x - 1][y + 1] + \ board[x][y + 1] + board[x + 1][y + 1] + board[x + 1][y] + \ board[x + 1][y - 1] + board[x][y - 1] - 7 * '0';} void Game(){ srand((unsigned long)time(NULL)); //生成随机数种子 char show_board[ROW][COL]; char mine_board[ROW][COL]; memset(show_board, STYLE, sizeof(show_board)); //生成用户显示矩阵 memset(mine_board, '0', sizeof(mine_board)); //生成扫雷矩阵 SetMines(mine_board, ROW, COL); //布雷 int count = (ROW - 2)*(COL - 2) - NUM; //排雷 while (count) { system("cls"); //清屏 ShowBoard(show_board, ROW, COL); printf("Please Enter Your Position <x,y># "); int x = 0; int y = 0; scanf("%d %d", &x, &y); if (x < 1 || x > 10 || y < 1 || y > 10) //非法性判断 { printf("Postion Error!\n"); continue; } if (show_board[x][y] != STYLE){ printf("Postion Is not *\n"); continue; } if (mine_board[x][y] == '1'){ printf("game over!\n"); ShowBoard(mine_board, ROW, COL); break; } show_board[x][y] = CountMines(mine_board, x, y); count--; } }
初始化好的扫雷矩阵
游戏体验结果
到此,相信大家对“如何使用C语言代码实现扫雷游戏”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!