c语言小程序游戏
本代码是我大一刚学完c语言自己编写的,三个游戏分别是飞机竞速、走迷宫和魔塔,满满的都是回忆。
1、不可能的任务-飞机竞速
这种游戏在以前小时候玩的游戏机里面玩过,那时抱着个游戏机一玩就是一下午,如今感觉大型3A电脑游戏也不过如此,回首往事时才发现,那段无忧无虑的时光真是太奢侈了。


#include<stdio.h>
#include<windows.h>
#include<time.h>
int i,j,k,a,b,c,d=0,x=15,y=4,m=1;
char ch,n[21][16]={"###############","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","# #","###############"};void line(int z)
{for(i=0;i<z;i++)printf("\n");
}
void space(int z)
{for(j=0;j<z;j++)printf("\t");
}
void head()
{space(1);printf("不可能完成的任务--飞行游戏 你需要通过‘a’,‘d’两个键来控制战机不被敌方飞机坠毁\n");space(4);printf("你已躲过敌军%d战机的进攻\n",d);for(i=0;i<80;i++)printf("_");printf("\n");
}
void shape1()
{ n[x][y]='*';n[x-1][y]='*';n[x][y-1]='*';n[x][y+1]='*';n[x+1][y]='*';n[x+2][y-1]='*';n[x+2][y+1]='*';
}
void shape2()
{n[x][y]=' ';n[x-1][y]=' ';n[x][y-1]=' ';n[x][y+1]=' ';n[x+1][y]=' ';n[x+2][y-1]=' ';n[x+2][y+1]=' ';
}
void shape3()
{ n[a][b]='*';n[a+1][b]='*';n[a][b-1]='*';n[a][b+1]='*';n[a-1][b]='*';n[a-2][b-1]='*';n[a-2][b+1]='*';
}
void shape4()
{ n[a][b]=' ';n[a+1][b]=' ';n[a][b-1]=' ';n[a][b+1]=' ';n[a-1][b]=' ';n[a-2][b-1]=' ';n[a-2][b+1]=' ';
}
void trawmap()
{for(i=0;i<21;i++){space(4);puts(n[i]);}
}
void move()
{if(kbhit()!=0){ch=getch();if(ch=='d'&&n[x][y+4]!='#'){for(k=0;k<6;k++){shape2();y++;shape1();system("cls");head();trawmap();}}if(ch=='a'&&n[x][y-4]!='#'){for(k=0;k<6;k++){shape2();y--;shape1();system("cls");head();trawmap();}}}
}
void seat(int c,int x)
{if(c==0)a=x,b=4;if(c==1)a=x,b=10;
}
int main()
{ time_t t=time(NULL);srand(t);line(5);space(3);printf("请将输入法调成英文状态!!!");Sleep(3000);system("cls");line(5);space(3);printf("世界末日即将来临,外星人已经做好了攻打地球的准备了\n");Sleep(1000);space(3);printf("地球上最厉害的勇士,准备坐战机攻打敌人老巢\n");Sleep(1000);space(3);printf("然而在太空有许多的敌人,需要绕过他们才能到达敌军基地\n");Sleep(1000);space(3);printf("去吧!勇士,现在是时候来拯救地球啦!!!!!!!!!!\n");Sleep(1000);system("cls");seat(rand()%2,3);shape1();while(d<=50){head();trawmap();move();if(m==3&&d<=30)seat(rand()%2,3);if(m==3&&d>30&&d<=40)seat(rand()%2,7);if(m==3&&d>50)seat(rand()%2,8);m=1;shape4();a++;shape3();if(a==x-2&&b==y){m=2;break;}if(n[a+2][b]=='#'){shape4();m=3;d++;}if(d<=10)Sleep(50);else if(d<20)Sleep(25);else;system("cls");}if(m==2)printf("你方战斗机已被摧毁!!!\n");elseprintf("你已成功躲过敌军五十架战斗机的进攻!\n好样的你拯救了地球\n");while(1);return 0;
}
2、走迷宫
一共有三个迷宫,每个迷宫都隐藏着不同种类的机关,快来探索一下吧。

#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
int i,x,y;//x,y为o点的位置坐标
char ch,n[27][52];//输入字符在ch中来控制o点的移动,原始空地图
void map1()//第一张地图
{char m[27][52]={
"#o#################################################",
"# ### ## # ########### #",
"# # ###### # # # ## # ######### ##### #",
"####### # # # ## # # # #### # # # #",
"# # # # ## # # # # # # # ### ##### # ##### #",
"# # # # ## # ## # # ## ## # # # #",
"# # # ###### # ########## # ########## # ##### # #",
"# # # # # # # # # # # # #",
"# # ########## ### ######## # # # ####### # ##### #",
"# ## ### # # # # # # #",
"##### # ######### # #### # # ########### # #####",
"# # # # # ### # # # #",
"# ## # # #### ###### #### # ######### #### ######",
"# # # # ############### # # # # # ##",
"## ######## # ####### ## # # ## # # ##",
"## # # ##### ## ##### # # # # # # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # # # # # # # ##",
"# # ## # # # ############ ##### ## ######### ##",
"# ## ## ### # # #### # # # ### ## ##",
"# ## ## # # #### # # # ### # # ########",
"# # ######### # # # ####### # ## # #",
"## # # ### # # #### ######## #",
"## ############### # # ##### # ### ####### ### #",
"## # # ## # #",
"#################################################$#"};printf("the one \n");Sleep(1000);
system("cls");for(i=0;i<27;i++)strcpy(n[i],m[i]);//将地图复制到原始空地图里x=0;y=1;//定义o点的原始坐标}
void map2()//第二张地图
{char m[27][52]={
"#o#################################################",
"# ### ## # ########### #",
"# # ###### # # # ## # ######### ##### #",
"####### # # # ## # # # #### # # # #",
"# # # # ## # # # # # # # ### ##### # ##### #",
"# # # # ## # ## # # ## ## # # # #",
"# # # ###### # ########## # ########## # ##### # #",
"# # # # # # # # # # # # #",
"# # ########## ### ######## # # # ####### # ##### #",
"# ## ### # # # # # # #",
"##### # ######### # #### # # ########### # #####",
"# # # # # ### # # # #",
"# ## # # #### ###### #### # ######### #### ######",
"# # # # ############### # # # # # ##",
"## ######## # ####### ## # # ## # # ##",
"## # # #####+## ##### # # # # # # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # # # # # # # # ##",
"# # ## # # # ############ ##### ## ######### ##",
"# ## ## ### # # #### # # # ### ## ##",
"# ## ## # # #### # # # ##### ##########",
"# # ######### # # # ####### #- ## #+ #",
"## # # ### # # ### ######## #",
"## ###############-# # ##### # ### ####### ### #",
"## # # ## # #",
"#################################################$#"};printf("the two \n");printf("当你走到‘-’位置时,会瞬间移动到‘+’位置!\n");Sleep(3000);system("cls");for(i=0;i<27;i++)strcpy(n[i],m[i]);x=0;y=1;}
void map3()//第三张地图
{char m[27][52]={
"#o#################################################",
"# ### ## # ########### #",
"# # ###### # # # ## # ######### ##### #",
"####### # - # # ## # # # #### # # # #",
"# # # # ## # # # # # # # ### ##### # ##### #",
"# # # # ## # ## # # ## ## # # # #",
"# # # ###### # ########## # ########## # ##### # #",
"# # # # # # # # # # # # #",
"# # ########## ### ######## # # # ####### # ##### #",
"# ## ### # # # # # # #",
"##### # ######### # #### # # ########### # #####",
"# # # # # ### # # # #",
"# ## # # #### ###### #### # ######### #### ######",
"# # # # ############### # # # # # ##",
"## ######## # ####### ## # # ## # # ##",
"## # # ##### ## ##### # # # # # # # ##",
"## # #### # ############## # # # ###### ###### # ##",
"## # #### # # # # # # # ##",
"# # ## # # # ############ ##### ## ######### ##",
"# ## ## ### # # #### # # # ### ## ##",
"# ## ## # # #### # # # ### # # ########",
"# # ######### # # # ####### # ## # +#",
"## # # ### # # #### ######## #",
"## ############### # # ##### # ### ####### ### #",
"## # # ## # #",
"#################################################$#"};printf("the three \n");printf("当你走到‘-’位置时,会瞬间移动到‘+’位置!\n");Sleep(2000);system("cls");for(i=0;i<27;i++)strcpy(n[i],m[i]);x=0;y=1;}void move()//通过'w','s','a','d'来控制o点的上下左右移动
{ch=getch();//输入一个字符if(ch=='a'&&n[x][y-1]!='#'){n[x][y]=' ';y--;n[x][y]='o';}if(ch=='d'&&n[x][y+1]!='#'){n[x][y]=' ';y++;n[x][y]='o';}if(ch=='w'&&n[x-1][y]!='#'){n[x][y]=' ';x--;n[x][y]='o';}if(ch=='s'&&n[x+1][y]!='#'){n[x][y]=' ';x++;n[x][y]='o';}
}void drawmap()//画出地图
{ for(i=0;i<27;i++)puts(n[i]);
}void flicker(int x1,int y1,int x2,int y2)//瞬间移动
{system("cls");n[x1][y1]=' ';x=x2;y=y2;n[x][y]='o';drawmap();
}int main()//主函数开始
{printf("欢迎来到走迷宫小游戏!\n你需要控制o点走到$位置!\n");Sleep(2000);system("cls");map1();//输出第一张地图while(1){drawmap();move();if(x==25&&y==49)break;system("cls");}printf("you win!\n");Sleep(1000);system("cls");map2();//输出第二张地图while(1){drawmap();move();if(x==23&&y==18)flicker(23,18,15,17);if(x==21&&y==34)//如果o点到达‘-’,这传送到‘+’点flicker(21,34,21,42);if(x==25&&y==49)break;system("cls");}printf("you win!\n");Sleep(1000);system("cls");map3();//输出第三张地图while(1){drawmap();move();if(x==3&&y==11)//如果o点到达‘-’,这传送到‘+’点{system("cls");n[x][y]=' ';x=21;y=49;n[x][y]='o';drawmap();}if(x==25&&y==49)break;system("cls");}printf("you win!\n");return 0;
}
3、魔塔
魔塔是一种策略类游戏,需要多动脑筋,任何一个轻率的选择都可能导致游戏的失败。这个游戏是我呕心泣血之作,当年为了写出这款游戏,在上课的时候画了一堆图案,研究怎么才能写出只有一种胜利的方法,最后绞尽脑汁弄了出来。PS:当年学长为了追他女神,托我写了这么个游戏,隐藏彩蛋哦。

#include<stdio.h>
#include<windows.h>
#include<string.h>
int i,j,x,y,key=0,attack=0,life=5,money=0,floor,time[7]={0};
int mk[8][8]={0},ma[8][8]={0},ml[8][8]={0},mA[8][8]={0},mB[8][8]={0},mC[8][8]={0},mD[8][8]={0},mM[8][8]={0};
char ch,n[8][8];
char n1[8][8],n2[8][8],n3[8][8],n4[8][8],n5[8][8],n6[8][8];
void entryspace(int x)
{for(i=0;i<x;i++)printf("\t");
}
void entryline(int x)
{for(i=0;i<x;i++)printf("\n");
}
void line()
{for(i=0;i<40;i++)printf("__");printf("\n");
}
void map1()
{char m[8][8]={"#######","# ###$#","#*%#*K#","#AA#AA#","# K+K #","#o### >","#######"};x=5;y=1;for(i=0;i<8;i++)strcpy(n[i],m[i]);
}
void map2()
{char m[8][8]={"#######","# #%# #","##*+%##","##* %##","# #B# #","> + o<","#######"};x=5;y=5;for(i=0;i<8;i++)strcpy(n[i],m[i]);
}
void map3()
{char m[8][8]={"#######","#* BB%#","#A# #%#","# +%#B#","# ###B#","<oKAA >","#######"};x=5;y=1;for(i=0;i<8;i++)strcpy(n[i],m[i]);
}
void map4()
{char m[8][8]={"#>####","#C#C%##","# +B#*#","#B#+C%#","#B# ###","#%#B%o<","#######"};x=5;y=5;for(i=0;i<8;i++)strcpy(n[i],m[i]);
}
void map5()
{char m[8][8]={"#<#####","#o### #","#D+C+D#","#C### #","#D#+D%#","> #%#*#","#######"};x=1;y=1;for(i=0;i<8;i++)strcpy(n[i],m[i]);
}
void map6()
{char m[8][8]={"#######","##MPM##","##DMD##","#DM+ *#","# D#%*#","<oD#*%#","#######"};x=5;y=1;for(i=0;i<8;i++)strcpy(n[i],m[i]);
}
void head()
{entryspace(5);printf("刘怀兵制作\n");line();printf("你需要通过‘w’,‘s’,‘a’,‘d’四个键开控制‘o’点\n");printf("K:钥匙\t+:关着的门\t&:开着的门\t*:生命值+5\t%%:攻击力+1\t>:向上的楼梯\n");printf("A:小怪兽(攻:5,金:1) B:中级怪兽(攻:10,金:2) C:大怪兽(攻:15,金:4) \n");printf("D:巨大怪兽 (攻:20,金:6) M:究极怪兽 (攻:40,金:5)$:商店 \n");line(); printf("生存法则:当你攻击怪兽时,生命会减去你的攻击力减去怪兽的攻击力,生命为零即失败!\n");printf("key=%2d attack=%2d life=%2d money=%2d floor=%2d\n",key,attack,life,money,floor);line();
}
void trawmap()
{entryline(2);for(i=0;i<8;i++){printf("\t\t\t\t\t");puts(n[i]);}
}
void move()
{ch=getch();if(ch=='w'&&n[x-1][y]!='#'){if(n[x-1][y]=='+'){if(key>0){n[x][y]=' ';x--;n[x][y]='o';key--;}}else{n[x][y]=' ';x--;n[x][y]='o';}}if(ch=='s'&&n[x+1][y]!='#'){if(n[x+1][y]=='+'){if(key>0){n[x][y]=' ';x++;n[x][y]='o';key--;}}else{n[x][y]=' ';x++;n[x][y]='o';}}if(ch=='a'&&n[x][y-1]!='#'){if(n[x][y-1]=='+'){if(key>0){n[x][y]=' ';y--;n[x][y]='o';key--;}}else{n[x][y]=' ';y--;n[x][y]='o';}}if(ch=='d'&&n[x][y+1]!='#'){if(n[x][y+1]=='+'){if(key>0){n[x][y]=' ';y++;n[x][y]='o';key--;}}else{n[x][y]=' ';y++;n[x][y]='o';}}
}
void Key(int n,int k)
{if(x==n&&y==k&&mk[n][k]==0){mk[n][k]=1;key++;}
}
void Attack(int n,int k)
{if(x==n&&y==k&&ma[n][k]==0){ma[n][k]=1;attack++;}
}
void Life(int n, int k)
{if(x==n&&y==k&&ml[n][k]==0){ml[n][k]=1;life+=5;}
}
void A(int n,int k)
{if(x==n&&y==k&&mA[n][k]==0){mA[n][k]=1;if(attack<5)life-=5-attack;money++;}
}
void B(int n,int k)
{if(x==n&&y==k&&mB[n][k]==0){mB[n][k]=1;if(attack<10)life-=10-attack;money+=2;}
}
void C(int n,int k)
{if(x==n&&y==k&&mC[n][k]==0){mC[n][k]=1;if(attack<15)life-=15-attack;money+=4;}
}
void E(int n,int k)
{if(x==n&&y==k&&mD[n][k]==0){mD[n][k]=1;if(attack<20)life-=20-attack;money+=6;}
}
void M(int n,int k)
{if(x==n&&y==k&&mM[n][k]==0){mM[n][k]=1;if(attack<40)life-=40-attack;money+=5;}
}
void Door(int m,int k)
{if(n[m][k]==' ')n[m][k]='&';
}
void Store(int m,int k)
{if(x==m&&y==k){printf("欢迎来到商店\n按1 K $3\n按2 * $4\n按3 %% $5");ch=getch();if(ch=='1'){money-=3;if(money<0){printf("钱不够了");money+=3;key--;}key++;}if(ch=='2'){money-=4;if(money<0){printf("钱不够了");money+=4;life-=5;}life+=5;}if(ch=='3'){money-=5;if(money<0){printf("钱不够了");money+=5;attack--;}attack++;}}
}
void U(int k,int m)
{if(n[k][m]==' ')n[k][m]='>';
}
void D(int k,int m)
{if(n[k][m]==' ')n[k][m]='<';
}
void love()
{char m[8][33]={"################################","# ### ## ## # # ### # # #","# # # # # # # # # # # # # #","# # # # # # ## ### # #","# # # # ### # # ## # #","# ### # # # # ## # #","################################"};for(i=0;i<8;i++){puts(m[i]);}
}
int main()
{printf("开始前请将输入法调成英文状态");entryline(5);printf("王子和公主在森林玩耍,突然大魔王来了,抓走了公主!!!");Sleep(2000);system("cls");entryline(5);printf("王子为了救公主,去了魔王所在的魔塔里,并决心与他一决生死!");Sleep(2000);system("cls");entryline(5);printf("现在你就是那位王子,已经在魔塔里了,去吧,动用你的智慧救出公主吧!");Sleep(2000);system("cls");floor=1;while(1){if(floor==1){ head();if(time[1]==0){map1();}else{for(i=0;i<8;i++)strcpy(n[i],n1[i]);}while(1){trawmap();move();Key(4,2);Key(4,4);Key(2,5);Attack(2,2);Life(2,1);Life(2,4);A(3,1);A(3,2);A(3,4);A(3,5);Door(4,3);Store(1,5);if(life<=0){floor=0;printf("你失败了!别气馁,再来一次,公主还在等着你救他呢!\n");printf("关闭后重新调试即可\n");Sleep(3000);break;}if(n[1][5]==' ')n[1][5]='$';system("cls");U(5,6);if(x==5&&y==6){floor=2;n[5][6]='>';n[5][5]='o';x=5;y=5;for(i=0;i<8;i++)strcpy(n1[i],n[i]);time[1]=1;break;}head();}}if(floor==2){ head();if(time[2]==0){map2();}else{ for(i=0;i<8;i++)strcpy(n[i],n2[i]);}while(1){trawmap();move();Life(2,2);Life(3,2);Attack(2,4);Attack(3,4);Attack(1,3);B(4,3);Door(5,3);Door(2,3);if(life<=0){floor=0;printf("你失败了!别气馁,再来一次,公主还在等着你救他呢!\n");printf("关闭后重新调试即可\n");Sleep(3000);break;}system("cls");U(5,0);D(5,6);if(x==5&&y==6){floor=1;n[5][6]='<';n[5][5]='o';x=5;y=5;for(i=0;i<8;i++)strcpy(n2[i],n[i]);time[2]=1;break;}if(x==5&&y==0){floor=3;n[5][0]='>';n[5][1]='o';x=5;y=1;for(i=0;i<8;i++)strcpy(n2[i],n[i]);time[2]=1;break;}head();}}if(floor==3){head();if(time[3]==0){map3();}else{for(i=0;i<8;i++)strcpy(n[i],n3[i]);}while(1){trawmap();move();Key(5,2);Attack(3,3);Attack(1,5);Attack(2,5);A(5,3);A(5,4);A(2,1);B(1,3);B(1,4);B(3,5);B(4,5);Life(1,1);Door(3,2);if(life<=0){floor=0;printf("你失败了!别气馁,再来一次,公主还在等着你救他呢!\n");printf("关闭后重新调试即可\n");Sleep(3000);break;}system("cls");U(5,6);D(5,0);if(x==5&&y==0){floor=2;n[5][0]='<';n[5][1]='o';x=5;y=1;for(i=0;i<8;i++)strcpy(n3[i],n[i]);time[3]=1;break;}if(x==5&&y==6){floor=4;n[5][6]='>';n[5][5]='o';x=5;y=5;for(i=0;i<8;i++)strcpy(n3[i],n[i]);time[3]=1;break;}head();}}if(floor==4){head();if(time[4]==0){map4();}else{for(i=0;i<8;i++)strcpy(n[i],n4[i]);}while(1){trawmap();move();Attack(5,4);Attack(1,4);Attack(3,5);Attack(5,1);B(5,3);B(2,3);B(3,1);B(4,1);C(1,1);C(1,3);C(3,4);Life(2,5);Door(2,2);Door(3,3);if(life<=0){floor=0;printf("你失败了!别气馁,再来一次,公主还在等着你救他呢!\n");printf("关闭后重新调试即可\n");Sleep(3000);break;}system("cls");U(0,1);D(5,6);if(x==5&&y==6){floor=3;n[5][6]='<';n[5][5]='o';x=5;y=5;for(i=0;i<8;i++)strcpy(n4[i],n[i]);time[4]=1;break;}if(x==0&&y==1){floor=5;n[0][1]='>';n[1][1]='o';x=1;y=1;for(i=0;i<8;i++)strcpy(n4[i],n[i]);time[4]=1;break;}head();}}if(floor==5){head();if(time[5]==0){map5();}else{for(i=0;i<8;i++)strcpy(n[i],n5[i]);}while(1){trawmap();move();Attack(5,3);Attack(4,5);Life(5,5);C(3,1);C(2,3);E(2,1);E(4,1);E(2,5);E(4,4);Door(2,2);Door(2,4);Door(4,3);if(life<=0){floor=0;printf("你失败了!别气馁,再来一次,公主还在等着你救他呢!\n");printf("关闭后重新调试即可\n");Sleep(3000);break;}system("cls");D(0,1);U(5,0);if(x==0&&y==1){floor=4;n[0][1]='<';n[1][1]='o';x=1;y=1;for(i=0;i<8;i++)strcpy(n5[i],n[i]);time[5]=1;break;}if(x==5&&y==0){floor=6;n[5][0]='<';n[5][1]='o';x=5;y=1;for(i=0;i<8;i++)strcpy(n5[i],n[i]);time[5]=1;break;}head();}}if(floor==6){head();if(time[6]==0){map6();}else{for(i=0;i<8;i++)strcpy(n[i],n6[i]);}while(1){trawmap();move();Attack(4,4);Attack(5,5);Life(3,5);Life(4,5);Life(5,4);M(1,2);M(1,4);M(3,2);M(2,3);Door(3,3);E(3,1);E(4,2);E(5,2);E(2,2);E(2,4);if(n[1][3]==' ')n[1][3]='P';if(n[1][2]!='M'&&n[1][4]!='M'&&n[2][3]!='M'){printf("我亲爱的公主,我终于找到你了!");love();Sleep(3000);floor=7;break;}if(life<=0){floor=0;printf("你被怪兽击败了!别气馁,再来一次,公主还在等着你救他呢!\n");printf("关闭后重新调试即可\n");Sleep(3000);break;}system("cls");D(5,0);if(x==5&&y==0){floor=5;n[5][0]='<';n[5][1]='o';x=5;y=1;for(i=0;i<8;i++)strcpy(n6[i],n[i]);time[6]=1;break;}head();}}if(floor==0||floor==7)break;}return 0;
}
















