久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
c語言寫的戰爭模擬游戲 源碼
[打印本頁]
作者:
天使之翼xt
時間:
2016-12-18 15:34
標題:
c語言寫的戰爭模擬游戲 源碼
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#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<hang;i++)
for(j=0;j<N;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<hang;i++)
for(j=0;j<N;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<hang;i++)
for(j=0;j<N;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->fw<juli && s->bushu<s->xingdongli)
{
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<hang;i++)
for(j=0;j<N;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)
{
biaoshi=juli;
s->x=i;
s->y=j;
}
}
}
if(s->bz>3 && s->bz<7)
{
for(i=0;i<hang;i++)
for(j=0;j<N;j++)
if(head[i][j].bz>0 && head[i][j].bz<4)
{
juli=abs(i-x)+abs(j-y);
if(juli<biaoshi)
{
biaoshi=juli;
s->x=i;
s->y=j;
}
}
}
}//尋找最近敵方士兵
void qingchubushu(Bing head[][N],int hang)
{
int i=0,j=0;
for(i=0;i<hang;i++)
for(j=0;j<N;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<N*hang;i++,s++)
{
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<bing11;i++,s++)
{s->bz=1;s->fw=3;s->bushu=0;s->xingdongli=1;s->hp=100;s->gongjili=18;}
for(i=0;i<bing12;i++,s++)
{s->bz=2;s->fw=1;s->bushu=0;s->xingdongli=1;s->hp=150;s->gongjili=15;}
for(i=0;i<bing13;i++,s++)
{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<bing21;s++,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<bing22;s++,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<bing23;s++,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<N;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<hang;i++)
for(j=0;j<N;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<hang;i++)
for(j=0;j<N;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);
}
復制代碼
作者:
KayLaks
時間:
2020-5-28 14:52
能和您仔細聊聊嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲在线免费
|
欧美bondage紧缚视频
|
高清成人免费视频
|
欧美日韩久久久
|
精品久久久久久国产
|
国产精品二区三区
|
涩涩导航
|
日韩精品二区
|
www.色.com
|
日韩精品免费在线观看
|
99视频在线免费观看
|
久久毛片网站
|
久久在线精品
|
久久精品一区二区三区四区
|
亚洲欧美日韩在线一区二区
|
欧美性生交大片免费
|
a级片在线观看
|
欧美日韩亚洲国产
|
在线视频 亚洲
|
一区二区三区在线免费观看
|
久久久久99
|
日韩在线免费
|
香蕉久久久
|
欧美成人在线免费
|
超碰成人av
|
国产乱码精品一区二区三区忘忧草
|
国产精品不卡一区二区三区
|
亚洲视频免费在线看
|
国产精品久久久久久久久久久新郎
|
国产精品美女久久久久aⅴ国产馆
|
国产男人的天堂
|
免费视频中文字幕
|
久久久成
|
精品入口麻豆88视频
|
精品视频一区二区三区在线观看
|
国产98在线 | 免费,
|
黄色网址在线播放
|
午夜影院普通用户体验区
|
久久久www成人免费精品
|
国产日韩欧美中文字幕
|
91福利影院
|