01±±¿Æ´óÊîÆÚ¼ÆËã»úʵ¼ùFunCodeÓÎÏ·Éè¼Æ+C++¿Î³ÌÉè¼Æ_º£µ×ÊÀ½ç ÏÂÔØ±¾ÎÄ

2¡¢ Ê×Ïȼì²âÊÇ·ñÊÇÓãÅöײµ½Á˱߽磬Ôڸú¯ÊýÀïÃæÌí¼ÓÈçÏ´úÂ룬ÅжÏÅöµ½ÊÀ½ç±ß½ç

µÄ¾«ÁéÊÇ·ñΪyu_0£º

bool bFlip; float fSpeedX;

if(strcmp(szName, \ { }

3¡¢ Èç¹ûÓãÅöײµ½µÄÊÇÓұߵı߽磬ÔòͼƬ·­×ª£¬ÓãµÄËÙ¶ÈΪ¸ºËÙ¶È£¬¼´·´·½ÏòËÙ¶È£¬

ÔÚÉÏÃæµÄifÖÐÌí¼ÓÈçÏ´úÂ룺

if(iColSide == 1) // ÓÒ±ß { bFlip = true; fSpeedX = -15.f; } 4¡¢ Èç¹ûÅöµ½µÄÊÇ×ó±ß½ç£¬ÔòͼƬ²»·­×ª£¬ÓãµÄËÙ¶ÈΪÕýËÙ¶È£º

else if(iColSide == 0) // ×ó±ß { bFlip = false; fSpeedX = 15.f; } 5¡¢ ×îºóµ÷Óú¯Êý£¬Ê¹ÓãµÄͼƬ¸Ä±ä£¬ÉèÖÃÓãµÄËÙ¶È£º

m_pFish->SetSpriteFlipX( bFlip); m_pFish->SetSpriteLinearVelocity(fSpeedX, 0);

ʵÑéÎå¶àÌõÓãͬʱÀ´»ØÓζ¯

¡¾ÊµÑéÄÚÈÝ¡¿

²½ÖèÒ»¡¢Í¨¹ýÓãµÄÄ£°å´´½¨¶àÌõÓãµÄ¾«Áé

²½Öè¶þ¡¢ÓãÅöײµ½±ß½çºóÉèÖÃÓãµÄËÙ¶ÈΪ·´·½Ïò

¡¾ÊµÑé˼·¡¿

ʹÓÃforÑ­»·£¬Í¨¹ýÓãµÄÄ£°åÀûÓÃCloneSpriteº¯Êý´´½¨Ó㾫Á飬ÉèÖÃËüµÄ±ß½çÏÞÖÆ£¬¸øËüÒ»¸ö³õʼµÄËÙ¶È£¬×îºó½«¸ÃÓ㾫Áé¼ÓÈëµ½m_vFishÏòÁ¿Êý×éÖб£´æÏÂÀ´¡£

µ±ÏµÍ³¼ì²âµ½ÓãÅöײµ½ÊÀ½ç±ß½çµÄʱºòµ÷ÓÃSetSpriteLinearVelocityº¯ÊýʹÓãµÄËÙ¶ÈΪԭÀ´ËٶȵÄÏà·´Êý£¬ÈçÔ­À´ÊÇ15.f£¬ÅöײºóΪ-15.f£¬Ô­À´ÊÇ-15.f£¬ÅöײºóΪ15.f¡£ÔÙµ÷ÓÃSetSpriteFlipXº¯ÊýÊÇÓãµÄͼƬ·­×ª£¬ÈÃÓã¼ÌÐøÓζ¯¼´¿É¡£

¡¾ÊµÑéÖ¸µ¼¡¿

1¡¢ ½øÈëLessonX.hÌí¼ÓÈçϵijÉÔ±±äÁ¿ÉùÃ÷£¬À´´´½¨Ò»¸ö±£´æÓãµÄÈÝÆ÷¶ÔÏó£º

vector m_vFish;

2¡¢ ÒòΪÓõ½vectorÈÝÆ÷£¬Òò´ËÐèÒªÔÚLessonX.hÖÐÌí¼ÓÍ·ÎļþºÍÉùÃ÷ÃüÃû¿Õ¼ä£º

#include using namespace std;

3¡¢ ÔÚLessonX.cppÖеÄGameInitº¯ÊýÀïÃæÌí¼ÓÈçϵĴúÂ룺

// Éú³É¶àÌõÓ㾫Áé

for(int i=0; i<4; i++) {

char szName[128]; float fPosX, fPosY; float fSpeedX;

//½«szNameµÄÖµ¸³Îª¡±fish¡±¼ÓI,¼¶Ñ­»·Òò×Ó sprintf(szName, \

CSprite* tmpSprite=new CSprite(szName); tmpSprite->CloneSprite(\´´½¨¾«Áé }

4¡¢ Ëæ»úÉú³ÉÓãµÄλÖ㬲¢ÉèÖÃËüµÄÊÀ½ç±ß½çÏÞÖÆ¡£ÔÚÉÏÃæµÄforÑ­»·ÀïÌí¼Ó£º

fPosX = CSystem::RandomRange(m_fScreenLeft+10.f, m_fScreenRight-10.f); fPosY = CSystem::RandomRange(m_fScreenTop+10.f,m_fScreenBottom-10.f);

tmpSprite->SetSpritePosition(fPosX, fPosY); tmpSprite->SetSpriteWorldLimit(WORLD_LIMIT_NULL, m_fScreenLeft-20.f, m_fScreenTop, m_fScreenRight+20.f, m_fScreenBottom); 5¡¢ ×îºóËæ»úÉú³ÉÓãµÄËÙ¶È£¬²¢½«Ëü·ÅÈëm_vFishÊý×éÖб£´æ£º

fSpeedX = CSystem::RandomRange(10, 20); tmpSprite->SetSpriteLinearVelocity(fSpeedX, 0); m_vFish.push_back(tmpSprite);

push_backº¯ÊýÊÇc++ÖÐvectorµÄÄÚÖòÙ×÷£¬×÷ÓÃÊǽ«ÔªËØ´æ·ÅÔÚÊý×éµÄ×îºóÃæ¡£ 6¡¢ ´¦Àí¶àÌõÓãÓëÊÀ½ç±ß½çµÄÅöײµÄÎÊÌ⣬ÐèÒªÌí¼ÓÒ»¸ö×Ô¶¨Òå²éÕÒijÌõÓãµÄº¯Êý

FindSpriteByName

1£© ÔÚLessonX.hÖÐÌí¼Ó¸Ãº¯ÊýµÄÉùÃ÷£º

CSprite* FindSpriteByName(const char* szName);

2£© ÔÚLessonX.cppÖÐÌí¼Ó¸Ãº¯ÊýµÄ¶¨Ò壺

CSprite* CGameMain::FindSpriteByName(const char* szName) { }

3£© ʹÓÃforÑ­»·±éÀúÊý×飬ÕÒµ½Óë´«½øÈ¥µÄ¾«ÁéÃû³ÆÏàͬµÄÓã²¢·µ»Ø¼´¿É¡£ÔÚÉÏ

ÃæµÄº¯Êý¶¨ÒåÀïÃæÌí¼ÓÈçϵĴúÂ룺

for(int i=0;iGetName())==0) return m_vFish[i]; 7¡¢ ϵͳ¼ì²âµ½ÓãÅöײÁËÊÀ½ç±ß½ç£¬ÔòʹÓÃFindSpriteByNameº¯ÊýÕÒµ½¸ÃÓã²¢Ëæ»úÉú³É

Ëٶȸ³¸øËü£¬×îºóÅжÏÊÇÅöµ½Äĸö±ß½çÔÙ¾ö¶¨ÊÇ·ñ·­×ªÓãµÄͼƬ£º

1£© ¾ÍÊ×Ïȼì²âÊÇ·ñÊÇÓãÅöײµ½Á˱߽磬Ôڸú¯ÊýÀïÃæÌí¼ÓÈçÏ´úÂ룬ÅжÏÅöµ½ÊÀ

½ç±ß½çµÄ¾«ÁéÊÇ·ñΪ¿Ë¡yu_2µÄ¾«Á飺 if(strstr(szName,\ { }

2£© Èç¹ûÓãÅöײµ½µÄÊÇÓұߵı߽磬ÔòͼƬ·­×ª£¬ÓãµÄËÙ¶ÈΪ¸ºËÙ¶È£¬Óú¯ÊýËæÒâ

Éú³ÉÓãµÄËÙ¶ÈÖµ£¬ÔÚÉÏÃæµÄifÖÐÌí¼ÓÈçÏ´úÂ룺

if(iColSide == 1) // ÓÒ±ß { bFlip = true; fSpeedX = -CSystem::RandomRange(10, 20); }

3£© Èç¹ûÅöµ½µÄÊÇ×ó±ß½ç£¬ÔòͼƬ²»·­×ª£¬ÓãµÄËÙ¶ÈΪÕýËÙ¶È£º

else if(iColSide == 0) // ×ó±ß { bFlip = false; fSpeedX = CSystem::RandomRange(10, 20); }

4£© ÔÙµ÷Óú¯ÊýÕÒµ½ÄÄÌõÓãÅöײÁËÊÀ½ç±ß½çÅжÏÊÇ·ñ·­×ª²¢ÉèÖÃËÙ¶È¡£

CSprite* tmpSprite=FindSpriteByName(szName); tmpSprite->SetSpriteFlipX(bFlip); tmpSprite->SetSpriteLinearVelocity(fSpeedX, 0); fPosY=CSystem::RandomRange(m_fScreenTop+10.f,

m_fScreenBottom-10.f);

//ÒòΪÓв»Í¬µÄÓ㣬Òò´ËËæ»úÉú³ÉY·½ÏòµÄËٶȺóÐèÒª·ÖÅ䏸²»Í¬µÄ //Ó㣬ÕâÑù¶àÌõÓã¾Í²»»áÖØ¸´ÁË

tmpSprite->SetSpritePositionY(fPosY);

ʵÑéÁù¼üÅÌ¿ØÖÆÓãµÄÓζ¯

¡¾ÊµÑéÄÚÈÝ¡¿

²½Öè¡¢ÏìӦϵͳ°´¼üÏûÏ¢ÒÆ¶¯Óã

¡¾ÊµÑé˼·¡¿

µ±¼üÅÌÉϵÄW£¨±íʾÏòÉÏ·½Ïò£©A£¨±íʾÏò×ó·½Ïò£©S£¨±íʾÏòÏ·½Ïò£©D£¨±íʾÏòÓÒ·½Ïò£©°´¼üÖеÄÒ»¸ö°´Ïº󣬸øÓãÒ»¸ö³õʼËٶȲ¢°´¸Ã°´¼ü´ú±íµÄ·½ÏòÓζ¯£¬µ±°´¼üÊͷźó½«ÓãµÄËÙ¶ÈÉèÖÃΪ0£¬Ê¹ÆäÍ£Ö¹¡£

¡¾ÊµÑéÖ¸µ¼¡¿

1¡¢ ÔÚ¾²Ì¬¾«ÁéÊÓͼÖÐÌí¼ÓÒ»¸öÓ㾫Áéµ½µØÍ¼Öв¢°´ÏÂͼλÖðڷš£ÔÚ¡°±à¼­¡±->¡°³Ì

Ðò½Ó¿Ú¡±ÖÐÉèÖÃÃû³ÆÎªmyfish

2¡¢ ÔÚLessonX.hÖÐÌí¼ÓÒÔϵijÉÔ±±äÁ¿ÉùÃ÷£º

CSprite* m_pMyFish;

3¡¢ ÔÚLessonX.cppÖеĹ¹Ô캯ÊýÀïÃæÌí¼ÓÒÔÉϱäÁ¿µÄ³õʼ»¯´úÂ룺

m_pMyFish=new CSprite(\

4¡¢ ´¦Àí¼üÅ̰´ÏÂÏûÏ¢ÐèÒªÌí¼ÓÒ»¸ö×Ô¶¨Ò庯ÊýOnKeyDown£º

1£© ÔÚLessonX.hÖÐÌí¼Ó¸Ãº¯ÊýµÄÉùÃ÷£º

void OnKeyDown( const int iKey, const int iAltPress, const int iShiftPress, const int iCtrlPress );

2£© ÔÚLessonX.cppÖÐÌí¼Ó¸Ãº¯ÊýµÄ¶¨Ò壺

void CGameMain::OnKeyDown( const int iKey, const int iAltPress, const int iShiftPress, const int iCtrlPress ) { } 3£© Åжϰ´Ïµİ´¼ü¼üÖµ²¢¸øÏìÓ¦·½ÏòµÄËÙ¶ÈÖµ£¬ÔÚÉÏÃæµÄº¯ÊýÀïÃæÌí¼ÓÈçÏ´úÂ룺

float fSpeedX=0.f,fSpeedY=0.f; switch(iKey) {

case KEY_W:

fSpeedY= -10.f; //ÏòÉϵÄʱºòY·½ÏòËÙ¶ÈΪ¸ºµÄ break; case KEY_A: fSpeedX= -15.f; //Ïò×óµÄʱºòX·½ÏòµÄËÙ¶ÈΪ¸ºÖµ break; case KEY_S: fSpeedY= 10.f; //ÏòϵÄʱºòY·½ÏòµÄËÙ¶ÈΪÕýÖµ break; case KEY_D: