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
2¡¢ ÒòΪÓõ½vectorÈÝÆ÷£¬Òò´ËÐèÒªÔÚLessonX.hÖÐÌí¼ÓÍ·ÎļþºÍÉùÃ÷ÃüÃû¿Õ¼ä£º
#include
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;i
Ëٶȸ³¸øËü£¬×îºóÅжÏÊÇÅöµ½Äĸö±ß½çÔÙ¾ö¶¨ÊÇ·ñ·×ªÓãµÄͼƬ£º
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: