C编程游戏(c编程游戏代码)

2023-11-16 02:02:02 数码极客 bianji01

 

一种C语言小游戏程序设计(程序已经附上)

"扫雷"小游戏C代码

#include

#include

#include

#include

main()

{chara[102][102],b[102][102],c[102][102],w;

inti,j;/*循环变量*/

intx,y,z[999];/*雷的位置*/

intt,s;/*标记*/

intm,n,lei;/*计数*/

intu,v;/*输入*/

inthang,lie,ge,mo;/*自定义变量*/

srand((int)time(NULL));/*启动随机数发生器*/

leb1:/*选择模式*/

printf("\n请选择模式:\n1.标准2.自定义\n");

scanf("%d",&mo);

if(mo==2)/*若选择自定义模式,要输入三个参数*/

{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)/*确定雷的位置*/

{t=0;z[i]=rand()%(hang*lie);

for(j=1;j

}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;/*以下是游戏设计*/

{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("|");

elseprintf("%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]==@)

gotoleb2;

if(w==#)

{if(a[u][v]==+){a[u][v]=@;lei=lei-1;}

elseif(a[u][v]==@){a[u][v]=?;lei=lei+1;}

elseif(a[u][v]==?){a[u][v]=+;}

gotoleb2;

a[u][v]=b[u][v];

leb3:/*打开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)gotoleb3;

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("|");

elseprintf("%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");

elseprintf("游戏结束!\n");

printf("重玩请输入1\n");

scanf("%d",&t);

if(t==1)gotoleb1;

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

教你如何使用C语言编写简单小游戏

爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦,枯燥的事,它变得象电脑游戏一样充满好,富有乐趣.1,总是从Hello,world开始学习编程的第一个程序,一般就是打印一个亲切的词语——"Hello,world!".让我们来看看这个最简单的C程序:#incolude/*把输入输出函数的头文件包含进来*/intmain(){printf("Hello,world!");/*在屏幕上输出字符串"Hello,world!"*/return0;/*退出main函数,并返回0*/}下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过.2,每执行这个程序一次都能看见上次运行留下的字符.3,我们还希望屏幕输出一个笑脸来欢迎我们.让我们来改进一下这个程序吧!1,在return语句的前面加一句:getch();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可以用printf("%c",2)来输出一个笑脸.现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧!2,心动的开始,一个运动中的笑脸大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构:structmove_point{intx,y;/*该点的位置,包括x坐标和y坐标*/intxv,yv;/*该点在x轴,y轴的速度*/};运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码:gotoxy(man.x,man.y);/*把光标移到指定的坐标*/printf("");/*输出一个空格,把先前的字符擦去*/然后我们让物体按其速度运动:man.x+=man.xv;/*水平方向按x轴的速度运动*/man.y+=man.yv;/*垂直方向按y轴的速度运动*/运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸:gotoxy(man.x,man.y);printf("%c\b",2);/*输出ASCII码值为2的"笑脸"字符*/怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能让我们来控制它运动呢?不过这个程序没有什么目的,也没有什么判断胜负的条件.下面我们就利用这个能控制它移动的笑脸来做一个更有趣的游戏吧!4,在迷宫中探索小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜欢玩,还常到一些书上找迷宫玩呢.好的,现在我们用C语言来编个迷宫的游戏,重温一下童年的乐趣.首先,我们定义一个二维数组map,用它来保存迷宫的地图,其中map[x][y]==#表示在(x,y)坐标上的点是墙壁.DrawMap函数在屏幕上输出迷宫的地图和一些欢迎信息.在main函数里,我们定义了"小人"man的坐标和"目的地"des的坐标.在游戏循环中,我们增加了一些用来判断胜负的语句:if(man.x==des.x&&man.y==des.y)/*如果人的坐标等于目的地的坐标*/{gotoxy(35,3);printf("Ok!Youwin!");/*输出胜利信息*/….}在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不是有"墙壁",如果有的话,就不能往前移动了.好的,我们在判断按键的switch语句的各个分支加上了判断语句,如下:if(map[…][…]==#)break;/*如果前面是墙壁,就不执行下去*/哇噻!真棒,我们做出了一个完整的游戏了.当然你还可以通过修改二维数组map来修改迷宫的地图,让它更有挑战性.不过,我们要设计一个更好玩的游戏——5,聪明的搬运工大家一定玩过"搬运工"的游戏吧!这是在电脑和电子字典上较流行的益智游戏,让我们动手做一个属于自己的"搬运工"吧!程序依然用数组map来保存地图,数组元素如果为空格则表示什么也没有,b表示箱子,#表示墙壁,*表示目的地,i表示箱子在目的地.我们以后每推一下箱子,不但要改变屏幕的显示,也要改变map相应元素的值.游戏的主循环依然是接受按键.当接收一个方向键,需要判断小人前面一格的状态,如果是空地或目的地,则人物可以直接移动;如果是墙壁,则不可移动;如果是箱子或目的地上的箱子,则需要继续判断箱子前面一格的状态:如果前一格是空地或目的地,则人推箱子前进,否则不可移动.好的,我们在switch中增加了这些判断语句.程序还有一个重要的功能就是判断胜利.数组Des用来记录全部目的地的坐标,我们每执行一步操作后,程序就要通过Des数组判断这些目的地上是否都有箱子了.真棒啊!我们可以做游戏了.而且是一个老少皆宜,趣味十足的游戏呢!当然,我们可以通过修改map数组来制作不同的游戏地图,我们还可以相互分享好的游戏地图呢.尾声:在C++等高级语言还没出来的时候,很多应用程序也是C语言开发的.C语言在与硬件联系紧密的编程中,也占有重要地位.其实我觉得学习编程,可以通过一些小游戏,实用的例子来学习.象学习音乐的人,不是要等到把全部乐理学完后才演奏一个完整的曲子.而是刚开始学时就有一些简单的曲子让你演奏,让你立刻就有成就感,让你很快就能卖弄出来在别人面前表现自己了.通过编游戏来学习编程,把学习变成游戏,不失为学习计算机的一种好方法.好了,编游戏就这么简单,希望大家也尝试用C语言或其他的语言来做几个自己喜欢的小游戏.

c语言:猜数字游戏代码

加了得分榜,没写排序,没时间了。自己加一下就OK#include #include #include #include //以上的是要用到的头文件int score=0;void SELECT(int);void Guess(int,int);void Select();void letsgo();void NB(int); //以上的是函数原型struct PLAYER{char name[10];int plscore;};void save(){printf("您的得分是%i",score);PLAYER player;printf("请输入姓名:");scanf("%s",player.name);player.plscore=score;FILE *fp;if((fp=fopen("record.txt","ab"))==NULL){printf("不能打开文件!");exit(0);}fwrite(&player,sizeof(PLAYER),1,fp);printf("记录保存完毕!");fclose(fp);}void print(){ printf("分数榜:"); FILE *fp;if((fp=fopen("record.txt","rb"))==NULL){printf("不能打开文件!");exit(0);}PLAYER player;while(fread(&player,sizeof(PLAYER),1,fp)==1){ printf("\n姓名:%s\n",player.name); printf("分数:%i\n",player.plscore);}fclose(fp);}void main(){char end;printf(" \t\t欢迎光临!!\n\t 在这里我将来测试你的运气!\n");printf(" 请你猜下数字,但机会就只有三次!!\n");printf("\n 1、开始游戏^__^\n 2、我是倒霉鬼,我不玩\n 3、查看分数榜");printf(" 请选择1或2\n");Select();printf("\n按任意键退出");fflush(stdin);end=getchar();if(score>0)save();printf("Thanks For Playing \2 886\n");}void Select(){int s;static int lihai=0;fflush(stdin);scanf("%d",&s);switch(s){case 1:letsgo();break;case 2:printf("唉,你不想玩,我就不逼你咯\n");exit(0);case 3:print(); break;default:lihai++;if(lihai==3||lihai==5){NB(lihai);break;}printf("你输入的是什么啊!重新输入< 1 或 2 >\n ");Select();}}void letsgo(){int select;printf("请你选择猜数字的难度\n ");printf("1、简单->猜测 0 到 9 的数字\n ");printf("2、一般->猜测 0 到 99 的数字\n ");printf("3、困难->猜测 0 到 999 的数字\n ");printf("<请不要乱选!!>\n");scanf("%d",&select);switch(select){case 1:SELECT(10);break;case 2:SELECT(100);break;case 3:SELECT(1000);break;case 4:print();default:{printf("请不要乱选!!\n");letsgo();}}}void NB(int l){char a[20];static int jihui=0;printf("\n老大!我服了你,%d 次都输入错误。\n",l);printf("\n<可能你在捣乱~~>\n");printf("(如果不想结束,请输入[sorry]<中括号内的>否则结束游戏)\n");fflush(stdin);gets(a);if (strcmp(a,"sorry")==0||strcmp(a,"SORRY")==0){jihui++;if(jihui==2){printf("\n死性不改。道歉也没有用了!\n");goto end;}printf("好吧。给你次机会<请输入 1 或 2 >\n ");Select();}end:printf("");}void SELECT(int n){int num;srand((unsigned)time(NULL));num=rand()%n;if(n==10){n=3;printf("\n你有 %d 次猜测的机会\n",n);}if(n==100){n=5;printf("\n你有 %d 次猜测的机会\n",n);}if(n==1000){n=7;printf("\n你有 %d 次猜测的机会\n",n);}Guess(num,n);}void Guess(int num,int n){int search,k,o;static int i=1;char ans;if(n==3)k=10;if(n==5)k=100;if(n==7)k=1000;o=(num-k/1)%k;if(o<0)o=0;printf("\n请猜这个数是多少(在<%d>到<%d>):",o,(k/5+num)%k);fflush(stdin);scanf("%d",&search);if(num>search)printf("\n小了\n");if(num

怎么用c语言做游戏

怎么用c语言做游戏还需要图像部分。建议您学习下sdl语言 除去逻辑和计算部分,还需图像处理的。或者用win32编程也行。

声明:易趣百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系315127732@qq.com
广告位招租
横幅广告