C语言数组应用实现扫雷游戏
更新时间:2022年06月07日 16:56:38 作者:xxzaa
这篇文章主要为大家详细介绍了C语言数组应用实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了C语言数组应用实现扫雷游戏的具体代码,供大家参考,具体内容如下
扫雷游戏(10×10的面板):
1.定义两个12×12的字符型数组;
2.show_board[][]:初始化全为*
mine_board[][]:随机赋值字符’0’或’1’
3.统计雷的个数:周围8个位置的值累加-8×’0’
代码:
game.h
#ifndef _GAME_H_ #define _GAME_H_ #include <stdio.h> #include <string.h> #include <time.h> #include <windows.h> #define ROW 12 #define COL 12 #define NUMS 20 //雷的个数 #pragma warning(disable:4996) void Menu(); void Game(); #endif
game.c
#include "game.h" void Menu() { printf("########################\n"); printf("#####1.Play 2.Exit#####\n"); printf("########################\n"); printf("请输入:"); } void SetMines(char board[][COL], int row,int col){ int num = NUMS; while (num){ int x = rand() % 10 + 1; int y = rand() % 10 + 1; if (board[x][y] == '0'){ board[x][y] = '1'; num--; } } } int GetNums(char board[][COL], int row,int col, int x, int y) { 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] - 8 * '0'; } void ShowBoard(char board[][COL], int row, int col){ printf(" "); for (int i = 1; i < col - 1; i++){ printf(" %2d ", i); } printf("\n"); printf("—————————————————————\n"); for (int i = 1; i < row - 1; i++){ printf("%2d|", i); for (int j = 1; j < col - 1; j++){ printf(" %c |", board[i][j]); } printf("\n"); printf("—————————————————————\n"); } } void Game() { system("cls"); srand((unsigned long)time(NULL)); char show_board[ROW][COL]; char mine_board[ROW][COL]; memset(show_board,'*', sizeof(show_board)); memset(mine_board,'0', sizeof(mine_board)); //初始化二维数组 SetMines(mine_board,ROW,COL); //布雷 int count = (ROW - 2)*(COL - 2) - NUMS; int x = 0; int y = 0; do{ ShowBoard(show_board,ROW,COL); printf("请输入坐标:"); scanf("%d %d", &x, &y); if (x<1 || x>ROW - 2 || y<1 || y>COL - 2){ printf("输入位置越界,请重新输入!\n"); continue; } if (show_board[x][y] != '*'){ printf("该位置已被排除,请重新输入!\n"); continue; } if (mine_board[x][y] == '1'){ break; } int num = GetNums(mine_board,ROW,COL,x, y); show_board[x][y] = num + '0'; count--; system("cls"); } while (count > 0); if (count > 0){ printf("你被炸死了!\n"); ShowBoard(mine_board, ROW, COL); } else{ printf("恭喜,你通过游戏!\n"); } }
main.c
#include "game.h" int main() { int quit = 0; int select = 0; while (!quit){ Menu(); scanf("%d", &select); switch (select){ case 1: Game(); break; case 2: quit = 1; break; default: printf("输入有误,请重新输入!\n "); break; } } printf("ByeBye!\n"); system("pause"); return 0; }
运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
最新评论