赞
踩
本代码是我大一刚学完c语言自己编写的,三个游戏分别是飞机竞速、走迷宫和魔塔,满满的都是回忆。
这种游戏在以前小时候玩的游戏机里面玩过,那时抱着个游戏机一玩就是一下午,如今感觉大型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"); else printf("你已成功躲过敌军五十架战斗机的进攻!\n好样的你拯救了地球\n"); while(1); return 0; }
一共有三个迷宫,每个迷宫都隐藏着不同种类的机关,快来探索一下吧。
#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; }
魔塔是一种策略类游戏,需要多动脑筋,任何一个轻率的选择都可能导致游戏的失败。这个游戏是我呕心泣血之作,当年为了写出这款游戏,在上课的时候画了一堆图案,研究怎么才能写出只有一种胜利的方法,最后绞尽脑汁弄了出来。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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。