game.h
game.c
test.c
- #ifndef __GAME_H__
- #define __GAME_H__
- #include<stdio.h>
- #include<stdlib.h>
- #include<time.h>
- #define EASY_COUNT 10
- #define ROW 9
- #define COL 9
- #define ROWS ROW+2
- #define COLS COL+2
- void InitBoard(char arr[ROWS][COLS], int rows, int cols, char set);
- void DisplayBoard(char arr[ROWS][COLS], int row, int col);
- void SetMine(char arr[ROWS][COLS], int row, int col);
- void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int rwo, int col);
- int GetMineCount(char mine[ROWS][COLS], int x, int y);
- #endif//__GAME_H__
- #include <stdio.h>
- #include "game.h"
- void InitBoard(char arr[ROWS][COLS], int rows, int cols, char set)//初始化棋盘
- {
- int i = 0;
- int j = 0;
- for(i = 0; i < rows; i++)
- {
- for(j = 0;j < cols; j++)
- {
- arr[i][j] = set;
- }
- }
- }
- void DisplayBoard(char arr[ROWS][COLS], int row, int col)//打印棋盘
- {
- int i = 0;
- int j = 0;
- for(i = 0; i<= col; i++)
- {
- printf("%d ",i);
- }
- printf("\n");
- for(i = 1; i <= row; i++)
- {
- printf("%d ",i);
- for(j = 1; j <= col; j++)
- {
- printf("%c ", arr[i][j]);
- }
- printf("\n");
- }
- printf("---------------------\n");
- }
- void SetMine(char arr[ROWS][COLS], int row, int col)//设置地雷
- {
- int i = 0;
- int j = 0;
- int count = EASY_COUNT;
- while(count)
- {
- i = rand()%row+1;
- j = rand()%col+1;
- if(arr[i][j] == '0')
- {
- arr[i][j] = '1';
- count--;
- }
- }
- }
- void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
- {
- while(1)
- {
- int x = 0;
- int y = 0;
- printf("请输入要排查的坐标:->");
- scanf("%d%d", &x, &y);
- if(x>=1 && x<=ROW && y>=1 && y<= COL)
- {
- if(mine[x][y] == '1')
- {
- printf("恭喜你被炸死了\n");
- break;
- }
- else
- {
- int count = GetMineCount(mine, x, y);
- show[x][y] = count+'0';
- DisplayBoard(show, row, col);
- }
- }
- else
- {
- printf("坐标输入不合法,请重新输入:->\n");
- }
- }
- }
- int GetMineCount(char arr[ROWS][COLS], int x, int y)
- {
- return (arr[x-1][y]+
- arr[x-1][y-1]+
- arr[x][y-1]+
- arr[x+1][y-1]+
- arr[x+1][y]+
- arr[x+1][y+1]+
- arr[x][y+1]+
- arr[x-1][y+1]-'0'*8);
- }
- #include<stdio.h>
- #include "game.h"
- void menu()
- {
- printf("*************************\n");
- printf("***** 1.play *****\n");
- printf("***** 0.exit *****\n");
- printf("*************************\n");
- }
- void game()
- {
- char mine[ROWS][COLS] = {0};
- char show[ROWS][COLS] = {0};
- InitBoard(mine, ROWS, COLS, '0');
- InitBoard(show, ROWS, COLS, '*');
- //DisplayBoard(show, ROW, COL);
- SetMine(mine, ROW, COL);//设置雷
- DisplayBoard(show, ROW, COL);//打印
- FindMine(mine, show, ROW, COL);//根据两个棋盘找雷
- GetMineCount(mine, ROW, COL );//得到目标周围雷的个数
- }
- int main()
- {
- int input = 0;
- srand((unsigned int)time(NULL));
- do
- {
- menu();
- printf("请选择->:");
- scanf("%d", &input);
- switch(input)
- {
- case 0:
- printf("退出游戏\n");
- break;
- case 1:
- game();
- break;
- default:
- printf("输入错误,请重新输入\n");
- break;
- }
- }while(input);
- return 0;
- }