扫雷(用C语言编写扫雷游戏)

来源:互联网 发布:mac怎么qq远程控制 编辑:程序博客网 时间:2024/06/05 09:27

用C语言编写扫雷游戏是很有趣的哦,在学习中游戏,在游戏中学习^_^


game.h文件

#ifndef __GAME_H__#define __GAME_H__enum OPTION{PLAY,EXIT};#include<stdio.h>#include <string.h>#include <stdlib.h>#include<time.h>#define ROW 11            #define COL 11#define SUIJI 10void menu();void init_board(char mine[ROW][COL], char show[ROW][COL]);  void display_board(char show[ROW][COL]);                    void set_mine(char mine[ROW][COL]);                         int get_mine(char mine[ROW][COL], int x, int y);            void mine_sweep(char mine[ROW][COL], char show[ROW][COL]);#endif 

game.c 文件


#include"game.h"void menu(){printf("########################\n");    printf("######进入扫雷游戏######\n");    printf("####1:play  0:exit####\n");    printf("########################\n");}void init_board(char mine[ROW][COL], char show[ROW][COL]){    int i = 0;    int j = 0;    for (i = 1; i < ROW - 1; i++)    {        for (j = 1; j < COL - 1; j++)        {            mine[i][j] = '0';        }    }    for (i = 1; i < ROW - 1; i++)    {        for (j = 1; j < COL - 1; j++)        {            show [i][j] = '*';        }    }}void display_board(char show[ROW][COL]){    int i, j;    printf("  ");    for (i = 1; i < COL - 1; i++)        printf("%d ", i);    printf("\n");    for (i = 1; i < ROW - 1; i++)    {        printf("%d ", i);        for (j = 1; j < COL - 1; j++)        {            printf("%c ", show[i][j]);        }        printf("\n");    }}void set_mine(char mine[ROW][COL]){    int x = 0;    int y = 0;    int count = SUIJI;    srand((unsigned int)time(NULL));    while (count)    {        int x = rand() % (ROW-2) + 1;        int y = rand() % (COL-2) + 1;        if (mine[x][y] == '0')        {            mine[x][y] = '1';            count--;        }    }}int get_mine(char mine[ROW][COL], int x, int y){    int count = 0;    if (mine[x - 1][y - 1] == '1')        count++;    if (mine[x - 1][y] == '1')        count++;    if (mine[x-1][y + 1] == '1')        count++;    if (mine[x][y - 1] == '1')        count++;    if (mine[x ][y + 1] == '1')        count++;    if (mine[x + 1][y - 1] == '1')        count++;    if (mine[x + 1][y] == '1')        count++;    if (mine[x + 1][y + 1] == '1')        count++;    return count;}void mine_sweep(char mine[ROW][COL], char show[ROW][COL]){    int x = 0;    int y = 0;    int count = 0;    while (count != (ROW - 2)*(COL - 2) - SUIJI)    {        printf("请输入坐标:");            scanf("%d%d", &x, &y);        if (mine[x][y] == '1')        {            printf("很遗憾,踩到雷了:\n");            printf("棋盘中雷的分布:\n");            display_board(mine);            return;        }        else        {            int ret = get_mine(mine, x, y);            show[x][y] = ret + '0';            display_board(show);        }    }    printf("恭喜你,扫雷成功\n");}

test.c文件

#include "game.h"void game()//玩游戏{int x = 0;int y = 0;    char mine[ROW][COL];    char show[ROW][COL];    init_board(mine, show);    display_board(show);    set_mine(mine);get_mine( mine,x,y);    mine_sweep(mine, show);}int main(){    int input = 1;    do    {    menu();        printf("请选择:\n");        scanf("%d", &input);        switch (input)        {        case 1:            game();    break;case 0:            break;        default:            printf("选择错误,请重新选择:\n");            break;        }    }while(input);    return 0;}


让我们一起来玩游戏吧







2 0