速求一款c语言编写的小游戏代码 ——骑士飞行棋
一款C语言小游戏——骑士飞行棋 ,希望有会的前辈们能共享出来,让晚辈学习学习,实在是能力有限,暂时还写不出此程序,希望有代码的前辈出来指点,代码最好
#include "stdio.h"
#include "windows.h"
#include "conio.h"
#include "stdlib.h"
#include "time.h"
void restart(int map[100])
{int m[100]={100,0,0,0,0,2,1,0,0,3,0,0,0,2,0,0,0,2,0,0,4,0,0,1,0,4,0,3,0,0,0,0,0,2,0,0,0,0,2,0,1,0,0,0,0,4,0,0,0,0,2,0,0,0,0,1,0,0,0,0,3,0,0,4,2,0,0,0,0,1,0,0,4,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,4,0,4,0,0,3,2,0,0,0,0,0 };
/*这里是地图代码*/
int i;
FILE * fp = fopen("map.txt","r");
if(fp != 0)
{
printf("找到地图。尝试加载地图……");
for(i=0;i<100;i++)
{
fscanf(fp,"%d",&map[i]);
if(map[i] != 0 && map[i] != 1 && map[i] != 2 && map[i] != 3 && map[i] != 4 && map[i] != 10 && map[i] != 20 && map[i] != 100)
{
map[i]=m[i];
}
}
fclose(fp);
}
else
{
printf("未找到地图。加载默认地图中……");
for(i=0;i<100;i++)
map[i]=m[i];
}
printf("地图加载完成");
Sleep(500);
}
/*用来给map数组赋值*/ /*用来输出游戏规则*/
/*用来输出地图*/
void printmap(int map[])
{int i=0,j=1;
printf("'∷'是平地,'¤'是幸运罗盘,'★'是地雷,'■'是暂停,'〓'是时空隧道\n");
printf("\n");
for(i=0;i<31;i++)
{switch(map[i])
{
case 0:printf("∷");break;
case 1:printf("¤");break;
case 2:printf("★");break;
case 3:printf("■");break;
case 4:printf("〓");break;
case 10:printf("A");break;
case 20:printf("B");break;
case 100:printf("@@");break;
}
}printf("\n");
for(;i<35;i++)
{
switch(map[i])
{
case 0:printf(" ∷\n");break;
case 1:printf(" ¤\n");break;
case 2:printf(" ★\n");break;
case 3:printf(" ■\n");break;
case 4:printf(" 〓\n");break;
case 10:printf(" A\n");break;
case 20:printf(" B\n");break;
}
}
for(;i<66;i++)
{
switch(map[66-(j++)])
{
case 0:printf("∷");break;
case 1:printf("¤");break;
case 2:printf("★");break;
case 3:printf("■");break;
case 4:printf("〓");break;
case 10:printf("A");break;
case 20:printf("B");break;
}} printf("\n");
for(;i<69;i++)
{
switch(map[i])
{
case 0:printf("∷\n");break;
case 1:printf("¤\n");break;
case 2:printf("★\n");break;
case 3:printf("■\n");break;
case 4:printf("〓\n");break;
case 10:printf("A\n");break;
case 20:printf("B\n");break;
}}
for(;i<100;i++)
{
switch(map[i])
{
case 0:printf("∷");break;
case 1:printf("¤");break;
case 2:printf("★");break;
case 3:printf("■");break;
case 4:printf("〓");break;
case 10:printf("A");break;
case 20:printf("B");break;
case 100:printf("@@");break;
}
}
printf("\n");
printf("\n");
}
/*用来输出地图*/
/* 拟定双人游戏规则及产生走路动画*/
int _flash(int map[],int ss,int *pl,int *pl2,int whatplayer)
{int i, t;
time_t now,d;
char c;
printf("%d!",ss);
Sleep(100);
if(whatplayer==1)
{for(i=0;i<100;i++)
{if(map[i]==10)
{map[i]=0;
break;}}
for(i=1;i<=ss;i++)
{
system("cls");
printmap(map);
if(*pl+ss>=99 || *pl2+ss>=99)
{if(*pl+ss>=99)
{*pl=99;
return 0;}
else if(*pl2+ss>=99)
{*pl2=99;
return 0;}
}
t=map[*pl+i]; map[*pl+i]=10; Sleep(100);
system("cls");
printmap(map);
Sleep(100);
map[*pl+i]= t;
}
Sleep(50);
system("cls");
*pl=*pl+ss;
if(map[*pl]==1)
{printf("恭喜来到幸运罗盘!\n");
printf("请做出选择:\n");
printf("按1.和对方骑兵交换位置 按2.轰炸对方骑兵(炸退六步) 按其他键: 还是算了\n");
c=getch();
switch(c)
{case '1':printf("嗖嗖嗖............\n");Sleep(500);
printf("B: \" ??? 怎么回事?? \" \n");
Sleep(300); t=*pl;
*pl=*pl2;
*pl2= t;
system("cls");
Sleep(50)
;break;
case '2':printf("A: \" 炸弹归来...... \" \n");
Sleep(500);printf("B: \" 哎呦喂! \" \n");
Sleep(300);map[*pl2]=0;*pl2=*pl2-6;
if(map[*pl]==map[*pl2])
{Sleep(300);
printf("B: \" :-D 哈哈哈哈...踩到了! \" \n");
Sleep(800);
map[0]=20;
map[*pl]=0;
*pl=0;
system("cls");
}
if(*pl2<0)
*pl2=0;
system("cls");
Sleep(50);
break;
}
}
else if(map[*pl]==2)
{Sleep(300);
printf("A: \" ~~:-( 踩到地雷,气死了......\" \n");
Sleep(50);
Sleep(300);
map[*pl]=0;
*pl=*pl-6;
if(map[*pl]==map[*pl2])
{Sleep(300);
printf("A: \" :-D 哈哈哈哈...踩到了! \" \n");
Sleep(800);
map[0]=20;
map[*pl2]=0;
*pl2=0;
system("cls");
}
if(*pl<0)*pl=0;
system("cls");
}
else if(map[*pl]==3)
{printf("~~>_<~~ 要停战一局了。");
Sleep(1750);
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
{*pl=99;
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
system("cls");
printmap(map);
printf("请玩家2按任意键投掷骰子:\n");
d=getch();
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
{*pl=99;
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
printf("丁零当啷......");
Sleep(1000);
now=time(NULL);
d+=now;
while(d>3)
d=d/(rand()%5+1);
_flash(map,d+1+rand()%2,pl,pl2,2);
system("cls"); }
else if(map[*pl]==4)
{Sleep(300);
printf("A: \" |-p 进入时空隧道,真爽! \" \n");
Sleep(50);
Sleep(1000);
map[*pl]=0;
*pl=*pl+10; if(*pl>99)*pl=99;
system("cls");
}
else if(map[*pl]==map[*pl2])
{Sleep(300);
printf("A: \" :-D 哈哈哈哈...踩到了! \" \n");
Sleep(800);
map[0]=20;
map[*pl2]=0;
*pl2=0;
system("cls");
}
map[*pl]=10;
map[*pl2]=20;
printmap(map);
}
else
{
for(i=0;i<100;i++)
{if(map[i]==20)
{map[i]=0;
break;}}
for(i=1;i<=ss;i++)
{
system("cls");
printmap(map);
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
t=map[*pl2+i];
map[*pl2+i]=20;
Sleep(100);
system("cls");
printmap(map);
Sleep(100);
map[*pl2+i]= t;
}
system("cls");
*pl2=*pl2+ss;
if(map[*pl2]==1)
{printf("恭喜来到幸运罗盘!\n");
printf("请做出选择:\n");
printf("按1.和对方骑兵交换位置 按2.轰炸对方骑兵(炸退六步) 按其他键: 还是算了\n");
c=getch();
switch(c)
{case '1':printf("嗖嗖嗖............\n");Sleep(500);printf("A: \" ??? 怎么回事?? \" \n");
Sleep(300);
t=*pl;
*pl=*pl2;
*pl2= t;
system("cls");
Sleep(50);
break;
case '2':printf("B: \" 炸弹归来...... \" \n");Sleep(500);printf("A: \" 哎呦喂! \" \n");Sleep(300);map[*pl]=0;*pl=*pl-6;
if(map[*pl]==map[*pl2])
{Sleep(300);
printf("A: \" :-D 哈哈哈哈...踩到了! \" \n");
Sleep(800);
map[0]=20;
map[*pl2]=0;
*pl2=0;
system("cls");
}if(*pl<0)*pl=0;system("cls");Sleep(50);break;
}
}
else if(map[*pl2]==2)
{Sleep(300);
printf("B: \" ~~:-( 踩到地雷,气死了......\" \n");
Sleep(50);
Sleep(300);
map[*pl2]=0;
*pl2=*pl2-6;
if(map[*pl]==map[*pl2])
{Sleep(300);
printf("B: \" :-D 哈哈哈哈...踩到了! \" \n");
Sleep(300);
map[0]=10;
map[*pl]=0;
*pl=0;
}
if(*pl2<0)*pl2=0;
system("cls");
}
else if(map[*pl2]==3)
{printf("~~>_<~~ 要停战一局了。");
Sleep(1750);
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
{*pl=99;
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
system("cls");
printmap(map);
printf("请玩家1按任意键投掷骰子:\n");
d=getch();
now=time(NULL);
d+=now;
printf("丁零当啷......");
Sleep(1000);
while(d>3)
d=d/(rand()%5+1);
_flash(map,d+1+rand()%2,pl,pl2,1);
system("cls");
}
else if(map[*pl2]==4)
{Sleep(300);
printf("B: \" |-p 进入时空隧道,真爽! \" \n");
Sleep(50);
Sleep(1000);
map[*pl2]=0;
*pl2=*pl2+10;
if(map[*pl]==map[*pl2])
{Sleep(300);
printf("B: \" :-D 哈哈哈哈...踩到了! \" \n");
Sleep(300);
map[0]=10;
map[*pl]=0;
*pl=0;
}
if(*pl2>99)*pl2=99;
system("cls");
}
else if(map[*pl]==map[*pl2])
{Sleep(300);
printf("B: \" :-D 哈哈哈哈...踩到了! \" \n");
Sleep(300);
map[0]=10;
map[*pl]=0;
*pl=0;
}
map[*pl]=10;
map[*pl2]=20;
printmap(map);
}
/* 拟定双人游戏规则及产生走路动画*/
/* 拟定人机游戏规则及产生走路动画,产生电脑智能选择*/
int _rjflash(int map[],int ss,int *pl,int *pl2,int whatplayer)
{int i, t;
time_t now,d;
char c;
printf("%d!",ss);
Sleep(100);
if(whatplayer==1)
{for(i=0;i<100;i++)
{if(map[i]==10)
{map[i]=0;
break;}} for(i=1;i<=ss;i++)
{
system("cls");
printmap(map);
if(*pl+ss>=99 || *pl2+ss>=99)
{if(*pl+ss>=99)
{*pl=99;
return 0;}
else if(*pl2+ss>=99)
{*pl2=99;
return 0;}
}
t=map[*pl+i];
map[*pl+i]=10;
Sleep(100);
system("cls");
printmap(map);
Sleep(100);
map[*pl+i]= t;
}
Sleep(50);
system("cls");
*pl=*pl+ss;
if(map[*pl]==1)
{printf("恭喜来到幸运罗盘!\n");
printf("请做出选择:\n");
printf("按1.和对方骑兵交换位置 按2.轰炸对方骑兵(炸退六步) 按其他键: 还是算了\n");
c=getch();
switch(c)
{case '1':printf("嗖嗖嗖............\n");
Sleep(100);
printf("B: \" ??? 怎么回事?? \" \n");
t=*pl;
*pl=*pl2;
*pl2= t;
system("cls");
Sleep(50);break;
case '2':printf("A: \" 炸弹归来...... \" \n");
Sleep(100);
printf("B: \" 哎呦喂! \" \n");
map[*pl2]=0;
*pl2=*pl2-6;
if(map[*pl]==map[*pl2])
{
printf("B: \" :-D 哈哈哈哈...踩到了! \" \n");
map[0]=10;
map[*pl]=0;
*pl=0;
}if(*pl2<0)*pl2=0;system("cls");Sleep(50);break;
}
}
else if(map[*pl]==2)
{
printf("A: \" ~~:-( 踩到地雷,气死了......\" \n");
map[*pl]=0;
*pl=*pl-6;
if(map[*pl]==map[*pl2])
{
printf("A: \" :-D 哈哈哈哈...踩到了! \" \n");
map[0]=20;
map[*pl2]=0;
*pl2=0;
}
if(*pl<0)*pl=0;
system("cls");
}
else if(map[*pl]==3)
{printf("~~>_<~~ 要停战一局了。");
Sleep(750);
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
{*pl=99;
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
system("cls");
printmap(map);
printf("请电脑投掷骰子:\n");
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
{*pl=99;
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
d=rand()%1654+455;
now=time(NULL);
d+=now;
printf("丁零当啷......");
Sleep(100);
while(d>3)
d=d/(rand()%5+1);
_rjflash(map,d+1+rand()%2,pl,pl2,2);
system("cls");
}
else if(map[*pl]==4)
{Sleep(300);
printf("A: \" |-p 进入时空隧道,真爽! \" \n");
Sleep(100);
map[*pl]=0;
*pl=*pl+10;
if(map[*pl]==map[*pl2])
{
printf("A: \" :-D 哈哈哈哈...踩到了! \" \n");
map[0]=20;
map[*pl2]=0;
*pl2=0;
}
if(*pl>99)*pl=99; system("cls");
}
else if(map[*pl]==map[*pl2])
{
printf("A: \" :-D 哈哈哈哈...踩到了! \" \n");
map[0]=20;
map[*pl2]=0;
*pl2=0;
}
map[*pl]=10;
map[*pl2]=20;
printmap(map);
}
else
{
for(i=0;i<100;i++)
{if(map[i]==20)
{map[i]=0;
break;}}
for(i=1;i<=ss;i++)
{
system("cls");
printmap(map);
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
{*pl=99;
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
t=map[*pl2+i];
map[*pl2+i]=20;
system("cls");
printmap(map);
map[*pl2+i]= t;
}
system("cls");
*pl2=*pl2+ss;
if(map[*pl2]==1)
{
printf("恭喜来到幸运罗盘!\n");
printf("请做出选择:\n");
printf("按1.和对方骑兵交换位置 按2.轰炸对方骑兵(炸退六步) 按其他键: 还是算了\n");
Sleep(150);
if(*pl-*pl2>3)
c='1';
else
c='2';
switch(c)
{case '1':
printf("嗖嗖嗖............\n");
printf("A: \" ??? 怎么回事?? \" \n");
t=*pl;
*pl=*pl2;
*pl2= t;system("cls");Sleep(50);
break;
case '2':printf("B: \" 炸弹归来...... \" \n");
printf("A: \" 哎呦喂! \" \n");
map[*pl]=0;
*pl=*pl-6;
if(map[*pl]==map[*pl2])
{
printf("A: \" :-D 哈哈哈哈...踩到了! \" \n");
map[0]=20;
map[*pl2]=0;
*pl2=0;
}
if(*pl<0)
*pl=0;
system("cls");
Sleep(50);break;
}
}
else if(map[*pl2]==2)
{
printf("B: \" ~~:-( 踩到地雷,气死了......\" \n");
map[*pl2]=0;
*pl2=*pl2-6;
if(map[*pl]==map[*pl2])
{
printf("B: \" :-D 哈哈哈哈...踩到了! \" \n");
map[0]=10;
map[*pl]=0;
*pl=0;
}
if(*pl2<0)*pl2=0;
system("cls");
}
else if(map[*pl2]==3)
{printf("~~>_<~~ 要停战一局了。");
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
{*pl=99;
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
system("cls");
printmap(map);
printf("请玩家按任意键投掷骰子:\n");
d=getch();
now=time(NULL);
d+=now;
printf("丁零当啷......");
if(*pl>=99 || *pl2>=99)
{if(*pl>=99)
{*pl=99;
return 0;}
else if(*pl2>=99)
{*pl2=99;
return 0;}
}
while(d>3)
d=d/(rand()%5+1);
_rjflash(map,d+1+rand()%2,pl,pl2,1);
system("cls");
}
else if(map[*pl2]==4)
{
printf("B: \" |-p 进入时空隧道,真爽! \" \n");
map[*pl2]=0;
*pl2=*pl2+10;
if(map[*pl]==map[*pl2])
{
printf("B: \" :-D 哈哈哈哈...踩到了! \" \n");
map[0]=10;
map[*pl]=0;
*pl=0;
}
if(*pl2>99)*pl2=99;
system("cls");
}
else if(map[*pl]==map[*pl2])
{
printf("B: \" :-D 哈哈哈哈...踩到了! \" \n");
map[0]=10;
map[*pl]=0;
*pl=0;
}
map[*pl]=10;
map[*pl2]=20;
printmap(map);
}
return 0;
}
/* 拟定人机游戏规则及产生走路动画,产生电脑智能选择*/
/* 开始双人游戏*/
void shuang_ren_start(int map[])
{
int jue_se[2];
int player1=0;
int player2=0;
int i=0;
long d,now;
begin:
printmap(map);
printf("请玩家1按任意键投掷骰子:\n");
map[0]=20;
d=getch();
now=time(NULL);
d+=now;
printf("丁零当啷......");
Sleep(100);
while(d>3)
d=d/(rand()%5+1);
_flash(map,d+1+rand()%2,&player1,&player2,1);
do
{printf("请玩家2按任意键投掷骰子:\n");
d=getch();
now=time(NULL);
d+=now;
printf("丁零当啷......");
Sleep(200);
while(d>3)
d=d/(rand()%5+1);
_flash(map,d+1+rand()%2,&player1,&player2,2);
if(player1>=99 || player2>=99)
break;
printf("请玩家1按任意键投掷骰子:\n");
d=getch();
now=time(NULL);
d+=now;
printf("丁零当啷......");
Sleep(100);
while(d>3)
d=d/(rand()%5+1);
_flash(map,d+1+rand()%2,&player1,&player2,1);
}
while(player1<99 && player2<99);
if(player1>=99)
printf("A: \" 我赢了! 我赢了!\" ");
else if(player2>=99)
printf("B: \" 我赢了! 我赢了!\" ");
}
/* 开始双人游戏*/
/* 主函数*/
main()
{
int map[100];/*定义地图*/
char flag;/*定义选择标志*/
restart(map);//给map赋值
system("cls");//清屏
system("color Fc");//设置颜色
begin:
printf("输入1\n");
flag=getch();//接受选择信息
switch(flag)//判断选择信息
{
case '1':shuang_ren_start(map); break;
default:goto begin;
break;
}
}