扫雷游戏的C语言实现
2016-10-09 18:51
716 查看
在学习C语言初期,我们可以找一些平常玩的游戏进行简单的C语言实现。今天就和大家分享一下关于windows中扫雷游戏的实现。
在正式写代码前,简单说一下对这个游戏的分析:
1.先提示的应该是一个简单的menu,其中包括“play”和“exit”;
2.在main函数中应该是一个test的函数,主要测试整个游戏;
3.在test中应该是可以让游戏进行循环玩的,所以需要包括一个while语句,while语句的主要部分是每次提示玩游戏;
4.关于扫雷的整个实现是用play_game实现的,在这个部分我们需要考虑怎样去实现这个功能;
5.根据上面分析,我们只需要在play_ game中实现初始化扫雷(init_game)和扫雷(sweep)即可;
6.在初始化扫雷(init_game)中,我们需要对界面中雷的位置进行处理,需要一个set _mine;
7.在扫雷(sweep)中,按照整个游戏的逻辑,需要对坐标进行一个判断,有无雷,没有雷的话,周围有多少颗雷。
整个游戏的逻辑就是这些,每一个函数的实现中嵌套了一个函数。
main->test->play_game->init _game和sweep
(1表示雷的位置,0表示没有雷。带*的是显示的界面,1/0的是带雷的界面。)
整个代码就是这么多,总体来说游戏的界面是比较low的,但是游戏的功能还是比较完善的。在写代码的时候一定先要梳理好整个逻辑,然后一步一步实现。
在正式写代码前,简单说一下对这个游戏的分析:
1.先提示的应该是一个简单的menu,其中包括“play”和“exit”;
2.在main函数中应该是一个test的函数,主要测试整个游戏;
3.在test中应该是可以让游戏进行循环玩的,所以需要包括一个while语句,while语句的主要部分是每次提示玩游戏;
4.关于扫雷的整个实现是用play_game实现的,在这个部分我们需要考虑怎样去实现这个功能;
5.根据上面分析,我们只需要在play_ game中实现初始化扫雷(init_game)和扫雷(sweep)即可;
6.在初始化扫雷(init_game)中,我们需要对界面中雷的位置进行处理,需要一个set _mine;
7.在扫雷(sweep)中,按照整个游戏的逻辑,需要对坐标进行一个判断,有无雷,没有雷的话,周围有多少颗雷。
整个游戏的逻辑就是这些,每一个函数的实现中嵌套了一个函数。
main->test->play_game->init _game和sweep
Mine_sweeper.h(头文件) #ifndef __MINE_H__ #define __MINE_H__ enum op { EXIT, PLAY }; #define ROWS 11 #define COLS 11 #define COUNT 30 void init_game(char mine[ROWS][COLS],char show[ROWS][COLS]); //初始化扫雷界面 void set_mine(char mine[ROWS][COLS]); //设置雷区 void get_num(int x, int y); //随机产生雷的位置 void display(char show[ROWS][COLS]); //打印出界面 void sweep(char mine[ROWS][COLS], char show[ROWS][COLS]); //开始扫雷 int get_mine(char mine[ROWS][COLS], int x, int y); //附近雷的个数 #endif
Mine_sweeper.c(扫雷主要功能实现) #define _CRT_SECURE_NO_WARNINGS 1 #include"Mine_sweeper.h" #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> void init_game(char mine[ROWS][COLS], char show[ROWS][COLS]) //初始化扫雷界面 { memset(mine, '0', ROWS*COLS*sizeof(char)); memset(show, '*', ROWS*COLS*sizeof(char)); set_mine(mine); } int get_mine_num(int x, int y) //随机产生雷的位置 { return rand() % (y - x + 1) + x; } void set_mine(char mine[ROWS][COLS]) //设置雷区 { int count = COUNT; int x = 0; int y = 0; srand((unsigned)time(NULL)); while (count) { x = get_mine_num(1, 9); y = get_mine_num(1, 9); if (mine[x][y] == '0') { mine[x][y] = '1'; count--; } } } void display(char show[ROWS][COLS]) //打印出界面 { int i = 0; int j = 0; printf(" "); for (i = 1; i < COLS - 1; i++) { printf(" %d ", i); } printf("\n"); for (i = 1; i < ROWS - 1; i++) { printf("%d", i); for (j = 1; j < COLS - 1; j++) { printf(" %c ", show[i][j]); } printf("\n"); } } void sweep(char mine[ROWS][COLS], char show[ROWS][COLS])//开始扫雷 { int count = 0; int x = 0; int y = 0; while(count!=((ROWS-2)*(COLS-2)-COUNT)) { printf("请输入坐标>:"); scanf("%d%d", &x, &y); if (mine[x][y] == '1') { printf("踩雷了!\n"); return; } else { int ret = get_mine(mine, x, y); show[x][y] = ret + '0'; display(show); count++; } } printf("恭喜你赢了!\n"); display(mine); } int get_mine(char mine[ROWS][COLS], int x, int y) //附近雷的个数 { int count = 0; if (mine[x - 1][y - 1] == '1') count++; //坐标位置的上3个 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++; //坐标位置的下3个 if (mine[x + 1][y] == '1') count++; if (mine[x + 1][y + 1] == '1') count++; return count; }
test.c(测试函数) #define _CRT_SECURE_NO_WARNINGS 1 #include"Mine_sweeper.h" #include<stdio.h> #include<stdlib.h> #include<time.h> void menu() { printf("********************\n"); printf("**** 1.play ******\n"); printf("**** 0.exit ******\n"); printf("********************\n"); } void play_game() { char mine[ROWS][COLS]; char show[ROWS][COLS]; init_game(mine, show); display(show); sweep(mine, show); } void test() { int input = 0; do { menu(); printf("请输入指令>:"); scanf("%d", &input); switch (input) { case PLAY: play_game(); break; case EXIT: break; } } while(input); } int main() { test(); system("pause"); }
(1表示雷的位置,0表示没有雷。带*的是显示的界面,1/0的是带雷的界面。)
整个代码就是这么多,总体来说游戏的界面是比较low的,但是游戏的功能还是比较完善的。在写代码的时候一定先要梳理好整个逻辑,然后一步一步实现。
相关文章推荐
- C语言二维数组实现扫雷游戏
- 简易小游戏扫雷——C语言编程实现
- c语言实现的扫雷游戏
- C语言二维数组实现扫雷游戏
- 基于C语言实现的扫雷游戏代码
- 一步一步实现扫雷游戏(C语言实现)(四)
- 一步一步实现扫雷游戏(C语言实现)(三)
- C语言编程实现扫雷游戏
- 【C语言】简易扫雷游戏——C语言实现
- C语言实现扫雷游戏
- c语言编程 :模拟实现简单扫雷游戏
- C语言实现扫雷游戏
- C语言+二维数组+非递归实现扫雷游戏(代码贴过来后无缩进,尽请谅解,工程完成度:85%)
- C语言实现经典游戏——扫雷!
- C语言实现扫雷游戏
- C语言实现简易版扫雷游戏
- 一步一步实现扫雷游戏(C语言实现)(二)
- 基于C语言实现的扫雷游戏
- 用C语言实现(扫雷游戏)
- 用c语言实现的扫雷游戏