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

📄 cbfile.cpp

📁 这是一个游戏程序源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			//&nsss,
			//&DATA_Lib.Unit[i].wCreateFood,
			&DATA_Lib.Unit[i].nCreateGold,
			&DATA_Lib.Unit[i].nCreateWood,
			&DATA_Lib.Unit[i].nCreateSpeed,
			&DATA_Lib.Unit[i].nAddExp,		// 被毁后对方经验值增加
			&DATA_Lib.Unit[i].nAddMorale	// 被毁后对方士气增加,自己士气减少
		));

		for( int j=0; j<(int)strlen(DATA_Lib.Unit[i].strName); j++ )
		{
			if( DATA_Lib.Unit[i].strName[j] == '$' )
				DATA_Lib.Unit[i].strName[j] = ' ';
		}
		/*
		fscanf( fp, "%d %s %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
			&DATA_Lib.Unit[i].nID,
			DATA_Lib.Unit[i].strName,
			&DATA_Lib.Unit[i].dwLife,
			&DATA_Lib.Unit[i].nFarAttack,
			&DATA_Lib.Unit[i].nNearDefend,
			&DATA_Lib.Unit[i].nFarDefend,
			&DATA_Lib.Unit[i].nViewRange,
			&DATA_Lib.Unit[i].nFightRange,
			&DATA_Lib.Unit[i].nFightSpeed,
			&DATA_Lib.Unit[i].nCreateIron,
			//&DATA_Lib.Unit[i].wCreateFood,
			&DATA_Lib.Unit[i].nCreateGold,
			&DATA_Lib.Unit[i].nCreateWood,
			&DATA_Lib.Unit[i].nCreateSpeed,
			&DATA_Lib.Unit[i].nAddExp,		// 被毁后对方经验值增加
			&DATA_Lib.Unit[i].nAddMorale	// 被毁后对方士气增加,自己士气减少
		);
		*/
	}

	// read soldier data
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum2 ));
	//fscanf( fp, "%d\n", &nNum2 );
	for( i=nNum; i< nNum+nNum2; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,
			"%d %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
			&DATA_Lib.Unit[i].nID,
			DATA_Lib.Unit[i].strName,
			&DATA_Lib.Unit[i].dwLife,
			&DATA_Lib.Unit[i].nNearAttack,
			&DATA_Lib.Unit[i].nFarAttack,
			&DATA_Lib.Unit[i].nNearDefend,
			&DATA_Lib.Unit[i].nFarDefend,
			&DATA_Lib.Unit[i].nViewRange,
			&DATA_Lib.Unit[i].nFightRange,
			&DATA_Lib.Unit[i].nMoveSpeed,
			&DATA_Lib.Unit[i].nFightSpeed,
			&DATA_Lib.Unit[i].nCreateIron,
			&DATA_Lib.Unit[i].nCreateFood,
			&DATA_Lib.Unit[i].nCreateWood,
			&DATA_Lib.Unit[i].nCreateGold,
			&DATA_Lib.Unit[i].nCreateSpeed,
			&DATA_Lib.Unit[i].nAddExp,		// 被毁后对方经验值增加
			&DATA_Lib.Unit[i].nAddMorale	// 被毁后对方士气增加,自己士气减少
		));
		for( int j=0; j<(int)strlen(DATA_Lib.Unit[i].strName); j++ )
		{
			if( DATA_Lib.Unit[i].strName[j] == '$' )
				DATA_Lib.Unit[i].strName[j] = ' ';
		}
		/*
		fscanf( fp, "%d %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
			&DATA_Lib.Unit[i].nID,
			DATA_Lib.Unit[i].strName,
			&DATA_Lib.Unit[i].dwLife,
			&DATA_Lib.Unit[i].nNearAttack,
			&DATA_Lib.Unit[i].nFarAttack,
			&DATA_Lib.Unit[i].nNearDefend,
			&DATA_Lib.Unit[i].nFarDefend,
			&DATA_Lib.Unit[i].nViewRange,
			&DATA_Lib.Unit[i].nFightRange,
			&DATA_Lib.Unit[i].nMoveSpeed,
			&DATA_Lib.Unit[i].nFightSpeed,
			&DATA_Lib.Unit[i].nCreateIron,
			&DATA_Lib.Unit[i].nCreateFood,
			&DATA_Lib.Unit[i].nCreateWood,
			&DATA_Lib.Unit[i].nCreateGold,
			&DATA_Lib.Unit[i].nCreateSpeed,
			&DATA_Lib.Unit[i].nAddExp,		// 被毁后对方经验值增加
			&DATA_Lib.Unit[i].nAddMorale	// 被毁后对方士气增加,自己士气减少
		);
		*/
	}		

	// read upgrade data
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
	for( i=0; i< nNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,
			"%d %d %d %d %d %d %d %d\n",
			&DATA_Lib.Upgrade[i].nGold,
			&DATA_Lib.Upgrade[i].nWood,
			&DATA_Lib.Upgrade[i].nIron,
			&DATA_Lib.Upgrade[i].nFood,
			&DATA_Lib.Upgrade[i].dwParam1,
			&DATA_Lib.Upgrade[i].dwParam2,
			&DATA_Lib.Upgrade[i].dwParam3,
			&DATA_Lib.Upgrade[i].dwParam4
		));
		/*
		fscanf( fp, "%d %d %d %d %d %d %d %d\n",
			&DATA_Lib.Upgrade[i].nGold,
			&DATA_Lib.Upgrade[i].nWood,
			&DATA_Lib.Upgrade[i].nIron,
			&DATA_Lib.Upgrade[i].nFood,
			&DATA_Lib.Upgrade[i].dwParam1,
			&DATA_Lib.Upgrade[i].dwParam2,
			&DATA_Lib.Upgrade[i].dwParam3,
			&DATA_Lib.Upgrade[i].dwParam4
		);
		*/
	}		

	// read general data
	int nGenFile[4]={35,31,33,29};
	nNum = 1, nNum2 = 0;
	for( int j=0; j<4; j++ )
	{
		nNum += nNum2;
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n",&nNum2 ));
		//fscanf( fp, "%d\n", &nNum2 );
		for( i=nNum; i< nNum+nNum2; i++ )
		{
			FSCAN.l_scan (sscanf (FSCAN.expand_buf,
				"%s %d %d %d %d %d\n",
				DATA_Lib.Gen[i].strName,
				&DATA_Lib.Gen[i].nWuLi,
				&DATA_Lib.Gen[i].nZhiLi,
				&DATA_Lib.Gen[i].nType,
				&DATA_Lib.Gen[i].nLevel,
				&DATA_Lib.Gen[i].dwLife
			));
			for( int k=0; k<(int)strlen(DATA_Lib.Gen[i].strName); k++ )
			{
				if( DATA_Lib.Gen[i].strName[k] == '$' )
					DATA_Lib.Gen[i].strName[k] = ' ';
			}
			/*
			fscanf( fp, "%s %d %d %d %d %d\n",
				DATA_Lib.Gen[i].strName,
				&DATA_Lib.Gen[i].nWuLi,
				&DATA_Lib.Gen[i].nZhiLi,
				&DATA_Lib.Gen[i].nType,
				&DATA_Lib.Gen[i].nLevel,
				&DATA_Lib.Gen[i].dwLife
			);
			*/
			DATA_Lib.Gen[i].nLevel--;
			DATA_Lib.Gen[i].dwLife = DATA_Lib.Unit[nGenFile[DATA_Lib.Gen[i].nType-1]].dwLife;
			DATA_Lib.Gen[i].nID = i;
			DATA_Lib.Gen[i].nJunZhu = j+1;
		}		
	}

	FSCAN.scan_close ();
//	fclose( fp );
	return TRUE;
}// end of DATA_ReadDATAFile()

// 在这里,为了使游戏运行速度加快一些,需要把音效部分的WAV文件拷贝到
// 硬盘上,而只有当硬盘上没有音效文件时才从光盘读取(保持其兼容性)。
// 该函数内部做了相应修改,但外部接口没有变。
BOOL DATA_ReadWAVEFile( HWND hwnd, LPCTSTR filename, LPCTSTR path, LPCTSTR pathWAVE )
{
	char fname[_MAX_FNAME];

	if( path != 0 )
	{
		strcpy( fname, path );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );
	strcpy( DATA_WAVE_Lib.strWAVFile, fname );	// 保存文件名

	char strPath[_MAX_PATH];
	strcpy( strPath, GAME_strSetupDirectory );

	CScan_read FSCAN;
	FSCAN.scan_open (fname);
	/*
	FILE * fp = fopen( fname, "rb" );//wave.dat
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+11, "Cannot open Wave file: ", fname );
		return FALSE;
	}
	*/
	int nNum;
	char strFile[_MAX_FNAME], strFile1[33];
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
	for( int i=0; i<nNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%s\n", strFile1 ));
		//fscanf( fp, "%s\n", strFile1 );
		//strcpy( strFile, pathWAVE );
		strcpy( strFile, strPath );
		strcat( strFile, "\\" );
		strcat( strFile, pathWAVE );
		strcat( strFile, strFile1 );
		strcpy( DATA_WAVE_Lib.Music[i].strName, strFile );
	}

	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &nNum ));
	//fscanf( fp, "%d\n", &nNum );
	for( i=0; i<nNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%s\n", strFile1 ));
		//fscanf( fp, "%s\n", strFile1 );
		//strcpy( strFile, pathWAVE );
/*
		strcpy( strFile, strPath );
		strcat( strFile, "\\" );
		strcat( strFile, pathWAVE );
		strcat( strFile, strFile1 );
*/
		strcpy( strFile, strFile1 );
		strcpy( DATA_WAVE_Lib.Effect[i].strName, strFile );
	}
	FSCAN.scan_close ();
	//fclose( fp );
	return TRUE;
}
/*
BOOL DATA_ReloadWAVEFile( HWND hwnd )
{
	char fname[_MAX_NAME];
	strcpy( fname, DATA_WAVE_Lib.strWAVFile );	// 保存文件名

	FILE * fp = fopen( fname, "rb" );
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+11, "Cannot open Wave file: ", fname );
		return FALSE;
	}

	int nNum;
	fscanf( fp, "%d\n", &nNum );
	char strFile[33], strFile1[33];
	for( int i=0; i<nNum; i++ )
	{
		fscanf( fp, "%s\n", strFile1 );
		strcpy( strFile, pathWAVE );
		strcat( strFile, strFile1 );
		strcpy( DATA_WAVE_Lib.Effect[i].strName, strFile );
	}

	fclose( fp );
	return TRUE;
}
*/
///////////

///////////
BOOL MAP_ReadOtherFile( HWND hwnd, LPCTSTR filename, LPCTSTR pathDAT, LPCTSTR pathBMP )
{
	CScan_read	FSCAN;
	char fname[_MAX_FNAME];
	if( pathDAT != 0 )
	{
		strcpy( fname, pathDAT );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );

	FSCAN.scan_open (fname);//lwc other.dat
	/*FILE * fp = fopen( fname, "rb" );
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+11, "Cannot open Others file: ", fname );
		return FALSE;
	}
	*/
	// initialize
	memset( MAP_Lib.Other, 0, sizeof( MAP_Lib.Other ) );

	char strFile[65];//, strFile1[33];
	// 读取压缩的单元图素文件LWC
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%s\n", strFile ));
	//fscanf( fp, "%s\n", strFile );
	strcpy( MAP_Lib.strBMP, GAME.strPathBMP );
	strcat( MAP_Lib.strBMP, strFile );

	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n", &MAP_Lib.nOtherNum ));
	//fscanf( fp, "%d\n", &MAP_Lib.nOtherNum );	// 读取其它图素文件个数
	for( int i=0; i<MAP_Lib.nOtherNum; i++ )
	{
		FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d,%d,%d,%d\n", 
					  &MAP_Lib.Other[i].nMaxFrame, 
					  &MAP_Lib.Other[i].szItem.cx, &MAP_Lib.Other[i].szItem.cy,
					  &MAP_Lib.Other[i].nID ) );
		/*
		fscanf( fp, "%d,%d,%d,%s\n", &MAP_Lib.Other[i].nMaxFrame, 
			&MAP_Lib.Other[i].szItem.cx, &MAP_Lib.Other[i].szItem.cy,
			strFile1 );
		
		strcpy( strFile, pathBMP );
		strcat( strFile, strFile1 );
		strcat( strFile, ".BMP" );
		strcpy( MAP_Lib.Other[i].strFile, strFile );*/
	}
	FSCAN.scan_close ();
	//fclose( fp );
	return TRUE;
}// end of MAP_ReadOtherFile()

// load all the mouse cursors in system
// used in CBMain.cpp
#include "DDCompo.h"
extern class CDDCursor MAIN_Cursors[4];	// declared in CBMain.cpp
extern CDDPalette pal, palMain;	// defined in CBMain.cpp
BOOL MAIN_LoadCursors( HWND hwnd, LPCTSTR filename , LPCTSTR path )
{
	char  fname[_MAX_FNAME];
	short picture_number;
	CScan_read	FSCAN;

	if( path != 0 )
	{
		strcpy( fname, path );
		strcat( fname, filename );
	}
	else	strcpy( fname, filename );
	FSCAN.scan_open (fname);//mouse.dat
	/*
	FILE * fp = fopen( fname, "rt" );//mouse.dat
	
	if( !fp )
	{
		ErrorMessage( hwnd, MAP_ERROR_ID+12, "Cannot open cursor map file: ", fname );
		return FALSE;
	}
	*/

	// read cursor one
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n",&picture_number));
	//fscanf( fp, "%s\n", fname );
	int nRow[10] ={4,4,4,4,4,4,4,4,4,4};	// 每个状态的帧数
	POINT ptHot[10]={{1,3},{26,17},{26,17},{26,17},{24,19},{24,19},{26,17},{26,17},{1,3},{26,17}};// 热点
//	int nRow[1] ={4};	// 每个状态的帧数
//	POINT ptHot[1]={1,3};//,{26,17},{26,17},{24,19},{24,19},{26,17},{26,17}};// 热点
	if( !MAIN_Cursors[0].LoadEx( "res\\mouse.lwc","res\\mouse.idx", picture_number, 10, nRow, ptHot ) )
	{
		ErrorMessage( hwndGame, MAP_ERROR_ID+20, " Cannot load Cursor file", "mouse" );
			return FALSE;
	}
//	MAIN_Cursors[0].SetSpeed( 3 );
//	MAIN_Cursors[0].SetState( 0 );

	// read cursor two
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n",&picture_number));
	//fscanf( fp, "%s\n", fname );
	int nRow1[8]={1,1,1,1,1,1,1,1};
	POINT ptHot1[8]={{0,0},{10,0},{23,0},{23,10},{23,23},{13,23},{0,23},{0,13}};
	if( !MAIN_Cursors[1].LoadEx( "res\\mouse.lwc","res\\mouse.idx", picture_number,8, nRow1, ptHot1 ) )
	{
		ErrorMessage( hwndGame, MAP_ERROR_ID+21, " Cannot load Cursor file", "mouse" );
			return FALSE;
	}

	// read cursor three
	FSCAN.l_scan (sscanf (FSCAN.expand_buf,"%d\n",&picture_number));
	//fscanf( fp, "%s\n", fname );
	int nRow2[1]={4};
	POINT ptHot2[1]={{1,3}};
	pal.SetPalette();
	if( !MAIN_Cursors[2].LoadEx( "res\\mouse.lwc","res\\mouse.idx", picture_number, 1, nRow2, ptHot2 ) )
	{
		ErrorMessage( hwndGame, MAP_ERROR_ID+22, " Cannot load Cursor file", fname );
		return FALSE;
	}
	palMain.SetPalette();
	FSCAN.scan_close ();
	//fclose( fp );
	return TRUE;
}

///////////
#endif

⌨️ 快捷键说明

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