C语言战争模拟器.doc

上传人:啊飒飒 文档编号:10778332 上传时间:2021-06-03 格式:DOC 页数:8 大小:60KB
返回 下载 相关 举报
C语言战争模拟器.doc_第1页
第1页 / 共8页
C语言战争模拟器.doc_第2页
第2页 / 共8页
C语言战争模拟器.doc_第3页
第3页 / 共8页
C语言战争模拟器.doc_第4页
第4页 / 共8页
C语言战争模拟器.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《C语言战争模拟器.doc》由会员分享,可在线阅读,更多相关《C语言战争模拟器.doc(8页珍藏版)》请在三一文库上搜索。

1、#include #include #include #define N 40void print_bing();/显示数据void printlist();/显示输出战场信息void print();/显示步,弓,骑void chushihua();/对战场进行初始化void chushihua1();/对进攻士兵进行初始化void chushihua2();/对防守士兵进行初始化void search();/寻找最近敌方士兵void search1();/寻找最近敌方士兵void move();/士兵移动一个单位void move1();/士兵移动一个单位void tiaozheng();

2、/调整所有士兵的位置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;/是否被移动过的标志

3、Bing;/定义士兵/*void printlist() printf(-n); printf(|兵种-|符号 |造价|攻击力|暴击率|防御力|血量 |攻击范围|移动矩离n); printf(-n); printf(|弓箭手-|-A-|100-|18-|5%-|1-|100-|13-|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(兵种相克关系:步兵克骑士,骑士克

4、弓箭手,弓箭手克步兵n); printf(-n);/显示数据*/void tiaozheng(Bing headN,int hang) search(head0,hang); move(head0,hang); search(head0,hang); qingqibingchubushu(head0,hang); move(head0,hang); search(head0,hang); qingqibingchubushu(head0,hang); move(head0,hang); qingchubushu(head0,hang); attack(head0,hang);/调整所有士兵的位

5、置void attack(Bing headN,int hang) int i=0,j=0,x1=0,y1=0; for(i=0;ihang;i+) for(j=0;j0) if(headij.fw=(abs(headij.x-i)+abs(headij.y-j) x1=headij.x; y1=headij.y; headx1y1.hp=headx1y1.hp-headij.gongjili; if(headx1y1.hp=0) headx1y1.bz=0; void qingqibingchubushu(Bing headN,int hang) int i=0,j=0; for(i=0;i

6、hang;i+) for(j=0;jN;j+) if(headij.bz=3 | headij.bz=6) headij.bushu=0;void move(Bing headN,int hang) int i=0,j=0; for(i=0;ihang;i+) for(j=0;j0) move1(&headij,head0,i,j);void move1(Bing* s ,Bing head40,int x,int y) int juli=0; juli=abs(x-s-x)+abs(y-s-y); if(s-fwbushuxingdongli) if(s-x-x0 & headx+1y.bz

7、=0) headx+1y.bz=s-bz; headx+1y.fw=s-fw; headx+1y.hp=s-hp; headx+1y.gongjili=s-gongjili; headx+1y.hp=s-hp; headx+1y.x=s-x; headx+1y.y=s-y; headx+1y.xingdongli=s-xingdongli; headx+1y.bushu=+(s-bushu); s-bz=0; return; if(s-y-ybz; headxy-1.fw=s-fw; headxy-1.hp=s-hp; headxy-1.x=s-x; headxy-1.y=s-y; headx

8、y-1.gongjili=s-gongjili; headxy-1.hp=s-hp; headxy-1.xingdongli=s-xingdongli; headxy-1.bushu=+(s-bushu); s-bz=0; return; if(s-x-xbz; headx-1y.fw=s-fw; headx-1y.hp=s-hp; headx-1y.x=s-x; headx-1y.y=s-y; headx-1y.gongjili=s-gongjili; headx-1y.hp=s-hp; headx-1y.xingdongli=s-xingdongli; headx-1y.bushu=+(s

9、-bushu); s-bz=0; return; if(s-y-y0 & headxy+1.bz=0)/横向移动 headxy+1.bz=s-bz; headxy+1.fw=s-fw; headxy+1.hp=s-hp; headxy+1.x=s-x; headxy+1.y=s-y; headxy+1.gongjili=s-gongjili; headxy+1.hp=s-hp; headxy+1.xingdongli=s-xingdongli; headxy+1.bushu=+(s-bushu); s-bz=0; return; /士兵移动一个单位void search(Bing headN,

10、int hang) int i=0,j=0; for(i=0;ihang;i+) for(j=0;j0) search1(head0,hang,&headij,i,j);void search1(Bing headN,int hang,Bing* s,int x,int y) int x1=0,y1=0,juli=0,i=0,j=0,biaoshi=10000; if(s-bz0 & s-bz=0;i-) for(j=39;j=0;j-) if(headij.bz3 & headij.bz7) juli=abs(i-x)+abs(j-y); if(julix=i; s-y=j; if(s-bz

11、3 & s-bz7) for(i=0;ihang;i+) for(j=0;j0 & headij.bz4) juli=abs(i-x)+abs(j-y); if(julix=i; s-y=j; /寻找最近敌方士兵void qingchubushu(Bing headN,int hang) int i=0,j=0; for(i=0;ihang;i+) for(j=0;j0) headij.bushu=0;void chushihua(Bing* s,int hang) int i=0; for(i=0;ibz=0; /对战场进行初始化void chushihua1(Bing s140,int b

12、ing11,int bing12,int bing13) int i=0; Bing* s=(Bing*)s1; for(i=0;ibz=1;s-fw=3;s-bushu=0;s-xingdongli=1;s-hp=100;s-gongjili=18; for(i=0;ibz=2;s-fw=1;s-bushu=0;s-xingdongli=1;s-hp=150;s-gongjili=15; for(i=0;ibz=3;s-fw=1;s-bushu=0;s-xingdongli=1;s-hp=200;s-gongjili=20;/对士兵进行定位void chushihua2(Bing s140,

13、int bing21,int bing22,int bing23,int hang) int i=0,j=0; Bing* s=(Bing*)s1; s=s+(hang-1)*40; for(;jbz=4;s-fw=3;s-bushu=0;s-xingdongli=1;s-hp=100;s-gongjili=18; i+; if(i39) s=s-80;i=0; for(j=0;jbz=5;s-fw=1;s-bushu=0;s-xingdongli=1;s-hp=150;s-gongjili=15; i+; if(i39) s=s-80;i=0; for(j=0;jbz=6;s-fw=1;s-

14、bushu=0;s-xingdongli=1;s-hp=200;s-gongjili=20; i+; if(i39) 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

15、_bing(Bing sN,int i1) printf(-n); int i=0,j=0; for(i=i1-1;i=0;i-) for(j=0;jN;j+) print(sij.bz); printf(n); printf(-n);/显示输出战场信息void chakan(Bing bN,int hang) int i=0,j=0; for(i=0;ihang;i+) for(j=0;j0) printf(兵种%d的i,j=%d,%d | i1,j1=%d,%dn,bij.bz,i,j,bij.x,bij.y); int panduan(Bing headN,int hang) int i

16、=0,j=0,zifang=0,difang=0; for(i=0;ihang;i+) for(j=0;j0 & headij.bz3 & headij.bz7) 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,bin

17、g13=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,&bing2

18、1,&bing22,&bing23); bing20=bing21+bing22+bing23; lie2=bing20/N; / Bing b8+lie1+lie2N; chushihua(&b00,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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1