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

📄 temperor.cpp

📁 网页游戏赤壁
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/*	      [ EMPEROR.C ]
 *    EMPEROR.C FOR INSTINCE MODULE .
 *    Chbi Fight emperor interface module.
 *    Programmed By Y.Tian. No#Eye. WayAhead. Co. 1997.
 *    Data 3/18/1997.
 */

#include "stdafx.h"
#include "temperor.h"
#include "tgeneral.h"
#include "tai.h"
#include "cbrdelay.h"
#include "interfac.h"
#include "cbeyes.h"


#include <stdio.h>
#include <assert.h>
#include <time.h>

#include "Assert.h"


#define SAFEAREA_X  20
#define SAFEAREA_Y  43

WORD SAFEPOS=0;
WORD IPos[5]={0,0,0,0,0};
WORD X[5]={0,0,0,0,0};
WORD Y[5]={0,0,0,0,0};
WORD X1[5]={0,0,0,0,0};
WORD Y1[5]={0,0,0,0,0};
WORD pos[5]={0,0,0,0,0};
WORD AttackEnemyPos[5]={0,0,0,0,0};
WORD EnemyID[5]={CBNULL,CBNULL,CBNULL,CBNULL,CBNULL};
WORD Timer[5]={0,0,0,0,0};
WORD ShipEnemyPos[5]={0,0,0,0,0};
WORD Waitship[5]={0,0,0,0,0};
WORD Wait[5]={0,0,0,0,0};
WORD Pos[5]={0,0,0,0,0};
WORD DelayTime[5]={0,0,0,0,0};
WORD SGeneral[5]={0,0,0,0,0};
WORD Timer1[5]={0,0,0,0,0};
WORD num[5]={1,1,1,1,1};
WORD num1[5]={0,0,0,0,0};
WORD num2[5]={0,0,0,0,0};
WORD numT[5]={0,0,0,0,0};
WORD TimeG[5]={0,0,0,0,0};
WORD RDelay[5]={0,0,0,0,0}; 
WORD AIPlayer=0;
WORD SCANTIME[5]={70,70,70,70,70};
WORD SHIPX=0;
WORD SHIPY=0;


//#define TY_TEST

// 系统当前调色版
//extern    LPDIRECTDRAWPALETTE		lpDDPal=NULL;		// current palette that primary surface is using


WORD Delay=0;


EMMPERORPRO Pro[5][4];

TSOURCE     Tsource[5];

WORD SaveArr[70000];

ACCEDE	    AccedeForIron[5];
ACCEDE	    AccedeForLumber[5];
ACCEDE	    AccedeForFood[5];
ACCEDE	    AccedeForRepaire[5];

WORKERPRO  Ironworker[5];
WORKERPRO  Lumberworker[5];
WORKERPRO  Foodworker[5];
WORKERPRO  Repaireworker[5];

//路战队
WORKERPRO  Attacksoldier[5][4];
WORKERPRO  Defancesoldier[5][4];

//auto attack team 
WORD AutoAttack[20];

//海战队
WORKERPRO  Shipsoldier[5][4];


BUILD_BUILDING  BuildBuilding[5][3];

TGUARD Tguard[5];

BUILDP BuildPoint[5][15];

struct CTRL_TASK_STRUCT RepaireTask;

//工人
WORD MAINBATTALION_MAN=30; 
//工兵
WORD BOW_MAN=45;
//步兵
WORD DOGFACE_MAN=38;
//骑兵
WORD QIBING_MAN=37;
//车兵
WORD CHEBING_MAN=34;

//运输船
WORD YUNSHUSHIP=47;

//快船
WORD SHENGJISHIP=46;

//升级战船
//WORD SHENGJIFSHIP=;



//技术等级
WORD TechLevel[40];
//0: 路战
//1:海战
//地图的类型
WORD MapPos[40];

//clock_t times,timee;

//--- define function .
void EmAIRepairePosClear(WORD Player);
WORD ScanLumberAlife(WORD X,WORD Y);
WORD ScanLevelAttrib(WORD  levelatt);
void IronComponentTeam(WORD Player);
void IronTeamWork(WORD Player);
void IronworkerProcess(WORD Player);
void DevelopWorkerTeam(WORD  Player,WORD  DuringPos,WORD LevelPos);
void TY_IDProcess(WORD Id,WORD IdPos,WORD Which);
void IronTeamInit(WORD Player);
void IronAccedeToTeam(WORD Player);
void LumberworkerProcess(WORD Player,WORD LevelPos);
void FoodworkerProcess(WORD Player,WORD LevelPos);
void BuildWarTeam(WORD Player,WORD DuringPos);
void WarTeamWork(WORD Player,WORD DuringPos);
void EmAIAttackSoldierClear(WORD Player,WORD j);		 
void EmAIIronPosClear(WORD Player);
void EmAILumberPosClear(WORD Player);
void EmAIFoodPosClear(WORD Player);
void GuardTowerProcess(UNIT_STRUCT * Pobject);
void GetLumberId(WORD NL,WORD NR,WORD Player,WORD TX,WORD TY);
void GetFoodId(WORD NL,WORD NR,WORD Player);
void EmAIDefanceSoldierClear(WORD Player,WORD j);		 
void EmAIShipSoldierClear(WORD Player,WORD j);
//--- Another process .

//--- start.

//查找自己的建筑。

void EYE_ScanBuildAlife(WORD Player)
{  WORD i;
   WORD num=0;
   WORD num1=0;
   
	for (i=0;i<PLAYER_UNIT_MAX;i++)
	{
		if (i > GAME.Players[Player].wUnitCounter )
			break;

#ifdef TY_TEST

		if (GAME.Players[Player].Unit[i].nType == MAP_UNIT_TYPE_BUILDING
			&&Player == 3)
		{
			WriteErrorFile("error\\build.ty",GAME.Players[Player].Unit[i].Draw.nFile);
		}
#endif
		if ((GAME.Players[Player].Unit[i].nType == MAP_UNIT_TYPE_BUILDING
    		&&GAME.Players[Player].Unit[i].Task.nTaskID != JIANZAOZHONG
			&&GAME.Players[Player].Unit[i].Task.nTaskID != SHANCHU)
			||(GAME.Players[Player].Unit[i].nType == MAP_UNIT_TYPE_SHIPYARD))
		{
			switch (GAME.Players[Player].Unit[i].Draw.nFile)
			{
				//帅帐
			case 0:
			case 1:
				switch (GAME.nID)
				{
				case 11:
					if (Player == 3)
					{
						if (GAME.Players[Player].Unit[i].Draw.nX == 78)
						{
							if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
								continue;
							BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
							BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
							//if (Player != GAME.nMe)
								Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
						}
					}
					else
					{
						if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
							continue;
						BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
						BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
						//if (Player != GAME.nMe)
							Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
					}
					break;

				case 12:
					if (Player == 3)
					{
						if (GAME.Players[Player].Unit[i].Draw.nX<MAP_Lib.szNum.cx/2)
						{
							if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
								continue;
							BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
							BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
							//if (Player != GAME.nMe)
								Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
						}
					}
					else
					{
						if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
							continue;
						BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
						BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
						//if (Player != GAME.nMe)
							Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
					}
					break;
				case 13:
					if (Player == 3)
					{
						if (GAME.Players[Player].Unit[i].Draw.nX == 98)
						{
							if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
								continue;
							BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
							BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
							//if (Player != GAME.nMe)
								Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
						}
					}
					else
					{
						if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
							continue;
						BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
						BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
						//if (Player != GAME.nMe)
							Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
					}
					break;

				case 16:
					if (Player == 1)
					{
						if (GAME.Players[Player].Unit[i].Draw.nX == 20)
						{
							if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
								continue;
							BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
							BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
							//if (Player != GAME.nMe)
								Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
						}
					}
					else
					{
						if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
							continue;
						BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
						BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
						//if (Player != GAME.nMe)
							Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
					}
					break;
				case 27:
					if (Player == 1)
					{
						if (GAME.Players[Player].Unit[i].Draw.nX == 37)
						{
							if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
								continue;
							BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
							BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
							//if (Player != GAME.nMe)
								Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
						}
					}
					else
					{
						if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
							continue;
						BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
						BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
						//if (Player != GAME.nMe)
							Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
					}
					break;
				case 28:
					if (Player == 1)
					{
						if (GAME.Players[Player].Unit[i].Draw.nX == 32)
						{
							if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
								continue;
							BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
							BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
							//if (Player != GAME.nMe)
								Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
						}
					}
					else
					{
						if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
							continue;
						BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
						BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
						//if (Player != GAME.nMe)
							Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
					}
					break;
				default:
					if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
						continue;
					BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
					BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
					//if (Player != GAME.nMe)
						Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
					break;
				}
				break;

				//武器库
			case 2:
			case 3:
				if (BuildPoint[Player][WUQICHANG].hPos == CBTRUE)
					continue;
				BuildPoint[Player][WUQICHANG].BPoint=&GAME.Players[Player].Unit[i];
  				BuildPoint[Player][WUQICHANG].hPos=CBTRUE;
				break;

				//木材厂
			case 4:
			case 5:
				if (BuildPoint[Player][MUCAICHANG].hPos == CBTRUE)
					continue;
				BuildPoint[Player][MUCAICHANG].BPoint=&GAME.Players[Player].Unit[i];
  				BuildPoint[Player][MUCAICHANG].hPos=CBTRUE;
				break;

				//骑兵所
			case 6:
			case 7:
				switch (GAME.nID)
				{
				case 12:
					if (Player == 3)
					{
						if (GAME.Players[Player].Unit[i].Draw.nX<MAP_Lib.szNum.cx/2)
						{
							if (BuildPoint[Player][QIBINGSUO].hPos == CBTRUE)
								continue;
							BuildPoint[Player][QIBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
 							BuildPoint[Player][QIBINGSUO].hPos=CBTRUE;
						}
					}
					else
					{
						if (BuildPoint[Player][QIBINGSUO].hPos == CBTRUE)
							continue;
						BuildPoint[Player][QIBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
  						BuildPoint[Player][QIBINGSUO].hPos=CBTRUE;

					}
					break;
				default:
					if (BuildPoint[Player][QIBINGSUO].hPos == CBTRUE)
						continue;
					BuildPoint[Player][QIBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
					BuildPoint[Player][QIBINGSUO].hPos=CBTRUE;
					break;
				}
				break;

				//车兵所
			case 8:
			case 9:
				switch (GAME.nID)
				{
				case 12:
					if (Player == 3)
					{
						if (GAME.Players[Player].Unit[i].Draw.nX<MAP_Lib.szNum.cx/2)
						{
							if (BuildPoint[Player][CHEBINGSUO].hPos == CBTRUE)
								continue;
							BuildPoint[Player][CHEBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
  							BuildPoint[Player][CHEBINGSUO].hPos=CBTRUE;
						}
					}
					else
					{
						if (BuildPoint[Player][CHEBINGSUO].hPos == CBTRUE)
							continue;
						BuildPoint[Player][CHEBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
  						BuildPoint[Player][CHEBINGSUO].hPos=CBTRUE;
					}
					break;
				default:
					if (BuildPoint[Player][CHEBINGSUO].hPos == CBTRUE)
						continue;
					BuildPoint[Player][CHEBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
					BuildPoint[Player][CHEBINGSUO].hPos=CBTRUE;
					break;
				}
				break;

				//粮仓
			case 10:
			case 11:
				if (BuildPoint[Player][LIANGCANG].hPos == CBTRUE)
					continue;
				BuildPoint[Player][LIANGCANG].BPoint=&GAME.Players[Player].Unit[i];
  				BuildPoint[Player][LIANGCANG].hPos=CBTRUE;
				break;

				//步兵所
			case 12:
			case 13:
				if  (BuildPoint[Player][DOGFACE].hPos == CBTRUE)
					continue;
				BuildPoint[Player][DOGFACE].BPoint=&GAME.Players[Player].Unit[i];
 				BuildPoint[Player][DOGFACE].hPos=CBTRUE;
				break;

				//工兵所
			case 14:
			case 15:
				if (BuildPoint[Player][BOW].hPos == CBTRUE)
					continue;
				BuildPoint[Player][BOW].BPoint=&GAME.Players[Player].Unit[i];
 				BuildPoint[Player][BOW].hPos=CBTRUE;
				break;

				//船坞
			case 20:
				if (BuildPoint[Player][CHUANWU].hPos == CBTRUE)
					continue;
				BuildPoint[Player][CHUANWU].BPoint=&GAME.Players[Player].Unit[i];
 				BuildPoint[Player][CHUANWU].hPos=CBTRUE;
				break;

				//钱庄
			case 23:
				if (BuildPoint[Player][QIANZHUANG].hPos == CBTRUE)
					continue;
				BuildPoint[Player][QIANZHUANG].BPoint=&GAME.Players[Player].Unit[i];
	 			BuildPoint[Player][QIANZHUANG].hPos=CBTRUE;
				break;

				//箭楼
			case 18:
			case 19:
				if (BuildPoint[Player][JIANLOU].hPos == CBTRUE)
					continue;
				BuildPoint[Player][JIANLOU].BPoint=&GAME.Players[Player].Unit[i];
	 			BuildPoint[Player][JIANLOU].hPos=CBTRUE;
				break;
			}
		}
	}
}

WORD HaveGeneral(WORD nPlayer)
{
	WORD i;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -