游戏开发—简单精灵

Posted on 2010-03-20 21:44  625747  阅读(376)  评论(0)    收藏  举报
代码
//
// SPRITE
//
// Copyright (c) 2000-2001 Chihiro.SAKAMOTO (HyperWorks)
//
#ifndef __sprite_h__
#define __sprite_h__
#include
"MxImage.h"
class CMxImage;
class CSprite {
public:
CSprite();
CSprite(CMxImage
*image, POINT pos);
CSprite(CMxImage
*image, POINT pos, POINT src);
virtual ~CSprite();

void Set(CMxImage *image, POINT pos);
void Set(CMxImage *image, POINT pos, POINT src);
void Draw(CMxImage *_image,CMxImage *image);
void Draw(CMxImage *image, const RECT rect);
void GetRect(RECT *r) const;
//
void SetDrawPos(int x, int y);
void SetDrawPos(POINT point);
POINT GetDrawPos()
const;
void SetSrcPos(int x, int y);
POINT GetSrcPos()
const;
BOOL PtIn(POINT pt);

protected:
POINT draw_pos;
POINT src_pos;
CMxImage
*image;
} ;

// 构造函数
//
inline CSprite::CSprite()
{
draw_pos.x
= 0;
draw_pos.y
= 0;
src_pos.x
= 0;
src_pos.y
= 0;

image
= 0;
}

inline CSprite::CSprite(CMxImage
*_image, POINT pos)
{
draw_pos
= pos;
src_pos.x
= 0;
src_pos.y
= 0;

image
= _image;
}

inline CSprite::CSprite(CMxImage
*_image, POINT pos, POINT src)
{
draw_pos
= pos;
src_pos
= src;

image
= _image;
}

////将参数设定在构造好的对象上

inline
void CSprite::Set(CMxImage *_image, POINT pos)
{
draw_pos
= pos;
image
= _image;
}

inline
void CSprite::Set(CMxImage *_image, POINT pos, POINT src)
{
draw_pos
= pos;
src_pos
= src;
image
= _image;
}



// 设定图像复制源的座标
//
inline void CSprite::SetSrcPos(int x, int y)
{
src_pos.x
= x;
src_pos.y
= y;
}

// 取得图像复制源的座标
//
inline POINT CSprite::GetSrcPos() const
{
return src_pos;
}

// 设定图像复制目的(描绘)的座标
//
inline void CSprite::SetDrawPos(int x, int y)
{
draw_pos.x
= x;
draw_pos.y
= y;
}

inline
void CSprite::SetDrawPos(POINT point)
{
draw_pos
= point;
}

// 取得图像复制目的(描绘)的座标
//
inline POINT CSprite::GetDrawPos() const
{
return draw_pos;
}

// 取得图像的显示范围
//
inline void CSprite::GetRect(RECT *r) const
{
r
->left = draw_pos.x;
r
->top = draw_pos.y;
r
->right = draw_pos.x + 53;
r
->bottom = draw_pos.y + 62;
}

// 指定座标是否在图像显示的范围内?
//
inline BOOL CSprite::PtIn(POINT pt)
{
RECT rect;
GetRect(
&rect);
return PtInRect (&rect,pt);
}

#endif

 

代码
//
// Sprite
//
// Copyright (c) 2000-2001 Chihiro.SAKAMOTO (HyperWorks)
//
#include "MxImage.h"
#include
"Sprite.h"

// 析构函数
//
CSprite::~CSprite()
{
}

// sprite的绘制
//
void CSprite::Draw(CMxImage *_image,CMxImage *image)
{
RECT rect;
//rect.left = 0;
//rect.bottom = 62;
//rect.right = 53;
//rect.top = 0;

GetRect(
&rect);
_image
->MixImage(image, rect, src_pos);
//_image->MixImage(image, rect);
}

// sprite的绘制(有修剪)
//
void CSprite::Draw(CMxImage *_image, const RECT rect)
{
//RECT r;
////GetRect(&r);
//r = rect;
//if (TRUE) {
// POINT src = src_pos;
// if (draw_pos.x < r.left) {
// src.x += r.left - draw_pos.x;
// }
// if (draw_pos.y < r.top) {
// src.y += r.top - draw_pos.y;
// }
// _image->MixImage(image, r, src);
//}
}