掃雷(用C語言編寫掃雷遊戲)

用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 10
void 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;
}


讓我們一起來玩遊戲吧







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章