| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9044 人关注过本帖, 1 人收藏
标题:速求一款c语言编写的小游戏代码 ——骑士飞行棋
只看楼主 加入收藏
king_kong
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:71
专家分:55
注 册:2010-9-9
结帖率:68.75%
收藏(1)
 问题点数:0 回复次数:3 
速求一款c语言编写的小游戏代码 ——骑士飞行棋
一款C语言小游戏——骑士飞行棋 ,希望有会的前辈们能共享出来,让晚辈学习学习,实在是能力有限,暂时还写不出此程序,希望有代码的前辈出来指点,代码最好
搜索更多相关主题的帖子: 骑士 小游戏 飞行棋 c语言 
2011-07-04 23:36
gz940512
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-12-17
收藏
得分:0 
#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;
}
}

2012-12-17 17:27
zhangsi1
Rank: 2
来 自:安徽芜湖
等 级:论坛游民
帖 子:38
专家分:87
注 册:2012-10-4
收藏
得分:0 
...
2013-06-01 16:52
ricezhang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-9-12
收藏
得分:0 
这个很不错,还有其他更好的,小游戏代码程序吗,有就在发一个出来把,我多多支持。
2013-09-12 23:05
快速回复:速求一款c语言编写的小游戏代码 ——骑士飞行棋
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019735 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved