#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语言写的战争模拟游戏 源码相关推荐

  1. JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码)

    JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码) dpTopDownJumpGame.js完整源代码 dpTopDownJumpGame.test.js完整源代码 dpTop ...

  2. Pygame合集】回忆杀-“童年游戏”,看看你中几枪?(附五款源码自取)

    不会吧不会吧!不会现在还有人不知道这几款游戏吧?! 现如今,你我都已长大,从一个懵懂的孩童成长为了成年人.成年的我们,也时常会怀念过去,怀 念那无忧无虑的童年时光. 在童年,时间就像是一个陪伴我们嬉戏 ...

  3. C语言初学者复刻经典扫雷小游戏(图形界面,非黑白窗口)(含源码)

    注:除计时器和剩余雷数显示外,其他功能完美还原. 目录 一.程序演示 二.程序信息 1.基础信息 2.前言 3.所需文件 三.代码解析 1.头文件 2.变量声明 3.随机生成雷 4.生成雷位置矩阵 5 ...

  4. c语言 三子棋详细解析 (零基础也能看懂)附源码 c语言小游戏

    代码运行结果如下 代码实现 test.c(测试游戏的逻辑) game.h(关于游戏相关的函数声明符号声明)头文件包含的 game.c游戏相关函数的实现 test.c 游戏如何玩 希望游戏玩完一把还可以 ...

  5. 网页策略游戏《绝地战争》完整源码下载

    绝地战争网页策略游戏源码,服务端用java,前端用flash as3,解压后701mb 战争>宏大的陆空作战战场.国战系统.兵种之间的相克关系,是战斗更加变化多端,野地建设.殖民系统推动玩家的城 ...

  6. Unity3d C# 开发微信小游戏分享图片、朋友圈等功能实现(含源码)

    广告 通过一段时间的基于minigame-unity-webgl-transform插件的开发,算是稍微完整的一小个游戏已经制作完成,具体大家可以扫码体验一下: 感谢支持!! 前言 之前编写了一篇u3 ...

  7. Python游戏开发,pygame模块,Python实现愤怒的小鸟【附带源码】

    前言 这次带大家仿写个之前有段时间比较火的愤怒的小鸟小游戏呗. 废话不多说,让我们愉快地开始吧~ 开发工具 **Python版本:**3.6.4 相关模块: pygame模块: 以及一些python自 ...

  8. C语言在BST中找到最接近目标的值的算法(附完整源码)

    C语言在BST中找到最接近目标的值的算法 C语言在BST中找到最接近目标的值的算法完整源码(定义,实现,main函数测试) C语言在BST中找到最接近目标的值的算法完整源码(定义,实现,main函数测 ...

  9. C语言链表返回第n个到最后的节点的算法(附完整源码)

    C语言链表返回第n个到最后的节点的算法 C语言链表返回第n个到最后的节点的算法完整源码(定义,实现,main函数测试) C语言链表返回第n个到最后的节点的算法完整源码(定义,实现,main函数测试) ...

最新文章

  1. Webcast.NET Remoting学习笔记(5)使用配置文件
  2. erlang-百度云推送Android服务端功能实现-erlang
  3. 使用隐式Intent打开系统浏览器的百度网页
  4. 数据中心管理将成为未来十年所需的技能
  5. 成功解决基于pyecharts生成的html文件打开时显示空白
  6. 计算机组成与结构实验箱,HQFC-B1计算机组成和数字电路实验箱
  7. java jdk 的环境变量_Java JDK14(Java 14)在Windows上安装与环境变量配置
  8. php file 扩展,php5.4.31安装php_fileinfo扩展和php_intl扩展
  9. 常见机器学习算法分类及名称
  10. Centos 7上启动 vsftp报错处理
  11. [转载] Python中产生随机数
  12. 聊聊lettuce的sentinel连接 1
  13. Django+xadmin的安装与配置
  14. 【日常记录】CTF审查清单(windows)
  15. 汉王考勤管理软件mysql数据库配置_汉王人脸通考勤管理软件
  16. android屏幕尺寸像素详解
  17. 数学最高奖菲尔兹奖得主加入华为!研究数学大一统理论,任正非曾说“国家若要强盛,数学是基础”...
  18. CSS - 让整个页面变成灰色(一行代码)
  19. Autosar Dcm模块之Vector Configurator Pro配置(DSP子模块)
  20. C/C++后台开发基础知识

热门文章

  1. 第2章 人员安全和风险管理的概念
  2. Android 仿微博的点赞上报功能,持续点赞再取消
  3. Java基础——匿名内部类
  4. 计算机网络——01网络模型
  5. 家勤则兴,人勤则健。 曾国藩警句,太经典了!
  6. Matlab 如何发布独立可执行文件
  7. 浏览器缓存机制(2)
  8. 【已解决】App unavailable Unfortunately, Claude is only available in certain countries and regions
  9. 批量查询苏宁快递物流,并分析派件时效
  10. 德玛吉DMG海德汉五轴机床操作仿真视频教程