⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cbeyes.h

📁 经典游戏赤壁的源代码
💻 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 + -