游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1889|回复: 0

【请教问题】C语言战争模拟器中的搜索函数

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-12-6 14:29:00 | 显示全部楼层 |阅读模式
已有程序中只是寻找最近的敌人,请问如何在此基础上实现 能否秒杀、及其属性相克的问题。。。附:能秒杀的最优先,属性相克的其次,都不是的话就是第一次找到的敌人坐标。

typedef struct bingzhong
{
    int hp;//血量
    int gongjili;//攻击力
    int bz;//兵种
    int fw;//攻击范围
    int x;//最近敌军的纵向坐标
    int y;//最近敌军的横向坐标
    int xingdongli;//一次能移动的次数
    int bushu;//是否被移动过的标志
}Bing;//定义士兵
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[j].bz>0)
                search1(head[0],hang,&head[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[j].bz>3 && head[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[j].bz>0 && head[j].bz<4)
                {
                    juli=abs(i-x)+abs(j-y);
                    if(juli<biaoshi)
                    {
                        biaoshi=juli;
                        s->x=i;
                        s->y=j;
                    }
                }
    }
}//寻找最近敌方士兵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-9 06:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表