问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

(完整word版)纯C语言写的一个小型游戏 源代码

发布网友 发布时间:2022-04-19 13:34

我来回答

1个回答

热心网友 时间:2023-07-14 06:39

"扫雷"小游戏C代码

#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
main( )
{char a[102][102],b[102][102],c[102][102],w;
int i,j;  /*循环变量*/
int x,y,z[999];  /*雷的位置*/
int t,s;  /*标记*/
int m,n,lei;  /*计数*/
int u,v;  /*输入*/
int hang,lie,ge,mo;  /*自定义变量*/
srand((int)time(NULL));  /*启动随机数发生器*/
leb1:  /*选择模式*/
printf("\n   请选择模式:\n   1.标准  2.自定义\n");
scanf("%d",&mo);
if(mo==2)  /*若选择自定义模式,要输入三个参数*/
{do
{t=0; printf("请输入\n行数 列数 雷的个数\n");
scanf("%d%d%d",&hang,&lie,&ge);
if(hang<2){printf("行数太少\n"); t=1;}
if(hang>100){printf("行数太多\n");t=1;}
if(lie<2){printf("列数太少\n");t=1;}
if(lie>100){printf("列数太多\n");t=1;}
if(ge<1){printf("至少要有一个雷\n");t=1;}
if(ge>=(hang*lie)){printf("雷太多了\n");t=1;}
}while(t==1);
}
else{hang=10,lie=10,ge=10;}  /*否则就是选择了标准模式(默认参数)*/
for(i=1;i<=ge;i=i+1)  /*确定雷的位置*/
{do
{t=0; z[i]=rand( )%(hang*lie);
for(j=1;j<i;j=j+1){if(z[i]==z[j]) t=1;}
}while(t==1);
}
for(i=0;i<=hang+1;i=i+1)  /*初始化a,b,c*/
{for(j=0;j<=lie+1;j=j+1) {a[i][j]='1'; b[i][j]='1'; c[i][j]='0';} }
for(i=1;i<=hang;i=i+1)
{for(j=1;j<=lie;j=j+1) {a[i][j]='+';} }
for(i=1;i<=ge;i=i+1)  /*把雷放入c*/
{x=z[i]/lie+1; y=z[i]%lie+1; c[x][y]='#';}
for(i=1;i<=hang;i=i+1)  /*计算b中数字*/
{for(j=1;j<=lie;j=j+1)
{m=48;
if(c[i-1][j-1]=='#')m=m+1; if(c[i][j-1]=='#')m=m+1;
if(c[i-1][j]=='#')m=m+1;  if(c[i+1][j+1]=='#')m=m+1;
if(c[i][j+1]=='#')m=m+1;  if(c[i+1][j]=='#')m=m+1;
if(c[i+1][j-1]=='#')m=m+1; if(c[i-1][j+1]=='#')m=m+1;
b[i][j]=m;
}
}
for(i=1;i<=ge;i=i+1)  /*把雷放入b中*/
{x=z[i]/lie+1; y=z[i]%lie+1; b[x][y]='#';}

lei=ge;  /*以下是游戏设计*/
do
{leb2:  /*输出*/
system("cls");printf("\n\n\n\n");

printf("    ");
for(i=1;i<=lie;i=i+1)
{w=(i-1)/10+48; printf("%c",w);
w=(i-1)%10+48; printf("%c  ",w);
}
printf("\n   |");
for(i=1;i<=lie;i=i+1){printf("---|");}
printf("\n");
for(i=1;i<=hang;i=i+1)
{w=(i-1)/10+48; printf("%c",w);
w=(i-1)%10+48; printf("%c |",w);
for(j=1;j<=lie;j=j+1)
{if(a[i][j]=='0')printf("   |");
else printf(" %c |",a[i][j]);
}
if(i==2)printf(" 剩余雷个数");
if(i==3)printf(" %d",lei);
printf("\n   |");
for(j=1;j<=lie;j=j+1){printf("---|");}
printf("\n");
}

scanf("%d%c%d",&u,&w,&v);  /*输入*/
u=u+1,v=v+1;
if(w!='#'&&a[u][v]=='@')
goto leb2;
if(w=='#')
{if(a[u][v]=='+'){a[u][v]='@'; lei=lei-1;}
else if(a[u][v]=='@'){a[u][v]='?'; lei=lei+1;}
else if(a[u][v]=='?'){a[u][v]='+';}
goto leb2;
}
a[u][v]=b[u][v];

leb3:  /*打开0区*/
t=0;
if(a[u][v]=='0')
{for(i=1;i<=hang;i=i+1)
{for(j=1;j<=lie;j=j+1)
{s=0;
if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;
if(a[i-1][j]=='0')s=1;  if(a[i+1][j-1]=='0')s=1;
if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;
if(a[i][j-1]=='0')s=1;  if(a[i][j+1]=='0')s=1;
if(s==1)a[i][j]=b[i][j];
}
}
for(i=1;i<=hang;i=i+1)
{for(j=lie;j>=1;j=j-1)
{s=0;
if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;
if(a[i-1][j]=='0')s=1;  if(a[i+1][j-1]=='0')s=1;
if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;
if(a[i][j-1]=='0')s=1;   if(a[i][j+1]=='0')s=1;
if(s==1)a[i][j]=b[i][j];
}
}
for(i=hang;i>=1;i=i-1)
{for(j=1;j<=lie;j=j+1)
{s=0;
if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;
if(a[i-1][j]=='0')s=1;  if(a[i+1][j-1]=='0')s=1;
if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;
if(a[i][j-1]=='0')s=1;  if(a[i][j+1]=='0')s=1;
if(s==1)a[i][j]=b[i][j];
}
}
for(i=hang;i>=1;i=i-1)
{for(j=lie;j>=1;j=j-1)
{s=0;
if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;
if(a[i-1][j]=='0')s=1;  if(a[i+1][j-1]=='0')s=1;
if(a[i+1][j+1]=='0')s=1;if(a[i+1][j]=='0')s=1;
if(a[i][j-1]=='0')s=1;  if(a[i][j+1]=='0')s=1;
if(s==1)a[i][j]=b[i][j];
}
}

for(i=1;i<=hang;i=i+1)  /*检测0区*/
{for(j=1;j<=lie;j=j+1)
{if(a[i][j]=='0')
{if(a[i-1][j-1]=='+'||a[i-1][j-1]=='@'||a[i-1][j-1]=='?')t=1;
if(a[i-1][j+1]=='+'||a[i-1][j+1]=='@'||a[i-1][j+1]=='?')t=1;
if(a[i+1][j-1]=='+'||a[i+1][j-1]=='@'||a[i+1][j-1]=='?')t=1;
if(a[i+1][j+1]=='+'||a[i+1][j+1]=='@'||a[i+1][j+1]=='?')t=1;
if(a[i+1][j]=='+'||a[i+1][j]=='@'||a[i+1][j]=='?')t=1;
if(a[i][j+1]=='+'||a[i][j+1]=='@'||a[i][j+1]=='?')t=1;
if(a[i][j-1]=='+'||a[i][j-1]=='@'||a[i][j-1]=='?')t=1;
if(a[i-1][j]=='+'||a[i-1][j]=='@'||a[i-1][j]=='?')t=1;
}
}
}
if(t==1)goto leb3;
}

n=0;  /*检查结束*/
for(i=1;i<=hang;i=i+1)
{for(j=1;j<=lie;j=j+1)
{if(a[i][j]!='+'&&a[i][j]!='@'&&a[i][j]!='?')n=n+1;}
}
}
while(a[u][v]!='#'&&n!=(hang*lie-ge));

for(i=1;i<=ge;i=i+1)  /*游戏结束*/
{x=z[i]/lie+1; y=z[i]%lie+1; a[x][y]='#'; }
printf("    ");
for(i=1;i<=lie;i=i+1)
{w=(i-1)/10+48; printf("%c",w);
w=(i-1)%10+48; printf("%c  ",w);
}
printf("\n   |");
for(i=1;i<=lie;i=i+1){printf("---|");}
printf("\n");
for(i=1;i<=hang;i=i+1)
{w=(i-1)/10+48; printf("%c",w);
w=(i-1)%10+48; printf("%c |",w);
for(j=1;j<=lie;j=j+1)
{if(a[i][j]=='0')printf(" |");
else  printf(" %c |",a[i][j]);
}
if(i==2)printf(" 剩余雷个数");
if(i==3)printf(" %d",lei); printf("\n   |");
for(j=1;j<=lie;j=j+1) {printf("---|");}
printf("\n");
}
if(n==(hang*lie-ge)) printf("你成功了!\n");
else printf("    游戏结束!\n");
printf("    重玩请输入1\n");
t=0;
scanf("%d",&t);
if(t==1)goto leb1;
}

/*注:在DEV c++上运行通过。行号和列号都从0开始,比如要确定第0行第9列不是“雷”,就在0和9中间加入一个字母,可以输入【0a9】三个字符再按回车键。3行7列不是雷,则输入【3a7】回车;第8行第5列是雷,就输入【8#5】回车,9行0列是雷则输入【9#0】并回车*/

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
摩托证是什么证 什么是摩托驾驶证 土豆到底是个啥? 怎样提取碘水中的碘单质 怎么从碘的四氯化碳溶液中提取单质碘? 纪委书记在哪个app播 昆明公积金提取多久到 g1840处理器怎么升级 赛扬G1840能配什么主板 风管机不出风怎么处理 (完整word版)大学生创业计划书 (完整word版)建设工程施工合同纠纷司法解释一、二 (完整word版)个人租房合同(标准版) 怎样把整个word文件的完整页截屏下来? 怎么把word的内容完整的复制到另一个word 红米 Note4怎么设置定时开关机? 红米手机怎么取消定时关机 手机怎连接打印机呢? 手机可以连打印机打印吗 红米note3怎样设置定时开关机 多少岁算高龄产妇? 多大年纪生孩子算高龄产妇 多大年龄算是高龄产妇啊? 女人多大年龄算高龄产妇? 关于高龄产妇,什么才算高龄产妇? 多少岁算是高龄产妇? 一般多大年纪的妇女,算高龄产妇? 几岁算是高龄产妇? 多大算高龄产妇? 多大年龄的产妇,才算高龄产妇? (完整word版)调查问卷模板 如何把一个完整的word文档分页隔开 怎样截完整的word一页? 如何让word中图片显示完整 大家好我想下载word文档(完整版) word官方下载(正版)免费完整版2007 一篇完整的word文档在打印预览中显示的只有一半文... 如何显示完整的word菜单,而不是点向下的箭头才能... word页面如何显示完整? 在excel中插入完整的WORD文档 怎么把一个 word文档完整复制到另一个 word2010谁有免费完整版啊? WORD域代码详解完整版 红米note4定时开关机在哪里设置? 很纠结我的华为mate20pro要不要升级鸿蒙系统?还有... 你们的华为mate20pro一晚上耗电多少,我怎么感觉耗... 你好,我的手机mate20Pro夜里突然开不了机了,请问... 华为mate20pro解决绿屏问题了吗? 华为mate20pro手机刷抖音突然一下白屏了咋回事 OPP... 华为mate20pro哪个系统最好用?