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

📄 misc.cpp

📁 战场登陆器vc++源代码很好用的哦精彩精彩
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Misc.cpp: implementation of the CMisc class.
//
//////////////////////////////////////////////////////////////////////

#include "Misc.h"
#include "GlobalDef.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMisc::CMisc()
{

}

CMisc::~CMisc()
{

}

char CMisc::cGetNextMoveDir(short sX, short sY, short dX, short dY)
{
 short absX, absY;
 char  cRet = 0;

	absX = sX - dX;
	absY = sY - dY;

	if ((absX == 0) && (absY == 0)) cRet = 0;

	if (absX == 0) {
		if (absY > 0) cRet = 1;
		if (absY < 0) cRet = 5;
	}
	if (absY == 0) {
		if (absX > 0) cRet = 7;
		if (absX < 0) cRet = 3;
	}
	if ( (absX > 0)	&& (absY > 0) ) cRet = 8;
	if ( (absX < 0)	&& (absY > 0) ) cRet = 2;
	if ( (absX > 0)	&& (absY < 0) ) cRet = 6;
	if ( (absX < 0)	&& (absY < 0) ) cRet = 4;	

	return cRet;
}


void CMisc::GetPoint(int x0, int y0, int x1, int y1, int * pX, int * pY, int * pError, int iCount)
{
 int dx, dy, x_inc, y_inc, error, index;
 int iResultX, iResultY, iCnt = 0;


	if ((x0 == x1) && (y0 == y1)) {
		*pX = x0;
		*pY = y0;
		return;
	}

	error = *pError;

	iResultX = x0;
	iResultY = y0;

	dx = x1-x0;
	dy = y1-y0;

	if(dx>=0) x_inc = 1;
	else {
		x_inc = -1;
		dx = -dx;
	}
	if(dy>=0) y_inc = 1;
	else {
		y_inc = -1;
		dy = -dy;
	}

	if(dx>dy)
	{
		for(index = 0; index <= dx; index++)
		{
			error += dy;
			if(error > dx)
			{
				error -= dx;
				iResultY += y_inc;
			}
			iResultX += x_inc;
			iCnt++;
			if (iCnt >= iCount) break;
		}
	}
	else
	{
		for(index = 0; index <= dy; index++)
		{
			error += dx;
			if(error > dy)
			{
				error -= dy;
				iResultX += x_inc;
			}
			iResultY += y_inc;
			iCnt++;
			if (iCnt >= iCount) break;
		}
	}

	*pX = iResultX;
	*pY = iResultY;
	*pError = error;
}


void CMisc::GetDirPoint(char cDir, int * pX, int * pY)
{
	switch(cDir) {
	case 1:	*pY--; break;
	case 2:	*pY--; *pX++;	break;
	case 3:	*pX++; break;
	case 4:	*pX++; *pY++;	break;
	case 5:	*pY++; break;
	case 6:	*pX--; *pY++;	break;
	case 7:	*pX--; break;
	case 8:	*pX--; *pY--;	break;
	}
}

BOOL CMisc::bCheckValidString(char * str)
{
	int len = strlen(str);
	for (int i = 0; i < len; i++)
	{
		if(str[i] == ' ') return FALSE;
	}
	return TRUE;
}

BOOL CMisc::bCheckIMEString(char * str)
{
	int len = strlen(str);
	for (int i = 0; i < len; i++)
	{
		if(str[i] < 0) return FALSE;
	}
	return TRUE;
}

void CMisc::ReplaceString(char * pStr, char cFrom, char cTo)
{
	int len = strlen(pStr);
	for (int i = 0; i < len; i++)
	{
		if (pStr[i] == cFrom) pStr[i] = cTo;
	}
}

char CMisc::cCalcDirection(short sX, short sY, short dX, short dY)
{
 double dTmp1, dTmp2, dTmp3;
// short x,y;
// double r;

	if ((sX == dX) && (sY == dY)) return 1;
	if ((sX == dX) && (sY != dY)) {
		if (sY > dY) return 1;
		else return 5;
	}										 

	if ((sX != dX) && (sY == dY)) {
		if (sX > dX) return 7;
		else return 3;
	}

	dTmp1 = (double)(dX - sX);
	dTmp2 = (double)(dY - sY);
	dTmp3 = dTmp1 / dTmp2;

	if (dTmp3 < -3) {
		if (sX > dX) return 7;
		else return 3;
	}

	if (dTmp3 > 3) {
		if (sX > dX) return 7;
		else return 3;
	}

	if ((dTmp3 > -0.3333f) && (dTmp3 <= 0.3333f)) {
		if (sY > dY) return 1;
		else return 5;
	}

	if ((dTmp3 > 0.3333f) && (dTmp3 <= 3.0f)) {
		if (sX > dX) return 8;
		else return 4;
	}

	if ((dTmp3 >= -0.3333f) && (dTmp3 < 3.0f)) {
		if (sX > dX) return 7;
		else return 3;
	}

	if ((dTmp3 >= -3.0f) && (dTmp3 < -0.3333f)) {
		if (sX > dX) return 6;
		else return 2;
	}
	
	return 1;
}

void CMisc::ColorTransfer(char cPixelFormat, COLORREF fcolor, WORD * wR, WORD * wG, WORD * wB)
{
 WORD result = 0x0000;
	switch(cPixelFormat)
	{
	case 1:
		// R
		result = result|(WORD)((fcolor&0x000000f8)<<8);
		// G
		result = result|(WORD)((fcolor&0x0000fc00)>>5);
		// B
		result = result|(WORD)((fcolor&0x00f80000)>>19);
		break;
	
	case 2:
		// R
		result = result|(WORD)((fcolor&0x000000f8)<<7);
		// G
		result = result|(WORD)((fcolor&0x0000f800)>>6);
		// B
		result = result|(WORD)((fcolor&0x00f80000)>>19);
		break;
	}
	
	switch(cPixelFormat) {
	case 1:
		*wR = (result&0xF800) >> 11;
		*wG = (result&0x7E0) >> 5;
		*wB = (result&0x1F);
		break;

	case 2:
		*wR = (result&0x7C00) >> 10;
		*wG = (result&0x3E0) >> 5;
		*wB = (result&0x1F);
		break;
	}
}


BOOL CMisc::bEncode(char cKey, char *pStr)
{
	int iLen = strlen(pStr);
	for (int i = 0; i <= iLen-1; i++)
	{
		pStr[i] += i;
		pStr[i]  = pStr[i] ^ (cKey ^ (iLen - i));
	}
	return TRUE;
}


BOOL CMisc::bDecode(char cKey, char *pStr)
{
	int iLen = strlen(pStr);
	for (int i = 0; i <= iLen-1; i++)
	{
		pStr[i]  = pStr[i] ^ (cKey ^ (iLen - i));
		pStr[i] -= i;
	}
	return TRUE;
}

#if DEF_LANGUAGE == 3
BOOL CMisc::bCheckValidName(char *pStr)
{
 int i, iLen;
 
	iLen = strlen(pStr);
	for (i = 0; i < iLen; i++) {
		// 漂荐 巩磊啊 甸绢啊 乐绰 版快 芭何 
		if ( (pStr[i] == ',')  || (pStr[i] == '=') || (pStr[i] == ' ')  || (pStr[i] == '\n') ||
			 (pStr[i] == '\t') || (pStr[i] == '.') || (pStr[i] == '\\') || (pStr[i] == '/')  ||
			 (pStr[i] == ':')  || (pStr[i] == '*') || (pStr[i] == '?')  || (pStr[i] == '<')  || 
			 (pStr[i] == '>')  || (pStr[i] == '|') || (pStr[i] == '"')  || (pStr[i] == '`') ) return FALSE;
		if ((i <= iLen-2) && ((unsigned char)pStr[i] >= 128)) {
			if (((unsigned char)pStr[i] == 164) && ((unsigned char)pStr[i+1] >= 161) && 
				((unsigned char)pStr[i+1] <= 211)) {
				// 利钦	
				
			}
			else
			if (((unsigned char)pStr[i] >= 176) && ((unsigned char)pStr[i] <= 200) && 
				((unsigned char)pStr[i+1] >= 161) && ((unsigned char)pStr[i+1] <= 254)) {
				// 利钦 
				
			}
			else return FALSE;
			i++; // !!! 刘啊矫难具父 嘎促.
		}
	} //	for (i = 0; i < iLen; i++) {
	return TRUE;
}
#elif DEF_LANGUAGE == 1
BOOL CMisc::bCheckValidName(char *pStr)
{
 int i, iLen;
	
	iLen = strlen(pStr);
	
	if( iLen == 0 ) {
		return FALSE;
	}

	for (i = 0; i < iLen; i++) {
		if( (unsigned char)pStr[i] >= 0xa1 && (unsigned char)pStr[i] <= 0xf9 )
		{
			
			if ( (unsigned char)pStr[i] >= 0xa1 && (unsigned char)pStr[i] <=0xa2 )
			{

				if ( (unsigned char)pStr[i+1] >= 0x40 && (unsigned char)pStr[i+1] <= 0xfe ) return FALSE;

			}
			else if( (unsigned char)pStr[i] == 0xf3 )
			{
				if ( (unsigned char)pStr[i+1] >= 0x40 && (unsigned char)pStr[i+1] <= 0xbf ) return FALSE;

			}
			else if( (unsigned char)pStr[i] == 0xf9 )
			{
				if ( (unsigned char)pStr[i+1] >= 0xdd && (unsigned char)pStr[i+1] <= 0xfe ) return FALSE;
			}
			i++;
		}else if ( (pStr[i] == ',')  || (pStr[i] == '=') ||   (pStr[i] == '\n') ||
			 (pStr[i] == '\t') || (pStr[i] == '.') || (pStr[i] == '\\') || (pStr[i] == '/')  ||

⌨️ 快捷键说明

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