c简单的扫雷扫雷游戏
来源:互联网 发布:打击网络犯罪的图片 编辑:程序博客网 时间:2024/05/03 21:17
#include<stdio.h>#include<stdlib.h>//#include"Global.h"//#include"EmployeeManage.h"typedef struct Node_T{int x;int y;}Node;Node *head = NULL;int a[9][9] = {0};//初始化9*9地图int iCount = 0;void Preorder(Node *head){Node *p = head;Node *pt = NULL;if(a[p->x-1][p->y-1] == 0 && (p->x)>0 && (p->y)>0){iCount++;pt = (Node*)malloc(sizeof(Node));pt->x = p->x-1;pt->y = p->y-1;a[p->x-1][p->y-1] += 10;Preorder(pt);free(pt);}else if(a[p->x-1][p->y-1]>0 && a[p->x-1][p->y-1]<10 && (p->x)>0 && (p->y)>0){iCount++;a[p->x-1][p->y-1] += 10;}if(a[p->x][p->y-1] == 0 && (p->y)>0){iCount++;pt = (Node*)malloc(sizeof(Node));pt->x = p->x;pt->y = p->y-1;a[p->x][p->y-1] += 10;Preorder(pt);free(pt);}else if(a[p->x][p->y-1]>0 && a[p->x][p->y-1]<10 && (p->y)>0){iCount++;a[p->x][p->y-1] += 10;}if(a[p->x+1][p->y-1] == 0 && (p->x)<8 && (p->y)>0){iCount++;pt = (Node*)malloc(sizeof(Node));pt->x = p->x+1;pt->y = p->y-1;a[p->x+1][p->y-1] +=10;Preorder(pt);free(pt);}else if(a[p->x+1][p->y-1]>0 && a[p->x+1][p->y-1]<10 && (p->x)<8 && (p->y)>0){iCount++;a[p->x+1][p->y-1] += 10;}if(a[p->x-1][p->y] == 0 && (p->x)>0){iCount++;pt = (Node*)malloc(sizeof(Node));pt->x = p->x-1;pt->y = p->y;a[p->x-1][p->y] += 10;Preorder(pt);free(pt);}else if(a[p->x-1][p->y]>0 && a[p->x-1][p->y]<10 && (p->x)>0){iCount++;a[p->x-1][p->y] += 10;}if(a[p->x+1][p->y] == 0 && (p->x)<8){iCount++;pt = (Node*)malloc(sizeof(Node));pt->x = p->x+1;pt->y = p->y;a[p->x+1][p->y] += 10;Preorder(pt);free(pt);}else if(a[p->x+1][p->y]>0 && a[p->x+1][p->y]<10 && (p->x)<8){iCount++;a[p->x+1][p->y] += 10;}if(a[p->x-1][p->y+1] == 0 && (p->x)>0 &&(p->y)<8){iCount++;pt = (Node*)malloc(sizeof(Node));pt->x = p->x-1;pt->y = p->y+1;a[p->x-1][p->y+1] += 10;Preorder(pt);free(pt);}else if(a[p->x-1][p->y+1]>0 && a[p->x-1][p->y+1]<10 && (p->x)>0 &&(p->y)<8){iCount++;a[p->x-1][p->y+1] += 10;}if(a[p->x][p->y-1] == 0 && (p->y)>0){iCount++;pt = (Node*)malloc(sizeof(Node));pt->x = p->x;pt->y = p->y-1;a[p->x][p->y-1] += 10;Preorder(pt);free(pt);}else if(a[p->x][p->y-1]>0 && a[p->x][p->y-1]<10 && (p->y)>0){iCount++;a[p->x][p->y-1] += 10;}if(a[p->x+1][p->y+1] == 0 && (p->x)<8 &&(p->y)<8){iCount++;pt = (Node*)malloc(sizeof(Node));pt->x = p->x+1;pt->y = p->y+1;a[p->x+1][p->y+1] += 10;Preorder(pt);free(pt);}else if(a[p->x+1][p->y+1]>0 && a[p->x+1][p->y+1]<10 && (p->x)<8 &&(p->y)<8){iCount++;a[p->x+1][p->y+1] += 10;}}int main(void){int iMineNum = 0;//表示雷的个数int i = 0;int j = 0;int x = 0;int y = 0;iMineNum = rand()%11;//随机产生了雷数for(i=0;i<iMineNum;i++)//根据雷的个数和随机产生的坐标布雷{x = rand()%9;y = rand()%9;if(a[x][y] == -1)i--;elsea[x][y] = -1;}for(i=0;i<9;i++)//对非雷区进行标记{for(j=0;j<9;j++){if(a[i][j] != -1 ){if(a[i-1][j] == -1 && i>0)a[i][j]++;if(a[i-1][j-1] == -1 && i>0 && j>0)a[i][j]++;if(a[i][j-1] == -1 && j>0)a[i][j]++;if(a[i+1][j] == -1 && i<8)a[i][j]++;if(a[i+1][j+1] == -1 && i<8 && j<8)a[i][j]++;if(a[i][j+1] == -1 && j<8)a[i][j]++;if(a[i-1][j+1] == -1 && i>0 && j<8)a[i][j]++;if(a[i+1][j-1] == -1 && i<8 && j>0)a[i][j]++;}}}for(i=0;i<9;i++)//初始化扫雷面板{for(j=0;j<9;j++)printf("%+d\t",a[i][j]);printf("\n");}for(i=0;i<9;i++)//初始化扫雷面板{for(j=0;j<9;j++)printf("*\t");printf("\n");}while(iCount < (81-iMineNum)){printf("请输入你选择的横坐标:");scanf("%d",&x);printf("请输入你选择的纵坐标:");scanf("%d",&y);if(a[x][y] == -1){printf("you lost the game\n");break;}else if(a[x][y]>0 && a[x][y]<8){a[x][y] +=10;iCount++;}else if(a[x][y] == 0){head = (Node*)malloc(sizeof(Node));iCount ++;head->x = x;head->y = y;Preorder(head);}else{printf("不能重复选该点\n");}system("cls");for(i=0;i<9;i++)//打印出已经标记的雷区{for(j=0;j<9;j++){if(a[i][j] >= 10)printf("%+d\t",a[i][j]%10);elseprintf("*\t");}printf("\n");}}free(head);return 0;}
程序中随机数的获取有点问题,递归时候可能会存在内存泄漏,大家感兴趣的可以改改。因为课余写的像注释变量命名都不够得体,希望大家可以挑挑刺。
- c简单的扫雷扫雷游戏
- 简单的“扫雷游戏”
- java 简单的扫雷游戏
- 简单扫雷游戏的实现
- 练习:简单的扫雷游戏
- 简单扫雷游戏的实现
- 简单的扫雷游戏制作
- c语言的扫雷游戏
- 最简单C语言的扫雷地图(不是游戏)
- C语言:简单的无界面化操作扫雷游戏
- c语言简单实现扫雷游戏
- 【C#】扫雷游戏编程
- C实现---扫雷游戏
- C语言-扫雷游戏
- c语言扫雷游戏
- 【C】扫雷游戏
- c语言扫雷游戏
- 第一个简单的扫雷游戏
- HTML之实现下拉式菜单
- 【insigma】IO文件和文件夹的复制、删除、剪切
- android权限大全
- warning C4290: 忽略C++ 异常规范,但指示函数不是__declspec(nothrow)
- float与double类型区别比较
- c简单的扫雷扫雷游戏
- CString基本使用以及 和Char*之间的转化
- JAVA 基础学习(11)
- 英厨师连打19个双黄蛋 几率小于万亿分之一
- 彩信相关文件,彩信业务流程
- php当中多次使用PDO::query ( string $statement ) 报non-object错误的解决方法
- 准备出来的口语_猎头总结
- 解决UNICODE字符集下CStdioFile的Writestring无法写入中文的问题
- Android 软件开发之如何使用Eclipse Debug调试程序详解(十二)