📄 cbeyes.h
字号:
/////////////
// CBEyes.h : v0020
// Written by : Liu Gang
// Compiler : Microsoft Visual C++ 4.2
// Copyright (C) : 1996 WayAhead Corporation
// v0010 : Feb.26.1997
// v0020 : Apr.29.1997, add so many functions
/////////////
// header file
// This file is to give thinking methods information they need.
// so call them Eyes.
#ifndef __CBEYES_H__
#define __CBEYES_H__
#include "cbgame.h"
#define MAINBATTALION 0 //帅帐
#define DOGFACE 1 //步兵所
#define BOW 2 //弓兵所
#define QIANZHUANG 3 //钱庄
#define LIANGCANG 4 //粮仓
#define QIBINGSUO 5 //骑兵所
#define CHEBINGSUO 6 //车兵所
#define JIANLOU 7 //箭楼
#define MUCAICHANG 8 //木材厂
#define WUQICHANG 9 //武器厂
#define CHUANWU 10 //船坞
struct BUILDP{
UNIT_STRUCT * BPoint;
WORD hPos;
};
extern struct BUILDP BuildPoint[5][15];
//扫描游戏者拥有的建筑
extern void EYE_ScanBuildAlife(WORD Player);
// 本能策略
/////////////
// 取得本单元附近的(视野内)其它单元的ID
// bFriend : 输入,0——取得所有单元,1——取得我方单元,2——取得敌方单元
// wThis : 输入,本单元ID
// pwArray : 输出,其它单元的ID数组
// nNum : 输入,需要的其它单元的数量;输出,实际返回的单元数量
void EYE_GetUnitInSight( int bFriend, WORD wThis, WORD *pwArray, int *pnNum );
// 取得本部队的其它单元的ID
// bFriend : 输入,0——取得所有单元,1——取得我方单元,2——取得敌方单元
// wThis : 输入,本单元ID
// pwArray : 输出,其它单元的ID数组
// nNum : 输入,需要的其它单元的数量;输出,实际返回的单元数量
void EYE_GetUnitInGroup( int bFriend, WORD wThis, WORD *pwArray, int *pnNum );
//-----------------------------------
#ifndef TNDEBUG
/////////////
// 检测目的单元是否在视野内
// wThis : 本单元ID
// wThat : 目的单元ID
// nRange : 视野范围,缺省(-1)时为第一个单元的视野
// return : -1,不在视野以内,0-7是方向
BOOL EYE_IfUnitIsInSight( WORD wThis, WORD wThat, int nRange = -1 );
// 检测目的单元是否在攻击范围内
// wThis : 本单元ID
// wThat : 目的单元ID
// nRange : 硬性规定的判定范围,缺省时为部队的攻击范围
// return : -1,不在射程以内,0-7是方向
BOOL EYE_IfUnitIsInRange( WORD wThis, WORD wThat, int nRange = -1 );
// 检测目的位置是否在某单元位置一格范围内
// pUnit : 被检测的单元
// nEndX, nEndY : 被检测的目的地形位置
// return : -1,不在射程以内,0-7是方向
int EYE_IfShipYardIsInRange( struct UNIT_STRUCT *pUnit, int nEndX, int nEndY );
/////////////
/////////////
// 检测该单元是否是有效
extern BOOL EYE_IfUnitIsUnit( struct UNIT_STRUCT *pUnit );
// 检测该单元是否是建筑
extern BOOL EYE_IfUnitIsBuild( struct UNIT_STRUCT *pUnit );
// 检测该单元是否是将领
extern BOOL EYE_IfUnitIsGen( struct UNIT_STRUCT *pUnit );
// 检测该单元是否是文将
extern BOOL EYE_IfUnitIsWorkerGen( struct UNIT_STRUCT *pUnit );
// 检测该单元是否是工人
extern BOOL EYE_IfUnitIsWorker( struct UNIT_STRUCT *pUnit );
// 检测该单元是否是平民
extern BOOL EYE_IfUnitIsMan( struct UNIT_STRUCT *pUnit );
// 检测该单元是否是资源
extern BOOL EYE_IfUnitIsRes( struct UNIT_STRUCT *pUnit );
// 检测该单元是否是特殊图素
extern BOOL EYE_IfUnitIsSpec( struct UNIT_STRUCT *pUnit );
// 检测该单元是否有Soldier域,可以组建成部队
extern BOOL EYE_IfUnitIsSoldier( struct UNIT_STRUCT *pUnit );
// 检测该单元是否可以移动
extern BOOL EYE_IfUnitIsMovable( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是弓箭手
extern BOOL EYE_IfUnitIsArcher( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是箭楼
extern BOOL EYE_IfUnitIsTower( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是船
extern BOOL EYE_IfUnitIsShip( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是战船
extern BOOL EYE_IfUnitIsBattleShip( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是运输船
extern BOOL EYE_IfUnitIsTransport( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是投石车
extern BOOL EYE_IfUnitIsCatapult( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是骑兵
extern BOOL EYE_IfUnitIsCavalry( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是城门
extern BOOL EYE_IfUnitIsDoor( struct UNIT_STRUCT *pUnit );
/////////////
/////////////
// 查看两个君主是否同盟
extern BOOL EYE_PlayerIsAllied( int nPlayer1, int nPlayer2 );
// 查看该坐标是否超过的地图的界限
extern BOOL EYE_IfOutOfRange( int nX, int nY );
// 查看该单元是否已经死了
extern BOOL EYE_IfUnitIsDead( struct UNIT_STRUCT *pUnit );
// 查看该单元是否是自己的
extern BOOL EYE_IfSheIsMine( struct UNIT_STRUCT *pUnit );
// 查看是否该单元处于焦点状态
extern BOOL EYE_IfFocusOnUnit( struct UNIT_STRUCT *pUnit );
// 查看该单元是否到达目的地了
extern int EYE_IfArrived( struct UNIT_STRUCT *pUnit );
// 查看该地形点是否有地形型资源
// 麦田或树林
// nZ, nX, nY : position on ground map
// return : resource type,QXZIYUAN时无效
extern int EYE_GetGResType( int nZ, int nX, int nY );
// 检测该单元是否是资源
// 对于建筑“粮仓”也被认为是资源
// return : 返回该资源的类型,一定是建筑型类型,为QXZIYUAN时无效
extern int EYE_GetUResType( struct UNIT_STRUCT *pUnit, int nPlayer =-1 );
// 查看一个格子周围是否有资源,只寻找地形型资源
// nFind : 要找的资源
// return : 找到资源的方向,0-7,为-1时无效
extern int EYE_IfResIsInRange( struct UNIT_STRUCT *pUnit, int nFind );
// 查看视野范围内是否有资源,只寻找地形型资源
// nZ,nX, nY : 启始位置
// nSight : 视野
// nFind : 要找的资源
// return : 找到资源的坐标位置,等于nX和nY时为未找到
extern POINT EYE_IfResIsInSight( int nZ, int nX, int nY, int nSight, int nFind );
// 寻找最近的家
// nPlayer : 君主
// nType : 0, 对于带有粮食的工人,是主帅帐,粮仓
// 1, 对于带有木材的工人,是主帅帐,木工房
// return : building ID, MAP_DATA_NONE为没有
extern WORD EYE_FindNearestHome( int nPlayer, int nType );
// 得到该建筑是否可以接受资源
// pU : 被检测的建筑
// return : 可以接受的资源的类型,QXZIYUAN为无效
extern int EYE_GetUResHome( struct UNIT_STRUCT *pU );
// 得到单元的士兵数量级别,官、曲、部、校
extern int EYE_GetUnitPerson( struct UNIT_STRUCT *pU );
/////////////
/////////////
// 得到某个单元的全满生命值
// nPlayer : 游戏君主,为-1时不加附加值
// nFile : 文件号
extern int EYE_GetFullLife( int nPlayer, int nFile );
// 得到水的地形,TRUE为找到水边,FALSE是没找到
extern int EYE_GetWater(int nZ,int nX,int nY);
// 得到某个单元的将领,无或非法时为空
extern struct UNIT_STRUCT *EYE_GetGeneral( struct UNIT_STRUCT * pU );
// 得到近程攻击力
extern int EYE_GetNearAttack( struct UNIT_STRUCT *pU );
// 得到远程攻击力
extern int EYE_GetFarAttack( struct UNIT_STRUCT *pU );
// 得到近程防御力
extern int EYE_GetNearDefend( struct UNIT_STRUCT *pU );
// 得到远程防御力
extern int EYE_GetFarDefend( struct UNIT_STRUCT *pU );
// test if there is the bank of the water around the unit
// nLayer : layer of the unit
// nStartX, nStartY : position of the unit
// nLocationSize : location size of the unit
// return : TRUE if there is bank
BOOL EYE_IfNearBank( int nLayer, int nStartX, int nStartY, int nLocationSize );
// 检测该部队是否中计
// pU : 被检测的单元
// nJiMou : 被检测的计谋
extern BOOL EYE_IfInSTG( struct UNIT_STRUCT *pU, CTRL_JIMOU nJiMou );
extern BYTE EYE_GetMorale( struct UNIT_STRUCT *pU );
extern int EYE_GetViewRange( struct CTRL_FRAME_STRUCT *pDraw );
// 判断此地是否被火烧
// nX, nY : 坐标
extern BOOL EYE_IfBurned( int nX, int nY );
// 判断粮食是否不能存储了——粮仓不够
// 游戏君主ID
extern BOOL EYE_IfFoodExceeded( int nPlayer );
// 得到将领的15级级别
// nGenID : 被确定的将领单元的将领ID
extern int EYE_GetNewLevel( int nGenID );
// 得到将领的级别名称
// nGenID : 被确定的将领单元的将领ID
// strLvlName : 级别名称
// return : 名称的ID号
extern int EYE_GetLevelName( int nGenID, LPSTR strLvlName );
// 得到武力
// nGenID : 将领ID
// return : 武力值
extern int EYE_GetWuLi( int nGenID );
// 得到智力
// nGenID : 将领ID
// return : 武力值
extern int EYE_GetZhiLi( int nGenID );
// 判断该将领是否可以使用某个计谋
extern BOOL EYE_IfJiMou( int nGenID, CTRL_JIMOU JiMou );
// 判断该将领是否可以单挑
extern BOOL EYE_IfFight( int nBlood1, int nPower1, int nBlood2, int nPower2 );
// 判断某游戏者是否已经完蛋
// nPlayer : 被判定的游戏者
// nRun : 能移动的人数
// return : 为真时表示已经完蛋
extern BOOL EYE_IfPlayerIsOver( int nPlayer, int nRun );
/////////////
/////////////
//- Tian Yue
//寻找最近的特定物体
//传入参数:
//nPlayer :游戏者的ID号
//nFile :要查寻物体的文件名
//X :本物体的X
//Y :本物体的Y
//传出参数:
//失败:MAP_DATA_NONE
//成功:要查寻物体的ID号
extern WORD TY_FindNearObject(WORD nPlayer,WORD nFile,WORD X,WORD Y);
extern WORD TY_FindNearHome(WORD player,WORD X,WORD Y,WORD TYPE);
/////////////
#endif // TNDEBUG
// 随机数的产生
// min : 最小值
// max : 最大值
extern int getrandom( int min, int max );
#endif //__CBEYES_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -