弹弹堂游戏代码

弹弹堂游戏代码
弹弹堂游戏代码

#ifndef _COMMON_CLASS_H_

#define _COMMON_CLASS_H_

#include

// 全局变量、宏定义

#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_INV ALID, // 无效值

};

/// 精灵与精灵之间、精灵与地图中其它精灵之间的碰撞响应( 碰撞之后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_INV ALID, // 无效值

};

// 鼠标按键值定义

enum MouseTypes

{

MOUSE_LEFT = 0, // 左键

MOUSE_RIGHT = 1, // 右键

MOUSE_MIDDLE = 2 // 中键

};

// 键盘KEY值定义

enum KeyCodes

{

KEY_NULL = 0x000, ///< Invalid KeyCode

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_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_MULTIPL Y = 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 );

// SetSpritePositionX:只设置精灵X坐标

// 参数fPosX:X坐标

//

void SetSpritePositionX( const float fPosX );

// SetSpritePositionY:只设置精灵Y坐标

// 参数fPosY:Y坐标

//

void SetSpritePositionY( const float fPosY );

// GetSpritePositionX:获取精灵X坐标

// 返回值:精灵的X坐标

//

float GetSpritePositionX();

// GetSpritePositionY:获取精灵Y坐标

// 返回值:精灵的Y坐标

//

float GetSpritePositionY();

// GetSpriteLinkPointPosX:获取精灵链接点X坐标。链接点是依附于精灵的一个坐标点,可以在编辑器里增加或者删除

// 参数iId:链接点序号,第一个为1,后面依次递加

//

float GetSpriteLinkPointPosX( const int iId );

// GetSpriteLinkPointPosY:获取精灵链接点Y坐标。链接点是依附于精灵的一个坐标点,可以在编辑器里增加或者删除

// 参数iId:链接点序号,第一个为1,后面依次递加//

float GetSpriteLinkPointPosY( const int iId );

// SetSpriteRotation:设置精灵的旋转角度

// 参数fRot:旋转角度,范围0 - 360

//

void SetSpriteRotation( const float fRot );

// GetSpriteRotation:获取精灵的旋转角度

// 返回值:精灵的旋转角度

//

float GetSpriteRotation();

// SetSpriteAutoRot:设置精灵按照指定速度自动旋转// 参数fRotSpeed:旋转速度

//

void SetSpriteAutoRot( const float fRotSpeed );

// SetSpriteWidth:设置精灵外形宽度

// 参数fWidth:宽度值,大于0

//

void SetSpriteWidth( const float fWidth );

// GetSpriteWidth:获取精灵外形宽度

// 返回值:精灵宽度值

//

float GetSpriteWidth();

// SetSpriteHeight:设置精灵外形高度

// 参数fHeight:精灵高度值

//

void SetSpriteHeight( const float fHeight );

// GetSpriteHeight:获取精灵外形高度

// 返回值:精灵高度值

//

float GetSpriteHeight();

// SetSpriteFlipX:设置精灵图片X方向翻转显示

// 参数bFlipX:true 翻转false不翻转(恢复原来朝向) //

void SetSpriteFlipX( const bool bFlipX );

// GetSpriteFlipX:获取当前精灵图片X方向是否是翻转显示

// 返回值:true 翻转false不翻转

//

bool GetSpriteFlipX();

// SetSpriteFlipY:设置精灵图片Y方向翻转显示

// 参数bFlipY:true 翻转false不翻转(恢复原来朝向)

//

void SetSpriteFlipY( const bool bFlipY );

// GetSpriteFlipY:获取当前精灵图片Y方向是否是翻转显示

// 返回值:true 翻转false不翻转

//

bool GetSpriteFlipY();

// SetSpriteFlip:同时设置精灵翻转X及Y方向

// 参数bFlipX:true 翻转false不翻转(恢复原来朝向)

// 参数bFlipY:true 翻转false不翻转(恢复原来朝向)

//

void SetSpriteFlip( const bool bFlipX, const bool bFlipY );

// SetSpriteLifeTime:设置精灵的生命时长,时间到了之后将自动被删除

// 参数fLifeTime:生命时长,单位秒

//

void SetSpriteLifeTime( const float fLifeTime );

// GetSpriteLifeTime:获取精灵生命时长

// 返回值:生命时长,单位秒

//

float GetSpriteLifeTime();

// SpriteMoveTo:让精灵按照给定速度移动到给定坐标点

// 参数fPosX:移动的目标X坐标值

// 参数fPosY:移动的目标Y坐标值

// 参数fSpeed:移动速度

// 参数bAutoStop:移动到终点之后是否自动停止

//

void SpriteMoveTo( const float fPosX, const float fPosY, const float fSpeed, const bool bAutoStop );

// SpriteRotateTo:让精灵按照给定速度旋转到给定的角度

// 参数fRotation:给定的目标旋转值

// 参数fRotSpeed:旋转速度

// 参数bAutoStop:旋转到终点之后是否自动停止

//

void SpriteRotateTo( const float fRotation, const float fRotSpeed, const bool bAutoStop );

// SetSpriteWorldLimit:设置精灵的世界边界坐标限制及碰撞模式

// 参数Limit:碰撞到世界边界之后的响应模式,如果为OFF,则是关闭世界边界碰撞。其它值见EWorldLimit

// 参数fLeft:边界的左边X坐标

// 参数fTop:边界的上边Y坐标

// 参数fRight:边界的右边X坐标

// 参数fBottom:边界的下边Y坐标

//

void SetSpriteWorldLimit( const EWorldLimit Limit, const float fLeft, const float fTop, const float fRight, const float fBottom );

// SetSpriteWorldLimitMode:设置精灵的世界边界碰撞模式

// 参数Limit:碰撞到世界边界之后的响应模式,如果为OFF,则是关闭世界边界碰撞。其它值见EWorldLimit

//

void SetSpriteWorldLimitMode( const EWorldLimit Limit );

// SetSpriteWorldLimitMin:设置精灵的世界边界上边及左边坐标限制

// 参数fLeft:边界的左边X坐标

// 参数fTop:边界的上边Y坐标

//

void SetSpriteWorldLimitMin( const float fLeft, const float fTop );

// SetSpriteWorldLimitMax:设置精灵的世界边界下边及右边坐标限制

// 参数fRight:边界的右边X坐标

// 参数fBottom:边界的下边Y坐标

//

void SetSpriteWorldLimitMax( const float fRight, const float fBottom );

// GetSpriteWorldLimitLeft:获取精灵世界边界左边界限制

//

float GetSpriteWorldLimitLeft();

// GetSpriteWorldLimitTop:获取精灵世界边界上边界限制

//

float GetSpriteWorldLimitTop();

// GetSpriteWorldLimitRight:获取精灵世界边界右边界限制

//

float GetSpriteWorldLimitRight();

// GetSpriteWorldLimitBottom:获取精灵世界边界下边界限制

//

float GetSpriteWorldLimitBottom();

// SetSpriteCollisionSend:设置精灵是否可以发送(产生)碰撞

// 精灵的碰撞方式为:当A移动中碰上B时,如果A是可以产生碰撞的,B是可以接受碰撞的,则这2个物体会产生碰撞,精灵碰撞的API将被调用。否则无碰撞发生// 参数bSend:true 可以产生false 不产生

//

void SetSpriteCollisionSend( const bool bSend );

// SetSpriteCollisionReceive:设置精灵是否可以接受碰撞

// 精灵的碰撞方式为:当A移动中碰上B时,如果A是可以产生碰撞的,B是可以接受碰撞的,则这2个物体会产生碰撞,精灵碰撞的API将被调用。否则无碰撞发生// 参数bReceive:true 可以接受false 不接受

//

void SetSpriteCollisionReceive( const bool bReceive );

// SetSpriteCollisionActive:同时设置精灵是否可以产生及接受碰撞

// 精灵的碰撞方式为:当A移动中碰上B时,如果A是可以产生碰撞的,B是可以接受碰撞的,则这2个物体会产生碰撞,精灵碰撞的API将被调用。否则无碰撞发生// 参数bSend:true 可以产生false 不产生

// 参数bReceive:true 可以接受false 不接受

//

void SetSpriteCollisionActive( const bool bSend, const bool bReceive );

// SetSpriteCollisionPhysicsSend:设置精灵是否可以发送(产生)物理碰撞

// 参数bSend:true 可以产生false 不产生

//

void SetSpriteCollisionPhysicsSend( const bool bSend );

// SetSpriteCollisionPhysicsReceive:设置精灵是否可以接受物理碰撞

// 参数bReceive:true 可以接受false 不接受

//

void SetSpriteCollisionPhysicsReceive( const bool bReceive );

// GetSpriteCollisionSend:获取精灵当前是否是可以产生碰撞

// 返回值:true 可以产生false 不产生

//

bool GetSpriteCollisionSend();

// GetSpriteCollisionReceive:获取精灵当前是否是可以接受碰撞

// 返回值:true 可以接受false 不接受

//

bool GetSpriteCollisionReceive();

// SetSpriteCollisionResponse:设置精灵与精灵的碰撞响应模式

// 参数Response:响应模式,如果为OFF,则为关闭碰撞响应,碰撞API将不会被调用。其它值见ECollisionResponse

//

void SetSpriteCollisionResponse( const ECollisionResponse Response );

// SetSpriteCollisionMaxIterations:设置精灵碰撞之后的最大反弹次数

// 参数iTimes:反弹次数

//

void SetSpriteCollisionMaxIterations( const int iTimes );

// SetSpriteForwardMovementOnly:设置精灵是否只能朝前移动

// 参数bForward:true 只能朝前移动false 可以朝其他方向移动

//

void SetSpriteForwardMovementOnly( const bool bForward );

// GetSpriteForwardMovementOnly:获取精灵当前是否只能朝前移动

// 返回值:true 只能朝前移动false 可以朝其它方向移动

//

bool GetSpriteForwardMovementOnly();

// SetSpriteForwardSpeed:设置精灵向前的速度

// 参数fSpeed:速度

//

void SetSpriteForwardSpeed( const float fSpeed );

// SetSpriteImpulseForce:设置精灵瞬间推力

// 参数fForceX:X方向推力大小

// 参数fForceY:Y方向推力大小

// 参数bGravitic:是否计算重力

//

void SetSpriteImpulseForce( const float fForceX, const float fForceY, const bool bGravitic );

// SetSpriteImpulseForcePolar:按角度朝向设置精灵瞬间推力

// 参数fPolar:角度朝向

// 参数fForce:推力大小

// 参数bGravitic:是否计算重力

//

void SetSpriteImpulseForcePolar( const float fPolar, const float fForce, const bool

bGravitic );

// SetSpriteConstantForceX:设置精灵X方向常量推力

// 参数fForceX:X方向推力大小

//

void SetSpriteConstantForceX( const float fForceX );

// SetSpriteConstantForceY:设置精灵Y方向常量推力

// 参数fForceY:Y方向推力大小

//

void SetSpriteConstantForceY( const float fForceY );

// SetSpriteConstantForceGravitic:精灵在计算常量推力的时候,是否计算重力

// 参数bGravitic:是否计算重力

//

void SetSpriteConstantForceGravitic( const bool bGravitic );

// SetSpriteConstantForce:设置精灵常量推力

// 参数fForceX:X方向推力大小

// 参数fForceY:Y方向推力大小

// 参数bGravitic:是否计算重力

//

void SetSpriteConstantForce( const float fForceX, const float fForceY, const bool bGravitic );

// SetSpriteConstantForcePolar:按角度朝向设置精灵常量推力

// 参数fPolar:角度朝向

// 参数fForce:推力大小

// 参数bGravitic:是否计算重力

//

void SetSpriteConstantForcePolar( const float fPolar, const float fForce, const bool bGravitic );

// StopSpriteConstantForce:停止精灵常量推力

//

void StopSpriteConstantForce();

// SetSpriteForceScale:按倍数缩放精灵当前受的推力

// 参数fScale:缩放值

//

void SetSpriteForceScale( const float fScale );

// SetSpriteAtRest:暂停/继续精灵的各种受力计算

// 参数bRest:true 暂停false 继续

//

void SetSpriteAtRest( const bool bRest );

// GetSpriteAtRest:获取精灵当前是否在暂停中

// 返回值:true 暂停中false 正常

//

bool GetSpriteAtRest( );

// SetSpriteFriction:设置精灵摩擦力

// 参数fFriction:摩擦力大小

//

void SetSpriteFriction( const float fFriction );

// SetSpriteRestitution:设置精灵弹力

// 参数fRestitution:弹力值大小

//

void SetSpriteRestitution( const float fRestitution );

// SetSpriteMass:设置精灵质量

// 参数fMass:质量大小

//

void SetSpriteMass( const float fMass );

// GetSpriteMass:获取精灵质量

// 返回值:质量大小

//

float GetSpriteMass();

// SetSpriteAutoMassInertia:开启或者关闭精灵惯性

// 参数bStatus:true 开启false 关闭

//

void SetSpriteAutoMassInertia( const bool bStatus );

// SetSpriteInertialMoment:设置精灵惯性大小

// 参数fInert:惯性大小

//

void SetSpriteInertialMoment( const float fInert );

// SetSpriteDamping:设置精灵衰减值

// 参数fDamp:衰减值大小

//

void SetSpriteDamping( const float fDamp );

// SetSpriteImmovable:设置精灵是否不可移动

// 参数bImmovable:true 不可以移动false 可以移动

//

void SetSpriteImmovable( const bool bImmovable );

// GetSpriteImmovable:获取精灵当前是否不可以移动

// 返回值:true 不可以移动false 可以移动

//

bool GetSpriteImmovable();

// SetSpriteLinearVelocity:设置精灵移动速度

// 参数fVelX:X方向速度

// 参数fVelY:Y方向速度

//

void SetSpriteLinearVelocity( const float fVelX, const float fV elY );

// SetSpriteLinearVelocityX:设置精灵X方向移动速度

// 参数fVelX:X方向速度

//

void SetSpriteLinearVelocityX( const float fVelX );

// SetSpriteLinearVelocityY:设置精灵Y方向移动速度

// 参数fVelY:Y方向速度

//

void SetSpriteLinearVelocityY( const float fVelY );

// SetSpriteLinearVelocityPolar:按角度朝向设置精灵移动速度

// 参数fSpeed:移动速度

// 参数fPolar:角度朝向

//

void SetSpriteLinearVelocityPolar( const float fSpeed, const float fPolar );

// SetSpriteAngularV elocity:设置精灵角度旋转速度

// 参数fAngular:角度旋转速度

//

void SetSpriteAngularVelocity( const float fAngular );

// SetSpriteMinLinearVelocity:设置精灵最小速度

// 参数fMin:最小速度值

//

void SetSpriteMinLinearVelocity( const float fMin );

// SetSpriteMaxLinearVelocity:设置精灵最大速度

// 参数fMax:最大速度值

//

void SetSpriteMaxLinearVelocity( const float fMax );

// SetSpriteMinAngularVelocity:设置精灵最小角速度

// 参数fMin:最小角速度

//

void SetSpriteMinAngularVelocity( const float fMin );

// SetSpriteMaxAngularVelocity:设置精灵最大角速度

// 参数fMax:最大角速度

//

void SetSpriteMaxAngularVelocity( const float fMax );

// GetSpriteLinearVelocityX:获取精灵X方向速度

// 返回值:X方向速度

//

float GetSpriteLinearVelocityX();

// GetSpriteLinearVelocityY:获取精灵Y方向速度

// 返回值:Y方向速度

//

float GetSpriteLinearVelocityY();

// SpriteMountToSprite:将一个精灵绑定到另一个精灵上,暂时的成为另一个精灵的一部分,跟随其运动等

// 参数szDstName:承载绑定的母体精灵名字

// 参数fOffSetX:绑定偏移X

// 参数fOffsetY:绑定偏移Y

// 返回值:返回一个绑定ID

//

int SpriteMountToSprite( const char *szDstName, const float fOffSetX, const float fOffsetY );

// SpriteMountToSpriteLinkPoint:将一个精灵绑定到另一个精灵上,绑定位置为指定的链接点,暂时的成为另一个精灵的一部分,跟随其运动等

// 参数szDstName:承载绑定的母体精灵名字

// 参数iPointId:链接点序号

// 返回值:返回一个绑定ID

//

int SpriteMountToSpriteLinkPoint( const char *szDstName, const int iPointId );

// SetSpriteMountRotation:设置精灵的绑定朝向,即相对于母体的朝向

// 参数fRot:角度朝向,0 - 360

//

void SetSpriteMountRotation( const float fRot );

// GetSpriteMountRotation:获取精灵的绑定朝向,即相对于母体的朝向

// 返回值:角度朝向

//

float GetSpriteMountRotation();

// SetSpriteAutoMountRotation:设置精灵绑定之后自动旋转

// 参数fRot:旋转速度

//

void SetSpriteAutoMountRotation( const float fRot );

// GetSpriteAutoMountRotation:获取精灵绑定之后的自动旋转值

// 返回值:旋转速度

//

float GetSpriteAutoMountRotation();

// SetSpriteMountForce:绑定至另一个精灵时,附加的作用力

// 参数fFroce:作用力

//

void SetSpriteMountForce( const float fForce );

// SetSpriteMountTrackRotation:绑定的精灵是否跟随母体旋转

// 参数bTrackRotation:true 跟随false 不跟随

//

void SetSpriteMountTrackRotation( const bool bTrackRotation );

// SetSpriteMountOwned:母体被删除的时候,绑定的精灵是否也跟着被删除// 参数bMountOwned:true 跟着false 不跟着

//

void SetSpriteMountOwned( const bool bMountOwned );

// SetSpriteMountInheritAttributes:绑定的时候,是否继承母体的属性

// 参数bInherAttr:true 继承false 不继承

//

void SetSpriteMountInheritAttributes( const bool bInherAttr );

// SpriteDismount:将已经绑定的精灵进行解绑

//

void SpriteDismount();

// GetSpriteIsMounted:判断精灵是否绑定在另一个精灵上

// 返回值:true 绑定false 不绑定

//

bool GetSpriteIsMounted();

// GetSpriteMountedParent:获取绑定的母体精灵的名字

// 返回值:母体精灵名字,如果未绑定,则返回空字符串

//

const char* GetSpriteMountedParent();

// SetSpriteColorRed:更改精灵显示颜色中的红色。默认精灵的红绿蓝三颜色的值均为255,修改其中一项将可以改变其颜色

// 参数iCol:颜色范围0 - 255

//

void SetSpriteColorRed( const int iCol );

// SetSpriteColorGreen:更改精灵显示颜色中的绿色。默认精灵的红绿蓝三颜色的值均为255,修改其中一项将可以改变其颜色

// 参数iCol:颜色范围0 - 255

//

void SetSpriteColorGreen( const int iCol );

// SetSpriteColorBlue:更改精灵显示颜色中的蓝色。默认精灵的红绿蓝三颜色的值均为255,修改其中一项将可以改变其颜色

// 参数iCol:颜色范围0 - 255

//

void SetSpriteColorBlue( const int iCol );

// SetSpriteColorAlpha:设置精灵透明度

// 参数iCol:透明度,值0 - 255,从完全透明至完全不透明

//

void SetSpriteColorAlpha( const int iCol );

// GetSpriteColorRed:获取精灵显示颜色中的红色值

// 返回值:颜色值

//

int GetSpriteColorRed();

// GetSpriteColorGreen:获取精灵显示颜色中的绿色值

// 返回值:颜色值

//

int GetSpriteColorGreen();

// GetSpriteColorBlue:获取精灵显示颜色中的蓝色值

// 返回值:颜色值

//

int GetSpriteColorBlue();

// GetSpriteColorAlpha:获取精灵透明度

// 返回值:透明度

//

int GetSpriteColorAlpha();

};

//////////////////////////////////////////////////////////////////////////////

//

// 类:CStaticSprite

// 静态精灵(静态图片显示),从CSprite精灵基类继承下来,比基类多了几个控制精灵图片显示的函数

//

class CStaticSprite : public CSprite

{

public:

CStaticSprite( const char *szName );

CStaticSprite( const char *szName, const char *szCloneName );

~CStaticSprite();

// SetStaticSpriteImage:设置/更改静态精灵的显示图片

// 参数szImageName:图片名字

// 参数iFrame:该图片的显示帧数。为编辑器预览图里显示的1/N,范围为0 到N - 1 //

void SetStaticSpriteImage( const char *szImageName, const int iFrame );

// SetStaticSpriteFrame:设置静态精灵当前图片的显示帧数

// 参数iFrame:该图片的显示帧数。为编辑器预览图里显示的1/N,范围为0 到N - 1 //

void SetStaticSpriteFrame( const int iFrame );

//

// GetStaticSpriteImage:获取精灵当前显示的图片名字

// 返回值:图片名字

//

const char* GetStaticSpriteImage();

// GetStaticSpriteFrame:获取精灵当前显示的图片帧数

// 返回值:帧数

//

int GetStaticSpriteFrame();

};

// 类:CAnimateSprite

// 动态精灵(带图片动画),从CSprite精灵基类继承下来,比基类多了几个控制图片动画的

函数

//

class CAnimateSprite : public CSprite

{

public:

CAnimateSprite( const char *szName );

CAnimateSprite( const char *szName, const char *szCloneName );

~CAnimateSprite();

// SetAnimateSpriteFrame:设置动态精灵的动画帧数

// 参数iFrame:动画帧数

//

void SetAnimateSpriteFrame( const int iFrame );

// GetAnimateSpriteAnimationName:获取动态精灵当前动画名字

// 返回值:动画名字

//

const char* GetAnimateSpriteAnimationName();

// GetAnimateSpriteAnimationTime:获取动画精灵当前动画时间长度

// 返回值:长度,单位秒

//

float GetAnimateSpriteAnimationTime();

// IsAnimateSpriteAnimationFinished:判断动态精灵当前动画是否播放完毕,只针对非循环动画而言

// 返回值:true 完毕false 未完毕

//

bool IsAnimateSpriteAnimationFinished();

// AnimateSpritePlayAnimation:动画精灵播放动画

// 参数szAnim:动画名字

// 参数bRestore:播放完毕后是否恢复当前动画

// 返回值:是否播放成功

//

bool AnimateSpritePlayAnimation( const char *szAnim, const bool bRestore );

};

//////////////////////////////////////////////////////////////////////////////

//

// 类:CTextSprite

// 文字精灵,亦属于精灵中的一种。基本用法:在地图里摆放一个“文字”物体,起个名字

// 然后在代码里定义一个文字精灵的对象实例,将此名字做为构造函数的参数,然后调用对应的成员函数更新文字显示即可

C++课程设计报告---21点纸牌游戏程序

#include #include #include #include #include #include class Game { public: Game() { win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=100,bet=0; player=0,cpu=0; char answer1[]="123456"; strcpy(answer,answer1); char answer2[]="654321"; strcpy(daan,answer2); }; void rules();//显示规则 void BET(); //下注 void deal();//交易 void run(Game &);//进行异常处理 void hit1();//拿下一牌 void hit2();//确保庄家不会爆庄并且点数大于16 void print();//打印出最后结果 void results();//最后的胜利结果 void check();//检查是否爆庄 Game operator=(Game &d);//运算符重载 void replay(char &ans);//是否进行新一轮的游戏 void clean();//清屏 void wait(int); void pause(); int GetInt(int,int); int random(long,long); private: int playerturns,cputurns,money; int win,lose,draw,bet; float player,cpu; char answer[7]; char daan[7]; }; //--------------------------------------------------------------------------------------- void Game::wait(int milli) {

纯C语言写的一个小型游戏-源代码

纯C语言写的一个小型游戏-源代码

/* A simple game*/ /*CopyRight: Guanlin*/ #include #include #include #include #include #include struct object_fix { char name[20]; char id[5]; char desc[500]; char action[30]; char im[5]; }; struct object_move { char name[20]; char id[5]; char desc[500]; int loc; int pwr; int strg; char im[5]; }; struct rover { char name[20]; char id[5]; char desc[500]; int pwr; int strg; int location[2]; char im[5]; }; struct map /* this is the map structure*/ { char data[20]; char add_data[20]; int amount; int x; /* this were the successor keeps it's x & y values*/ int y; }; struct location /*this structure is for the successor lister*/ { float height; char obj;

C程序课程设计报告(扫雷游戏)

C程序设计 扫雷游戏 一、设计题目:扫雷游戏 二、设计目的 1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养学生综合运用所学知识独立完成课题的能力。 3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基

本素质。 5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。 三、设计要求 1.汪洋和孔维亮组成设计小组。小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。 2.查阅相关资料,自学具体课题中涉及到的新知识。 3.采用结构化、模块化程序设计方法,功能要完善,界面要美观。 4.按要求写出课程设计报告,并于设计结束后1周内提交。 一概述 1)掌握数组指针的概念及其应用 2)培养团结合作精神 2. 课程设计的要求 要求我们有扎实的C语言知识,以及良好的编程习惯,能够熟练的应用循环,有毅力,还要求我们有较强的合作精神,善于总结。同时还要求我们自学C语言作图部分知识。在必要时还要上网查相关资料。 3.课程设计的主要设计思想 扫雷游戏主要用了一个10行10列的二维数组,刚开始利用random随机布雷。 每一个程序最主要的是算法。扫雷游戏算法的重点是一开始统计好每个格子周围有多少雷,当鼠标左键点在格子上时做出判断,如果周围8个格子有雷则显示出雷数,如果没有雷则显示空白格(在四个角的格子显示周围3个格子,其它边缘的格子显示周围5个的状态),我们在主函数中用两个for语句来判断周围雷数。我们还加了鼠标处理函数。 如果格子上有雷则调用函FailExitGame(),显示“Fail!”,游戏结束。若所有的雷都标出,且所有的格子都处理过,则调用函数ExitGame(),显示“OK,Good!”,游戏结束。游戏结束后,按任意键出去。

Java语言 扫雷游戏完整源代码

import javax.swing.ImageIcon; public class Block { String name; //名字,比如"雷"或数字int aroundMineNumber; //周围雷的数目 ImageIcon mineIcon; //雷的图标 boolean isMine=false; //是否是雷 boolean isMark=false; //是否被标记 boolean isOpen=false; //是否被挖开 public void setName(String name) { https://www.360docs.net/doc/d21707633.html,=name; } public void setAroundMineNumber(int n) { aroundMineNumber=n; } public int getAroundMineNumber() { return aroundMineNumber; } public String getName() { return name; } public boolean isMine() { return isMine; } public void setIsMine(boolean b) { isMine=b; } public void setMineIcon(ImageIcon icon){ mineIcon=icon; } public ImageIcon getMineicon(){ return mineIcon; }

public boolean getIsOpen() { return isOpen; } public void setIsOpen(boolean p) { isOpen=p; } public boolean getIsMark() { return isMark; } public void setIsMark(boolean m) { isMark=m; } } import java.util.*; import javax.swing.*; public class LayMines{ ImageIcon mineIcon; LayMines() { mineIcon=new ImageIcon("mine.gif"); } public void layMinesForBlock(Block block[][],int mineCount){ int row=block.length; int column=block[0].length; LinkedList list=new LinkedList(); for(int i=0;i0){ int size=list.size(); // list返回节点的个数 int randomIndex=(int)(Math.random()*size);

C语言游戏源代码最新版

C语言游戏源代码 1、简单的开机密码程序 #include "conio.h" #include "string.h" #include "stdio.h" void error() {window(12,10,68,10); textbackground(15); textcolor(132); clrscr(); cprintf("file or system error! you can't enter the system!!!"); while(1); /*若有错误不能通过程序*/ } void look() {FILE *fauto,*fbak; char *pass="c:\\windows\\password.exe"; /*本程序的位置*/ char a[25],ch; char *au="autoexec.bat",*bname="hecfback.^^^"; /*bname 是autoexec.bat 的备份*/ setdisk(2); /*set currently disk c:*/ chdir("\\"); /*set currently directory \*/ fauto=fopen(au,"r+"); if (fauto==NULL) {fauto=fopen(au,"w+"); if (fauto==NULL) error();} fread(a,23,1,fauto); /*读取autoexec.bat前23各字符*/ a[23]='\0'; if (strcmp(a,pass)==0) /*若读取的和pass指针一样就关闭文件,不然就添加*/ fclose(fauto); else {fbak=fopen(bname,"w+"); if (fbak==NULL) error(); fwrite(pass,23,1,fbak); fputc('\n',fbak); rewind(fauto); while(!feof(fauto)) {ch=fgetc(fauto); fputc(ch,fbak);} rewind(fauto); rewind(fbak); while(!feof(fbak))

JAVA编程~~21点游戏源代码

学号11730202 天津城建大学 Java 语言程序设计C 实验报告 实验1:21点游戏 学生姓名杨弘毅 班级卓越七班

实验一21点游戏 一、实验目的 1.掌握使用Java语言进行结构化程序设计; 2.熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 3.熟悉Eclipse开发环境,编写简单的Application程序,并编译和执行。 二、实验要求 1.调试程序、编译,运行后得到正确的结果; 2.写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。 三、实验环境 1.计算机一台; 2.JDK、MyEclipse工具软件。 四、实验内容 编写并运行21点游戏。 具有菜单形式的界面 掌握Random类基本用法 设计胜负判定算法 五、实验步骤 1.了解21点游戏的基本规则 2.用0到53代表52张扑克牌 3.完成洗牌发牌模块 4.设计胜负判定算法 源程序: package a; importjava.util.Scanner; importjava.util.Arrays; public class Play21 { int[] cards,computer,human;//定义一副54张牌,电脑5张,玩家5张 Scanner sr=new Scanner(System.in); public Play21(){//构造方法

cards=new int[54];//定义54个大小的数组表示扑克牌 Arrays.fill(cards,0);//54张牌全赋值零,一旦某一张牌被用了就赋1 computer=new int[5];//电脑5张牌 Arrays.fill(computer,0); human=new int[5];//人5张牌 Arrays.fill(human,0); } public void clear(){//使数组内所有数据赋值0没有用过,用过的赋值1 Arrays.fill(cards,0); Arrays.fill(computer,0); Arrays.fill(human,0); } public void start(){//开始游戏 System.out.println("-------------------------------------"); System.out.println("开始游戏!"); int n=1; for(inti=0;i<1;i++){//电脑和玩家先各抽1张 computer[i]=nextOne(); human[i]=nextOne(); } while(n<5){//牌数小于5时询问是否再要牌 show(human,n,1);//显示现在玩家的牌面

Java扫雷游戏源代码

import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.Timer; public class ScanLei1 extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private Container contentPane; private JButton btn; private JButton[] btns; private JLabel b1; private JLabel b2; private JLabel b3; private Timer timer; private int row=9; private int col=9; private int bon=10; private int[][] a; private int b; private int[] a1; private JPanel p,p1,p2,p3; public ScanLei1(String title){ super(title); contentPane=getContentPane(); setSize(297,377); this.setBounds(400, 100, 400, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); timer =new Timer(1000,(ActionListener) this); a = new int[row+2][col+2]; initGUI(); } public void initGUI(){ p3=new JPanel();

C#课程设计游戏21点

目录 一、课程设计的目的与要求 (2) 1.1 目的: (2) 1.2 要求: (2) 二、题目说明 (2) 2.1程序开发背景 (2) 2.2开发工具介绍 (2) 三、总体设计 (3) 四、详细说明 (3) 4.1 系统实施 (3) 五、遇到的问题和解决方法 (9) 六、课程设计总结 (9) 七、参考文献 (10)

一、课程设计的目的与要求 1.1 目的: (1)能够利用所学的基本知识和技能,解释和应用程序开发所涉及的相关知识。 (2)基本掌握面向对象程序开发的基本思路和方法; (3)要求学生达到熟练掌握.NET基本结构以及C#语言的基本知识和技能; (4)通过学习积累掌握简单的记事本,通讯录以及多媒体播放的开发技术。 1.2 要求: (1)掌握常用控件以及控件的常用属性的使用方法。 (2)掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。(3)熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。 (4)程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。 (5)程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。 二、题目说明 2.1程序开发背景 黑杰克又名BlackJack(简称21点),起源于法国,现已流传到世界各地。该游戏由2 到 6 个人玩,使用除大小王之外的52 张牌,游戏者的目标是使手中的牌的点数之和不超过21 点且尽量大。有着悠久的历史。黑杰克简称为21点,1700年左右法国赌场就有这种21点的纸牌游戏。1931年,当美国内华达州宣布赌博为合法活动时,21点游戏第一次公开出现在内华达州的赌场俱乐部,15年内,它取代掷骰子游戏,而一举成为非常流行的赌场庄家参与的赌博游戏。 21点本为赌博游戏,并不值得推荐,但其游戏性和娱乐性却很强,而且作为一款数字牌类游 能一定程度上锻炼逻辑思维和运算能力,本着这种想法,开发者想把这款传统的赌博游戏制作成适合各类人群休闲娱乐的小游戏,同时通过实践更加掌握c#平台的开发过程 2.2开发工具介绍 本程序是在Microsoft Visual studio C# 2005 Express的开发环境下完成的。

C语言扫雷源代码

C语言扫雷源代码.txt如果背叛是一种勇气,那么接受背叛则需要更大的勇气。爱情是块砖, 婚姻是座山。砖不在多,有一块就灵;山不在高,守一生就行。 #include #include #include #include /*鼠标信息宏定义*/ #define WAITING 0xff00 #define LEFTPRESS 0xff01 #define LEFTCLICK 0xff10 #define LEFTDRAG 0xff19 #define RIGHTPRESS 0xff02 #define RIGHTCLICK 0xff20 #define RIGHTDRAG 0xff2a #define MIDDLEPRESS 0xff04 #define MIDDLECLICK 0xff40 #define MIDDLEDRAG 0xff4c #define MOUSEMOVE 0xff08 struct { int num;/*格子当前处于什么状态,1有雷,0已经显示过数字或者空白格子*/ int roundnum;/*统计格子周围有多少雷*/ int flag;/*右键按下显示红旗的标志,0没有红旗标志,1有红旗标志*/ }Mine[10][10]; int gameAGAIN=0;/*是否重来的变量*/ int gamePLAY=0;/*是否是第一次玩游戏的标志*/ int mineNUM;/*统计处理过的格子数*/ char randmineNUM[3];/*显示数字的字符串*/ int Keystate; int MouseExist; int MouseButton; int MouseX; int MouseY; int up[16][16],down[16][16],mouse_draw[16][16],pixel_save[16][16]; void MouseMath()/*计算鼠标的样子*/ {int i,j,jj,k; long UpNum[16]={ 0x3fff,0x1fff,0x0fff,0x07ff, 0x03ff,0x01ff,0x00ff,0x007f, 0x003f,0x00ff,0x01ff,0x10ff,

JAVA21点游戏源代码

package com.easyjava.sample; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Stack; /** * * @author * 21点游戏 */ public class BlackJack { private Player player,com;// 玩家和电脑 private Dealer deck;// 一副牌 BufferedReader br; /** * 打印菜单 * 完成所有功能调用 */ public BlackJack() { // 初始化玩家,牌 player=new Player(); com=new Player(); deck=new Dealer(); String str = null; br=new BufferedReader(new InputStreamReader(System.in)); // 打印菜单 while(true){ player.playAgain(); com.playAgain(); System.out.println("\t\t\t黑杰克\n"); System.out.println("\t\t 1.开始游戏\n"); System.out.println("\t\t 2.查看比分\n"); System.out.println("\t\t 3.结束游戏\n"); System.out.println("\t请输入:"); try { str=br.readLine(); } catch (IOException e) { e.printStackTrace();

c语言课程设计源代码

c语言课程设计源代码标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]

学校运动会管理系统问题描述: (1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数; (2) 各项目名次取法有如下几种: 取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1; (3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。 (4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。 程序代码: #include<> #include<> #define N 3 #define M 3 #define W 3 char* n_number[3]={"1","院系2","院系3"}; char* m_number[3]={"1","男项2","男项3"};

char* w_number[3]={"女项1","女项2","女项3"}; int size=2; struct student { char num[10]; char name[20]; char xiangmu[20]; int score; char ximing[20]; }stu[100],temp; void input() um,&stu[i].name,&stu[i].xiangmu,&stu[i].score,&stu[i].ximing); iming,n_number[0])==0) iming); iming,n_number[h])==0) for(int s=0;s

扫雷游戏Java源代码详解

扫雷游戏Java源代码 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.Timer; public class ScanLei1 extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private Container contentPane; private JButton btn; private JButton[] btns; private JLabel b1; private JLabel b2; private JLabel b3; private Timer timer; private int row=9; private int col=9; private int bon=10; private int[][] a; private int b; private int[] a1; private JPanel p,p1,p2,p3; public ScanLei1(String title){ super(title); contentPane=getContentPane();

一个C语言写的简单贪吃蛇源代码

#include #include #include #include #include #include int grade=5,point=0,life=3; void set(),menu(),move_head(),move_body(),move(),init_insect(),left(),upon(),right(),down(),init_grap h(),food_f(),ahead(),crate(); struct bug { int x; int y; struct bug *last; struct bug *next; }; struct fd { int x; int y; int judge; }food={0,0,0}; struct bug *head_f=NULL,*head_l,*p1=NULL,*p2=NULL; void main() { char ch; initgraph(800,600); set(); init_insect(); while(1) { food_f(); Sleep(grade*10); setcolor(BLACK); circle(head_l->x,head_l->y,2); setcolor(WHITE); move_body(); if(kbhit()) { ch=getch(); if(ch==27) { ahead();

set(); } else if(ch==-32) { switch(getch()) { case 72:upon();break; case 80:down();break; case 75:left();break; case 77:right();break; } } else ahead(); } else { ahead(); } if(head_f->x==food.x&&head_f->y==food.y) { Sleep(100); crate(); food.judge=0; point=point+(6-grade)*10; if(food.x<30||food.y<30||food.x>570||food.y>570) life++; menu(); } if(head_f->x<5||head_f->x>595||head_f->y<5||head_f->y>595) { Sleep(1000); life--; food.judge=0; init_graph(); init_insect(); menu(); } for(p1=head_f->next;p1!=NULL;p1=p1->next) { if(head_f->x==p1->x&&head_f->y==p1->y) { Sleep(1000); life--; food.judge=0;

扫雷游戏的设计与开发1

扫雷游戏的设计与开发 摘要 本论文研究的是以Visual Basic 6.0为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归”这个概念而使其简单化。 本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有待以后完善。 关键词:扫雷;Visual Basic 6.0;事件;递归

The Design and Development of Mine Game Abstract What my thesis research for is basic on the develop environment of Visual Basic 6.0 , design and develop a mine game,its function is similar to the mine games of the Windows Operating System .The thesis has introduced the layout of mined areas and the method of how to create the mines at random. It use vairies of components in Visual Basic 6.0 and the combination of some simple calculations; the thesis lays emphasis on introducing the processing of each event in the game. Among these events ,the mouse event and the event of clearance of the area which isn’t close to the mine field are much more important.The theory of mouse event is that the intention of user is learned by the information sent out by the mouse and then the program runs according to the information .The other event is simplified by the introduction of the concept of recursion. This design has been completed the basic function of mine game. The details still need to be improved. Key words: Mine game, Visual Basic 6.0, Affairs, Recursion

C语言游戏源代码

语言游戏源代码1、简单地开机密码程序 "" "" "" () {()()()()(" ! ' !!!"); (); *若有错误不能通过程序* } () { *,*; *":\\\\"; *本程序地位置* []; *"",*".^^^"; *是地备份*(); * :*("\\"); * \*(,""); () {(,""); () ();}(); *读取前各字符* []'\'; (()) *若读取地和指针一样就关闭文件,不然就添加*(); {(,""); () ()()('\'); (); (()) {()();} (); (); (()){()();}()(); (); * * } } () { *""; [] ; () {()()()(); ; ()()()()(":"); () {[](); (>) {(); ;} *若字符多于个字符就结束本次输入* ([]) ;

([]> []<) *若字符是数字或字母才算数* {('*'); ;} ([]) *删除键* (>) {("\ \"); []'\'; ;} } []'\'; (()) ; {(); ()()()()(" !")();} } } () {(); (); } 2、彩色贪吃蛇 <> <> ; * 游戏速度*, , ; * 游戏分数* [] { , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

纯C语言写的一个小型游戏-源代码

/* A simple game*/ /*CopyRight: Guanlin*/ #include #include #include #include #include #include struct object_fix { char name[20]; char id[5]; char desc[500]; char action[30]; char im[5]; }; struct object_move { char name[20]; char id[5]; char desc[500]; int loc; int pwr; int strg; char im[5]; }; struct rover { char name[20]; char id[5]; char desc[500]; int pwr; int strg; int location[2]; char im[5]; }; struct map /* this is the map structure*/ { char data[20]; char add_data[20]; int amount; int x; /* this were the successor keeps it's x & y values*/ int y; }; struct location /*this structure is for the successor lister*/ { float height; char obj;

VB课程设计报告——扫雷游戏

VB课程设计报告 -------扫雷游戏马学清1008260132 指导老师:张小兵 一、题目介绍 在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活的一分,越来越多的人使用计算机办公、娱乐等等。 扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。我利用Turbo C编写了与它功能相仿的扫雷游戏,寓学于乐。 程序功能 二、程序功能 程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的“开始”按钮可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时失败。 三、程序设计目的 1.培养综合运用所学知识独立完成课题的能力。 2.更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 3.提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 4.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 5.培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6.对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核 四、游戏规则 设计10×10格区域,单击鼠标后,在此格中显示的数字,则表示它周围就有几个空格内含有的地雷数,周围没有地雷的显示空白,则不能再单击了。如果是地雷,则游戏结束。如果判断是地雷,可以单击鼠标右键标出,显示红色,要取消红旗标志则再单击鼠标右键,当所有地雷都标出,每个空格都处理过,那么游戏就胜利结束。 五、程序源代码 '级别 Private Sub Form_Load() '默认初级 dengji = 1 Call nandu(dengji)

扫雷游戏程序设计课程设计报告

课 程 设 计 扫雷游戏程序设计 2013 年 11 月 5 日 设计题目 学 号专业班级 学生姓名 指导教师

合肥工业大学课程设计任务书

一. 设计任务 (1)鼠标左击排雷,右击插小旗,打问号; (2)方格里面的数字表示方格周围的雷数; (3)能够显示未标记雷数和游戏用时; (4)雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。在任何情况下单击小脸可以重新开始游戏; (5)可进行游戏难度的设定:包括预定义的难度级别(雷区行数,列数和雷数),和自行定义雷区行数,列数和雷数的功能; (6)排行榜功能,扫雷成功时候,根据游戏用时更新排行榜。 二. 具体设计 (一)、设计思路 扫雷游戏是很经典也很有趣的一款游戏,这次的游戏程序设计要求设计出功能与原游戏相近的一款游戏,首先定义变量和类要画出游戏方格以及位图,设计游戏等级,等级越高方格越多雷数也越多;然后设置随机布雷以保证每次重新开始游戏都有不同的雷区地图;另外定义鼠标左击扫雷,左击标记周围埋雷情况,右击奇数次排雷偶数次取消上次排雷,以及扫雷第一次左击不能扫到雷。

(二)、设计表示: 1、鼠标左击排雷,右击插小旗,打问号; 2、方格里面的数字表示方格周围的雷数; 3、能够显示未标记雷数和游戏用时; 4、雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。在任何情况下单击小脸可以重新开始游戏; 5、可进行游戏难度的设定:包括预定义的难度级别(雷区行数,列数和雷数); 6、任何时候开始游戏第一次点击不会扫到雷。 由于时间等原因未完成功能: 排行榜和自行定义雷区行数,列数和雷数功能。 (四)、详细设计 1、添加位图 前十二幅是在雷区的,后四幅是按钮。为了便于加载,必须各自保证其连续性。 分别表示游戏进行的状态、结果胜利或触雷。

小游戏代码