funcode seafish

//Lessonx.h
/
//
//
//
//
/
#ifndef _LESSON_X_H_
#define _LESSON_X_H_
//
#include <Windows.h>
#include<vector>
#include<cmath>
using namespace std;

/
//
// 游戏总管类。负责处理游戏主循环、游戏初始化、结束等工作
class	CGameMain
{
   
private:
	int				m_iGameState;				// 游戏状态,0:结束或者等待开始;1:初始化;2:游戏进行中
	CSprite*yellowyu;
	CSprite*blueyu;
	CSprite*lvyu;
	CSprite*words;
	CSprite*xiaohuang;
	CSprite*paopaoyu;
	CSprite*redyu;
	CSprite*lvma;
	CSprite*huahua;
	vector<CSprite*>m_vFish;//存储多条鱼

	
	CSprite* FindSpriteByName(const char*szName);
	
	
	float g_fScreenLeft,g_fScreenRight,g_fScreenTop,g_fScreenBottom;

public:
	CGameMain();            //构造函数
	~CGameMain();           //析构函数  

	// Get方法
	int				GetGameState()											{
    return m_iGameState; }
	
	// Set方法
	void			SetGameState( const int iState )				{
    m_iGameState	=	iState; }
	
	// 游戏主循环等
	void			GameMainLoop( float	fDeltaTime );
	void			GameInit();
	void			GameRun( float fDeltaTime );
	void			GameEnd();
	void 			OnMouseMove( const float fMouseX, const float fMouseY );
	void 			OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY );
	void 			OnMouseUp( const int iMouseType, const float fMouseX, const float fMouseY );
	void 			OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress );
	void 			OnKeyUp( const int iKey );
	void 			OnSpriteColSprite( const char *szSrcName, const char *szTarName );
	void 			OnSpriteColWorldLimit( const char *szName, const int iColSide );
	
};

/
// 
extern CGameMain	g_GameMain;

#endif // _LESSON_X_H_
//CommonClass.h
/
//
//
//
//
/
#ifndef _COMMON_CLASS_H_
#define _COMMON_CLASS_H_
//
#include <windows.h>
/
//
// 全局变量、宏定义
#define		MAX_NAME_LEN		128	// 名字长度
/
//
// Sprite精灵与世界边界碰撞响应定义( 碰撞之后API OnSpriteColWorldLimit 将被调用 )
enum EWorldLimit
{
   
	WORLD_LIMIT_OFF,			// 关闭与世界边界的碰撞
	WORLD_LIMIT_NULL,			// 碰撞之后引擎不做任何处理,由各游戏自己处理响应
	WORLD_LIMIT_RIGID,			// 刚性物理碰撞反应
	WORLD_LIMIT_BOUNCE,			// 反弹模式
	WORLD_LIMIT_CLAMP,			// 小幅反弹,逐渐停止模式(比如篮球落地)
	WORLD_LIMIT_STICKY,			// 碰撞之后静止
	WORLD_LIMIT_KILL,			// 碰撞之后精灵将被删除

	WORLD_LIMIT_INVALID,		//	无效值
};
/
//
/// 精灵与精灵之间、精灵与地图中其它精灵之间的碰撞响应( 碰撞之后API OnSpriteColSprite 将被调用 )
enum ECollisionResponse
{
   
	COL_RESPONSE_OFF,			//	关闭碰撞响应(不调用OnSpriteColSprite)

	COL_RESPONSE_RIGID,			//	刚性物理碰撞响应
	COL_RESPONSE_BOUNCE,		//	反弹模式
	COL_RESPONSE_CLAMP,			//	小幅反弹,逐渐停止模式(比如篮球落地)
	COL_RESPONSE_STICKY,		//	碰撞之后静止
	COL_RESPONSE_KILL,			//	碰撞之后精灵将被删除
	COL_RESPONSE_CUSTOM,		//	碰撞之后引擎不做任何处理,由各游戏自己处理响应

	COL_RESPONSE_INVALID,		//	无效值
};
//================================================================================
//
// 鼠标按键值定义
enum MouseTypes 
{
   
	MOUSE_LEFT		=	0,		// 左键
	MOUSE_RIGHT		=	1,		// 右键
	MOUSE_MIDDLE	=	2		// 中键
};
/
//
// 键盘KEY值定义
enum KeyCodes 
{
   
	KEY_NULL          = 0x000,     ///< Invalid KeyCode
	KEY_BACKSPACE     = 0x001,
	KEY_TAB           = 0x002,
	KEY_ENTER         = 0x003,
	KEY_CONTROL       = 0x004,
	KEY_ALT           = 0x005,
	KEY_SHIFT         = 0x006,
	KEY_PAUSE         = 0x007,
	KEY_CAPSLOCK      = 0x008,
	KEY_ESCAPE        = 0x009,
	KEY_SPACE         = 0x00a,
	KEY_PAGE_DOWN     = 0x00b,
	KEY_PAGE_UP       = 0x00c,
	KEY_END           = 0x00d,
	KEY_HOME          = 0x00e,
	KEY_LEFT          = 0x00f,
	KEY_UP            = 0x010,
	KEY_RIGHT         = 0x011,
	KEY_DOWN          = 0x012,
	KEY_PRINT         = 0x013,
	KEY_INSERT        = 0x014,
	KEY_DELETE        = 0x015,
	KEY_HELP          = 0x016,

	KEY_0             = 0x017,
	KEY_1             = 0x018,
	KEY_2             = 0x019,
	KEY_3             = 0x01a,
	KEY_4             = 0x01b,
	KEY_5             = 0x01c,
	KEY_6             = 0x01d,
	KEY_7             = 0x01e,
	KEY_8             = 0x01f,
	KEY_9             = 0x020,

	KEY_A             = 0x021,
	KEY_B             = 0x022,
	KEY_C             = 0x023,
	KEY_D             = 0x024,
	KEY_E             = 0x025,
	KEY_F             = 0x026,
	KEY_G             = 0x027,
	KEY_H             = 0x028,
	KEY_I             = 0x029,
	KEY_J             = 0x02a,
	KEY_K             = 0x02b,
	KEY_L             = 0x02c,
	KEY_M             = 0x02d,
	KEY_N             = 0x02e,
	KEY_O             = 0x02f,
	KEY_P             = 0x030,
	KEY_Q             = 0x031,
	KEY_R             = 0x032,
	KEY_S             = 0x033,
	KEY_T             = 0x034,
	KEY_U             = 0x035,
	KEY_V             = 0x036,
	KEY_W             = 0x037,
	KEY_X             = 0x038,
	KEY_Y             = 0x039,
	KEY_Z             = 0x03a,

	KEY_TILDE         = 0x03b,
	KEY_MINUS         = 0x03c,
	KEY_EQUALS        = 0x03d,
	KEY_LBRACKET      = 0x03e,
	KEY_RBRACKET      = 0x03f,
	KEY_BACKSLASH     = 0x040,
	KEY_SEMICOLON     = 0x041,
	KEY_APOSTROPHE    = 0x042,
	KEY_COMMA         = 0x043,
	KEY_PERIOD        = 0x044,
	KEY_SLASH         = 0x045,
	KEY_NUMPAD0       = 0x046,
	KEY_NUMPAD1       = 0x047,
	KEY_NUMPAD2       = 0x048,
	KEY_NUMPAD3       = 0x049,
	KEY_NUMPAD4       = 0x04a,
	KEY_NUMPAD5       = 0x04b,
	KEY_NUMPAD6       = 0x04c,
	KEY_NUMPAD7       = 0x04d,
	KEY_NUMPAD8       = 0x04e,
	KEY_NUMPAD9       = 0x04f,
	KEY_MULTIPLY      = 0x050,
	KEY_ADD           = 0x051,
	KEY_SEPARATOR     = 0x052,
	KEY_SUBTRACT      = 0x053,
	KEY_DECIMAL       = 0x054,
	KEY_DIVIDE        = 0x055,
	KEY_NUMPADENTER   = 0x056,

	KEY_F1            = 0x057,
	KEY_F2            = 0x058,
	KEY_F3            = 0x059,
	KEY_F4            = 0x05a,
	KEY_F5            = 0x05b,
	KEY_F6            = 0x05c,
	KEY_F7            = 0x05d,
	KEY_F8            = 0x05e,
	KEY_F9            = 0x05f,
	KEY_F10           = 0x060,
	KEY_F11           = 0x061,
	KEY_F12           = 0x062,
	KEY_F13           = 0x063,
	KEY_F14           = 0x064,
	KEY_F15           = 0x065,
	KEY_F16           = 0x066,
	KEY_F17           = 0x067,
	KEY_F18           = 0x068,
	KEY_F19           = 0x069,
	KEY_F20           = 0x06a,
	KEY_F21           = 0x06b,
	KEY_F22           = 0x06c,
	KEY_F23           = 0x06d,
	KEY_F24           = 0x06e,

	KEY_NUMLOCK       = 0x06f,
	KEY_SCROLLLOCK    = 0x070,
	KEY_LCONTROL      = 0x071,
	KEY_RCONTROL      = 0x072,
	KEY_LALT          = 0x073,
	KEY_RALT          = 0x074,
	KEY_LSHIFT        = 0x075,
	KEY_RSHIFT        = 0x076,
	KEY_WIN_LWINDOW   = 0x077,
	KEY_WIN_RWINDOW   = 0x078,
	KEY_WIN_APPS      = 0x079,
	KEY_OEM_102       = 0x080,

	KEY_MAC_OPT       = 0x090,
	KEY_MAC_LOPT      = 0x091,
	KEY_MAC_ROPT      = 0x092,

	KEY_BUTTON0       = 0x0100,
	KEY_BUTTON1       = 0x0101,
	KEY_BUTTON2       = 0x0102,
	KEY_BUTTON3       = 0x0103,
	KEY_BUTTON4       = 0x0104,
	KEY_BUTTON5       = 0x0105,
	KEY_BUTTON6       = 0x0106,
	KEY_BUTTON7       = 0x0107,
	KEY_BUTTON8       = 0x0108,
	KEY_BUTTON9       = 0x0109,
	KEY_BUTTON10      = 0x010A,
	KEY_BUTTON11      = 0x010B,
	KEY_BUTTON12      = 0x010C,
	KEY_BUTTON13      = 0x010D,
	KEY_BUTTON14      = 0x010E,
	KEY_BUTTON15      = 0x010F,
	KEY_BUTTON16      = 0x0110,
	KEY_BUTTON17      = 0x0111,
	KEY_BUTTON18      = 0x0112,
	KEY_BUTTON19      = 0x0113,
	KEY_BUTTON20      = 0x0114,
	KEY_BUTTON21      = 0x0115,
	KEY_BUTTON22      = 0x0116,
	KEY_BUTTON23      = 0x0117,
	KEY_BUTTON24      = 0x0118,
	KEY_BUTTON25      = 0x0119,
	KEY_BUTTON26      = 0x011A,
	KEY_BUTTON27      = 0x011B,
	KEY_BUTTON28      = 0x011C,
	KEY_BUTTON29      = 0x011D,
	KEY_BUTTON30      = 0x011E,
	KEY_BUTTON31      = 0x011F,
	KEY_ANYKEY         = 0xfffe
};
//
//
// 类:CSprite
// 所有精灵的基类。包括下面的静态精灵,动态精灵,文字,特效等均由此类继承下去
// 一般的图片精灵从本类继承下去即可。只有特殊的精灵,比如带动画的精灵,才需要从动态精灵继承下去
//
class CSprite
{
   
private:
	char		m_szName[MAX_NAME_LEN];		// 精灵名字

public:

	// 构造函数,需要传入一个非空的精灵名字字符串。如果传入的是地图里摆放好的精灵名字,则此类即与地图里的精灵绑定
	// 如果传入的是一个新的精灵名字,则需要调用成员函数 CloneSprite,复制一份精灵对象实例,才与实际的地图精灵关联起来
	// szCloneName : 预先存在于场景中,需要克隆的精灵名字
	CSprite( const char *szName );
	CSprite( const char *szName, const char *szCloneName );
	virtual ~CSprite();

	// GetName
	// 返回值:返回精灵名字
	const char *GetName();


	// CloneSprite:复制(创建)一个精灵。精灵的创建方式:先在地图中摆放一个精灵做为模板,设置好各项参数,然后在代码里使用此函数克隆一个实例
	// 返回值:true表示克隆成功,false克隆失败。失败的原因可能是在地图中未找到对应名字的精灵
	// 参数 szSrcName:地图中用做模板的精灵名字
	//
	bool		CloneSprite( const char *szSrcName );

	// DeleteSprite:在地图中删除与本对象实例关联的精灵
	//
	void		DeleteSprite();

	// SetSpriteVisible:设置精灵隐藏或者显示(可见不可见)
	// 参数 bVisible:true 可见 false不可见
	//
	void		SetSpriteVisible( const bool bVisible );

	// IsSpriteVisible:获取该精灵当前是否可见
	//
	bool		IsSpriteVisible();

	// SetSpriteEnable:禁止或者启用该精灵。被禁止的精灵将不参与任何响应,包括不移动,没有碰撞等,仅仅是在地图中显示
	// 参数 bEnable:true启用 false禁止
	//
	void		SetSpriteEnable( const bool bEnable );

	// SetSpriteScale:设置精灵的缩放值
	// 参数 fScale:缩放值。大于0的值
	//
	void		SetSpriteScale( const float fScale );

	// IsPointInSprite:判断某个坐标点是否位于精灵内部
	// 参数 fPosX:X坐标点
	// 参数 fPosY:Y坐标点
	//
	bool 		IsPointInSprite( const float fPosX, const float fPosY );

	// SetSpritePosition:设置精灵位置
	// 参数 fPosX:X坐标
	// 参数 fPosY:Y坐标
	//
	void		SetSpritePosition( const float fPosX, const float fPosY );

	// Set
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值