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

📄 csprite.cpp

📁 Visual C++ 游戏开发与设计实例 源代码(所有)
💻 CPP
字号:
// CMAIN LIB - APPLICATION AND DIRECT WRAPPER
//
// Written by Mauricio Teichmann Ritter
//
// Copyright (C) 2002, Brazil. All rights reserved.
// 
//


// cSprite.cpp: implementation of the cSprite class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "cSprite.h"

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

cSprite::cSprite()
{

}

cSprite::~cSprite()
{

}

void cSprite::Destroy()
{
	m_surfTile.Destroy();
}

BOOL cSprite::Draw(LPDIRECTDRAWSURFACE7 lpDest, int iDestX, int iDestY, BOOL bAdvance, int iSrcX, int iSrcY, int iWidth, int iHeight)
{
	int iCol, iRow;

	iCol = m_iAbsolutePosition % m_iCols;
	iRow = m_iAbsolutePosition / m_iCols;

	if(bAdvance)
		Next();
	
	if(iWidth == -1)
		iWidth = m_iSpriteWidth;

	if(iHeight == -1)
		iHeight = m_iSpriteHeight;

	return m_surfTile.Draw(lpDest, iDestX, iDestY, (iCol * m_iSpriteWidth)+iSrcX, (iRow * m_iSpriteHeight)+iSrcY, iWidth, iHeight);

}

BOOL cSprite::Create(HINSTANCE hInst, UINT nResource, int iTileWidth, int iTileHeight, COLORREF dwColorKey, int iSpriteWidth,int iSpriteHeight)
{
	Destroy();

	m_surfTile.Create(iTileWidth, iTileHeight, dwColorKey);
	m_surfTile.LoadBitmap(hInst, nResource);

	m_iCols = iTileWidth  / iSpriteWidth;
	m_iRows = iTileHeight / iSpriteHeight;

	m_iSpriteWidth  = iSpriteWidth;
	m_iSpriteHeight = iSpriteHeight;

	m_iAbsolutePosition = 0;

	return TRUE;
}



void cSprite::Next()
{
	m_iAbsolutePosition++;
	if(m_iAbsolutePosition > (m_iCols * m_iRows - 1))
		m_iAbsolutePosition = 0;
}

void cSprite::Previous()
{
	m_iAbsolutePosition--;
	if(m_iAbsolutePosition < 0)
		m_iAbsolutePosition = (m_iCols * m_iRows - 1);
}


BOOL cSprite::IsEnd()
{
	if(m_iAbsolutePosition == (m_iCols * m_iRows - 1))
		return TRUE;
	else
		return FALSE;
}

BOOL cSprite::IsBegin()
{
	if(m_iAbsolutePosition == 0)
		return TRUE;
	else
		return FALSE;
}

void cSprite::Rewind()
{
	m_iAbsolutePosition = 0;
}

⌨️ 快捷键说明

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