C语言怎么弄游戏的战场回放,c语言写的战争模拟游戏 源码
#include
#include
#include
#define N 40
void print_bing();//显示数据
void printlist();//显示输出战场信息
void print();//显示步,弓,骑
void chushihua();//对战场进行初始化
void chushihua1();//对进攻士兵进行初始化
void chushihua2();//对防守士兵进行初始化
void search();//寻找最近敌方士兵
void search1();//寻找最近敌方士兵
void move();//士兵移动一个单位
void move1();//士兵移动一个单位
void tiaozheng();//调整所有士兵的位置
void chakan();//查看自己的坐标和最近的敌军坐标
void qingchubushu();//重置所有步数
void qingqibingchubushu();//重置骑兵步数
void attack();//计算伤害
int panduan();//判断是否有队伍胜利
typedef struct bingzhong
{
int hp;//血量
int gongjili;//攻击力
int bz;//兵种
int fw;//攻击范围
int x;//最近敌军的纵向坐标
int y;//最近敌军的横向坐标
int xingdongli;//一次能移动的次数
int bushu;//是否被移动过的标志
}Bing;//定义士兵
/*
void printlist()
{
printf("-------------------------------------------------------------\n");
printf("|兵种----|符号 |造价|攻击力|暴击率|防御力|血量 |攻击范围|移动矩离\n");
printf("-------------------------------------------------------------\n");
printf("|弓箭手--|--A--|100-|18----|5%------|1----|100--|1~3---|1-----\n");
printf("-------------------------------------------------------------\n");
printf("|步兵 | F |75 |15 |8% |3 |150 |1 |1 \n");
printf("-------------------------------------------------------------\n");
printf("|骑士 | K |150 |20 |10% |5 |200 |1 |3 \n");
printf("-------------------------------------------------------------\n");
printf("兵种相克关系:步兵克骑士,骑士克弓箭手,弓箭手克步兵\n");
printf("-------------------------------------------------------------\n");
}//显示数据
*/
void tiaozheng(Bing head[][N],int hang)
{
search(head[0],hang);
move(head[0],hang);
search(head[0],hang);
qingqibingchubushu(head[0],hang);
move(head[0],hang);
search(head[0],hang);
qingqibingchubushu(head[0],hang);
move(head[0],hang);
qingchubushu(head[0],hang);
attack(head[0],hang);
}//调整所有士兵的位置
void attack(Bing head[][N],int hang)
{
int i=0,j=0,x1=0,y1=0;
for(i=0;i
for(j=0;j
if(head[i][j].bz>0)
{
if(head[i][j].fw>=(abs(head[i][j].x-i)+abs(head[i][j].y-j)))
{
x1=head[i][j].x;
y1=head[i][j].y;
head[x1][y1].hp=head[x1][y1].hp-head[i][j].gongjili;
if(head[x1][y1].hp<=0)
head[x1][y1].bz=0;
}
}
}
void qingqibingchubushu(Bing head[][N],int hang)
{
int i=0,j=0;
for(i=0;i
for(j=0;j
if(head[i][j].bz==3 || head[i][j].bz==6)
head[i][j].bushu=0;
}
void move(Bing head[][N],int hang)
{
int i=0,j=0;
for(i=0;i
for(j=0;j
if(head[i][j].bz>0)
move1(&head[i][j],head[0],i,j);
}
void move1(Bing* s ,Bing head[][40],int x,int y)
{
int juli=0;
juli=abs(x-s->x)+abs(y-s->y);
if(s->fwbushuxingdongli)
{
if(s->x-x>0 && head[x+1][y].bz==0)
{
head[x+1][y].bz=s->bz;
head[x+1][y].fw=s->fw;
head[x+1][y].hp=s->hp;
head[x+1][y].gongjili=s->gongjili;
head[x+1][y].hp=s->hp;
head[x+1][y].x=s->x;
head[x+1][y].y=s->y;
head[x+1][y].xingdongli=s->xingdongli;
head[x+1][y].bushu=++(s->bushu);
s->bz=0;
return;
}
if(s->y-y<0 && head[x][y-1].bz==0 )
{
head[x][y-1].bz=s->bz;
head[x][y-1].fw=s->fw;
head[x][y-1].hp=s->hp;
head[x][y-1].x=s->x;
head[x][y-1].y=s->y;
head[x][y-1].gongjili=s->gongjili;
head[x][y-1].hp=s->hp;
head[x][y-1].xingdongli=s->xingdongli;
head[x][y-1].bushu=++(s->bushu);
s->bz=0;
return;
}
if(s->x-x<0 && head[x-1][y].bz==0)
{
head[x-1][y].bz=s->bz;
head[x-1][y].fw=s->fw;
head[x-1][y].hp=s->hp;
head[x-1][y].x=s->x;
head[x-1][y].y=s->y;
head[x-1][y].gongjili=s->gongjili;
head[x-1][y].hp=s->hp;
head[x-1][y].xingdongli=s->xingdongli;
head[x-1][y].bushu=++(s->bushu);
s->bz=0;
return;
}
if(s->y-y>0 && head[x][y+1].bz==0)//横向移动
{
head[x][y+1].bz=s->bz;
head[x][y+1].fw=s->fw;
head[x][y+1].hp=s->hp;
head[x][y+1].x=s->x;
head[x][y+1].y=s->y;
head[x][y+1].gongjili=s->gongjili;
head[x][y+1].hp=s->hp;
head[x][y+1].xingdongli=s->xingdongli;
head[x][y+1].bushu=++(s->bushu);
s->bz=0;
return;
}
}
}//士兵移动一个单位
void search(Bing head[][N],int hang)
{
int i=0,j=0;
for(i=0;i
for(j=0;j
if(head[i][j].bz>0)
search1(head[0],hang,&head[i][j],i,j);
}
void search1(Bing head[][N],int hang,Bing* s,int x,int y)
{
int x1=0,y1=0,juli=0,i=0,j=0,biaoshi=10000;
if(s->bz>0 && s->bz<4)
{
for(i=hang-1;i>=0;i--)
for(j=39;j>=0;j--)
if(head[i][j].bz>3 && head[i][j].bz<7)
{
juli=abs(i-x)+abs(j-y);
if(juli
{
biaoshi=juli;
s->x=i;
s->y=j;
}
}
}
if(s->bz>3 && s->bz<7)
{
for(i=0;i
for(j=0;j
if(head[i][j].bz>0 && head[i][j].bz<4)
{
juli=abs(i-x)+abs(j-y);
if(juli
{
biaoshi=juli;
s->x=i;
s->y=j;
}
}
}
}//寻找最近敌方士兵
void qingchubushu(Bing head[][N],int hang)
{
int i=0,j=0;
for(i=0;i
for(j=0;j
if(head[i][j].bz>0)
head[i][j].bushu=0;
}
void chushihua(Bing* s,int hang)
{
int i=0;
for(i=0;i
{
s->bz=0;
}
}//对战场进行初始化
void chushihua1(Bing s1[][40],int bing11,int bing12,int bing13)
{
int i=0;
Bing* s=(Bing*)s1;
for(i=0;i
{s->bz=1;s->fw=3;s->bushu=0;s->xingdongli=1;s->hp=100;s->gongjili=18;}
for(i=0;i
{s->bz=2;s->fw=1;s->bushu=0;s->xingdongli=1;s->hp=150;s->gongjili=15;}
for(i=0;i
{s->bz=3;s->fw=1;s->bushu=0;s->xingdongli=1;s->hp=200;s->gongjili=20;}
}//对士兵进行定位
void chushihua2(Bing s1[][40],int bing21,int bing22,int bing23,int hang)
{
int i=0,j=0;
Bing* s=(Bing*)s1;
s=s+(hang-1)*40;
for(;j
{
s->bz=4;s->fw=3;s->bushu=0;s->xingdongli=1;s->hp=100;s->gongjili=18;
i++;
if(i>39)
{s=s-80;i=0;}
}
for(j=0;j
{
s->bz=5;s->fw=1;s->bushu=0;s->xingdongli=1;s->hp=150;s->gongjili=15;
i++;
if(i>39)
{s=s-80;i=0;}
}
for(j=0;j
{
s->bz=6;s->fw=1;s->bushu=0;s->xingdongli=1;s->hp=200;s->gongjili=20;
i++;
if(i>39)
{s=s-80;i=0;}
}
}//对防守士兵进行初始化
void print(int bz)
{
switch (bz)
{
case 1:printf("弓");break;
case 2:printf("兵");break;
case 3:printf("车");break;
case 4:printf("弩");break;
case 5:printf("卒");break;
case 6:printf("車");break;
default:printf(" ");break;
}
}//显示步,弓,骑
void print_bing(Bing s[][N],int i1)
{
printf("-------------------------------------------------------------\n");
int i=0,j=0;
for(i=i1-1;i>=0;i--)
{
for(j=0;j
print(s[i][j].bz);
printf("\n");
}
printf("-------------------------------------------------------------\n");
}//显示输出战场信息
void chakan(Bing b[][N],int hang)
{
int i=0,j=0;
for(i=0;i
for(j=0;j
{
if(b[i][j].bz>0)
printf("兵种%d的i,j=%d,%d | i1,j1=%d,%d\n",b[i][j].bz,i,j,b[i][j].x,b[i][j].y);
}
}
int panduan(Bing head[][N],int hang)
{
int i=0,j=0,zifang=0,difang=0;
for(i=0;i
for(j=0;j
{
if(head[i][j].bz>0 && head[i][j].bz<4)
zifang=1;
if(head[i][j].bz>3 && head[i][j].bz<7)
difang=1;
}
if(zifang==1 && difang==0)
return 1;
if(zifang==0 && difang==1)
return 2;
else
return 0;
}
int main(int argc, char** argv)
{
static int lie1=0,lie2=0;//lie1是进攻方的士兵行数,lie2是防守方的士兵行数
int i=0,j=0,moshi=0,bing11=0,bing12=0,bing13=0,bing10=0,bing21=0,bing22=0,bing23=0,bing20=0,shengli=0;
/*
printf("请选择游戏模式:1是金钱模式,2是士兵个数模式\n");
scanf("%d",&moshi);
if(moshi==2)
{
*/
printf("请输入进攻方各兵种的数量:分别是弓,兵,车\n");
scanf("%d %d %d",&bing11,&bing12,&bing13);
bing10=bing11+bing12+bing13;
lie1=bing10/N;
printf("请输入防守方各兵种的数量:分别是弩,卒,車\n");
scanf("%d %d %d",&bing21,&bing22,&bing23);
bing20=bing21+bing22+bing23;
lie2=bing20/N;
//}
Bing b[8+lie1+lie2][N];
chushihua(&b[0][0],8+lie1+lie2);
chushihua1(b,bing11,bing12,bing13);
chushihua2(b,bing21,bing22,bing23,8+lie1+lie2);//对各方的兵种初始化
//printlist();
print_bing(b,8+lie1+lie2);//打印战场
while(1)
{
tiaozheng(b,8+lie1+lie2);//移动一次
print_bing(b,8+lie1+lie2);//打印战场
//chakan(b,8+lie1+lie2);
getchar();
shengli=panduan(b,8+lie1+lie2);
if(shengli==1)
{
printf("进攻方胜利\n");
break;
}
if(shengli==2)
{
printf("防守方胜利\n");
break;
}
}
return (EXIT_SUCCESS);
}
C语言怎么弄游戏的战场回放,c语言写的战争模拟游戏 源码相关推荐
- JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码)
JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码) dpTopDownJumpGame.js完整源代码 dpTopDownJumpGame.test.js完整源代码 dpTop ...
- Pygame合集】回忆杀-“童年游戏”,看看你中几枪?(附五款源码自取)
不会吧不会吧!不会现在还有人不知道这几款游戏吧?! 现如今,你我都已长大,从一个懵懂的孩童成长为了成年人.成年的我们,也时常会怀念过去,怀 念那无忧无虑的童年时光. 在童年,时间就像是一个陪伴我们嬉戏 ...
- C语言初学者复刻经典扫雷小游戏(图形界面,非黑白窗口)(含源码)
注:除计时器和剩余雷数显示外,其他功能完美还原. 目录 一.程序演示 二.程序信息 1.基础信息 2.前言 3.所需文件 三.代码解析 1.头文件 2.变量声明 3.随机生成雷 4.生成雷位置矩阵 5 ...
- c语言 三子棋详细解析 (零基础也能看懂)附源码 c语言小游戏
代码运行结果如下 代码实现 test.c(测试游戏的逻辑) game.h(关于游戏相关的函数声明符号声明)头文件包含的 game.c游戏相关函数的实现 test.c 游戏如何玩 希望游戏玩完一把还可以 ...
- 网页策略游戏《绝地战争》完整源码下载
绝地战争网页策略游戏源码,服务端用java,前端用flash as3,解压后701mb 战争>宏大的陆空作战战场.国战系统.兵种之间的相克关系,是战斗更加变化多端,野地建设.殖民系统推动玩家的城 ...
- Unity3d C# 开发微信小游戏分享图片、朋友圈等功能实现(含源码)
广告 通过一段时间的基于minigame-unity-webgl-transform插件的开发,算是稍微完整的一小个游戏已经制作完成,具体大家可以扫码体验一下: 感谢支持!! 前言 之前编写了一篇u3 ...
- Python游戏开发,pygame模块,Python实现愤怒的小鸟【附带源码】
前言 这次带大家仿写个之前有段时间比较火的愤怒的小鸟小游戏呗. 废话不多说,让我们愉快地开始吧~ 开发工具 **Python版本:**3.6.4 相关模块: pygame模块: 以及一些python自 ...
- C语言在BST中找到最接近目标的值的算法(附完整源码)
C语言在BST中找到最接近目标的值的算法 C语言在BST中找到最接近目标的值的算法完整源码(定义,实现,main函数测试) C语言在BST中找到最接近目标的值的算法完整源码(定义,实现,main函数测 ...
- C语言链表返回第n个到最后的节点的算法(附完整源码)
C语言链表返回第n个到最后的节点的算法 C语言链表返回第n个到最后的节点的算法完整源码(定义,实现,main函数测试) C语言链表返回第n个到最后的节点的算法完整源码(定义,实现,main函数测试) ...
最新文章
- Webcast.NET Remoting学习笔记(5)使用配置文件
- erlang-百度云推送Android服务端功能实现-erlang
- 使用隐式Intent打开系统浏览器的百度网页
- 数据中心管理将成为未来十年所需的技能
- 成功解决基于pyecharts生成的html文件打开时显示空白
- 计算机组成与结构实验箱,HQFC-B1计算机组成和数字电路实验箱
- java jdk 的环境变量_Java JDK14(Java 14)在Windows上安装与环境变量配置
- php file 扩展,php5.4.31安装php_fileinfo扩展和php_intl扩展
- 常见机器学习算法分类及名称
- Centos 7上启动 vsftp报错处理
- [转载] Python中产生随机数
- 聊聊lettuce的sentinel连接 1
- Django+xadmin的安装与配置
- 【日常记录】CTF审查清单(windows)
- 汉王考勤管理软件mysql数据库配置_汉王人脸通考勤管理软件
- android屏幕尺寸像素详解
- 数学最高奖菲尔兹奖得主加入华为!研究数学大一统理论,任正非曾说“国家若要强盛,数学是基础”...
- CSS - 让整个页面变成灰色(一行代码)
- Autosar Dcm模块之Vector Configurator Pro配置(DSP子模块)
- C/C++后台开发基础知识