📄 sprite.h
字号:
#pragma once
#include "stdafx.h"
typedef WORD BOUNDSACTION;
const BOUNDSACTION BA_STOP = 0,
BA_WRAP = 1,
BA_BOUNCE = 2,
BA_DIE = 3;
typedef WORD SPRITEACTION;
const SPRITEACTION SA_NONE = 0x0000L,
SA_KILL = 0x0001L,
SA_ADDSPRITE = 0x0002L,
SA_SHOW = 0x0003L;
class Sprite
{
public:
// Construction & destruction function
Sprite(Bitmap* pBitmap);
Sprite(Bitmap* pBitmap, RECT& rcBounds,
BOUNDSACTION baBoundAction = BA_STOP);
Sprite(Bitmap* pBitmap, POINT ptPostion,
POINT ptVelocity, int iZorder,
RECT& rcBounds, BOUNDSACTION ba = BA_STOP);
virtual ~Sprite(void);
// Normal method
virtual void Update();
virtual void Draw(HDC hDC);
// This method is used to test mouse curser is single clicked the sprite
BOOL IsPointInside(int x, int y);
// Data access method
RECT& GetPosition() { return m_rcPosition; };
RECT& GetCollision() { return m_rcCollision; };
POINT GetVelocity() { return m_ptVelocity; };
int GetZOrder() { return m_iZOrder; };
int GetWidth()
{ return (m_pBitmap->GetWidth() / m_iNumFrames); };
int GetHeight() { return m_pBitmap->GetHeight(); };
BOOL IsHidden() { return m_bHidden; };
BOOL IsDead() { return m_bDead; };
void SetPosition(int x, int y);
void SetPosition(POINT ptPosition);
void SetPosition(RECT& rcPosition)
{ CopyRect(&m_rcPosition, &rcPosition); };
void OffsetPosition(int x, int y);
void SetVelocity(int x , int y);
void SetVelocity(POINT ptVelocity);
void SetZOrder(int iZOrder) { m_iZOrder = iZOrder; };
void SetBounds(RECT& rcBounds) { CopyRect(&m_rcBounds, &rcBounds); };
void SetBoundsAction(BOUNDSACTION ba) { m_baBoundAction = ba; };
void SetHidden(BOOL bHidden) { m_bHidden = bHidden; };
void SetDead(BOOL bDead) { m_bDead = bDead; };
void SetSpriteAction(SPRITEACTION sa) { m_saSpriteAction = sa; };
// 计算碰撞矩形,virtual可以让派生类自己定义计算方法
virtual void CalcCollisionRect();
BOOL TestCollision(Sprite* pTestSprite);
// 允许精灵添加精灵,如飞机发射子弹
virtual Sprite* AddSprite();
void Kill() { m_bDead = TRUE; };
// 设置精灵动画参数
void SetNumFrames(int iNumFrames);
void SetFrameDelay(int iFrameDelay);
virtual void UpdateFrame();
protected:
Bitmap *m_pBitmap; // 位图
RECT m_rcPosition; // 位置矩形
RECT m_rcCollision; // 碰撞矩形
POINT m_ptVelocity; // 速度
int m_iZOrder; // Z Order
RECT m_rcBounds; // 活动范围矩形
BOUNDSACTION m_baBoundAction; // 活动范围边界行为
SPRITEACTION m_saSpriteAction; // 精灵行为
BOOL m_bHidden;
BOOL m_bDead;
BOOL m_bOneCycle;
// 为支持动画设置的参数
int m_iNumFrames, m_iCurFrame;
int m_iFrameDelay, m_iFrameTrigger;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -