C++ 与cocos2d-x-4.0完成太空飞机大战 (二)

  • 动画演示
  • 飞机精灵编码:AircraftSprite.cpp
  • 飞机精灵编码:AircraftSprite.h
  • 飞机动画编码:Aircraft.cpp
  • 飞机动画编码:Aircraft.h

动画演示

飞机精灵编码:AircraftSprite.cpp

#include "AircraftSprite.h"
#include "ActionBase.h"namespace SpaceWar {AircraftSprite::AircraftSprite(){}AircraftSprite::~AircraftSprite(){}
}

飞机精灵编码:AircraftSprite.h

#pragma once
#include "cocos2d.h"
#include "SpriteBase.h"using namespace std;
using namespace cocos2d;namespace SpaceWar
{class ActionBase;class AircraftSprite : public SpriteBase{public:AircraftSprite();virtual ~AircraftSprite();ActionBase* actBase = nullptr;/*玩家标识,0:玩家1,1:玩家2*/int playerTag = 0;/*飞机类型*/int airType = 0;/*飞行速度*/int airSpeed = 0;/*武器威力*/int armPower = 1;/*武器类型*/int armType = 0;/*武器上次发射时间*/long armTime = 0;/*导弹威力*/int missilePower = 1;/*导弹类型*/int missileType = -1;/*导弹上次发射时间*/long missileTime = 0;/*炸弹数量*/int bombCount = 3;/*炸弹类型*/int bombType = 0;/*炸弹上次发射时间*/long bombTime = 0;/*碰撞次数*/int collisionCount = 0;/*最大碰撞次数*/int maxCollisionCount = 0;/*碰撞类型掩码*/int category = 0b111;/*碰撞掩码*/int collision = 0b000;/*碰撞事件掩码*/int contact = 0b110;/*是否允许重力*/bool gravityEnable = false;/*是否允许碰撞*/bool collisionEnable = false;/*是否允许控制*/bool controlEnable = false;};
}

飞机动画编码:Aircraft.cpp

#include "Aircraft.h"
#include "ActionBase.h"namespace SpaceWar {Aircraft::Aircraft(){}Aircraft::~Aircraft(){}bool Aircraft::init(int pTag, int aType){Size vsize = Director::getInstance()->getVisibleSize();this->playerTag = pTag;string airImg = "fj.png";if (aType == 1) {airImg = "fj1.png";}auto pinfo = AutoPolygon::generatePolygon(airImg);sprite = new AircraftSprite();sprite->actBase = this->actBase;sprite->airType = aType;sprite->playerTag = pTag;int tag = 100;AircraftSprite::create(sprite, pinfo);if (sprite != nullptr){auto size = sprite->getContentSize();auto body = Util::getPhysicsBody(pinfo, size, tag, sprite->category, sprite->collision, sprite->contact, sprite->gravityEnable);sprite->setPhysicsBody(body);sprite->setTag(tag);float w2 = (vsize.width / 2) / 2;if (pTag == 1){w2 = (vsize.width / 2) + w2;}sprite->collisionEnable = false;sprite->setPosition(Vec2(w2, -sprite->getContentSize().height));auto moveTo = MoveTo::create(1.0f, Vec2(w2, vsize.height / 2 / 2));auto moveTo1 = MoveTo::create(1.0f, Vec2(w2, sprite->getContentSize().height * 3));auto sequence = Sequence::create(moveTo, moveTo1, NULL);sprite->runAction(sequence);auto blink = Blink::create(4.0f, 20);auto actCollEnable = CallFunc::create(std::bind(&Aircraft::setCollisionEnable, this, true));auto sequence1 = Sequence::create(blink, actCollEnable, NULL);sprite->runAction(sequence1);SpriteFrameCache::getInstance()->addSpriteFramesWithFile("zd01.plist");auto frames = Util::getAnimation("%d.png", 3);auto w_sprite = Sprite::createWithSpriteFrame(frames.front());w_sprite->setScale(0.5f);w_sprite->setScale(0.5f, 0.2f);w_sprite->setPosition(Vec2(sprite->getContentSize().width / 2, -20.0f));auto animation = Animation::createWithSpriteFrames(frames, 0.1f / 3);auto animate = Animate::create(animation);auto repeat = RepeatForever::create(animate);w_sprite->runAction(repeat);sprite->addChild(w_sprite);return true;}return false;}void Aircraft::setCollisionEnable(bool isEnable){sprite->collisionEnable = isEnable;}/*飞机控制*/void Aircraft::controlAction(int player){int *cact = actBase->colAct.controlAct;if (sprite == nullptr){return;}Size ssize = sprite->getContentSize();Vec2 position = sprite->getPosition();float speed = 1.5;if (sprite->airSpeed == 1){speed = 2.0;}else if (sprite->airSpeed == 2){speed = 2.5;}else if (sprite->airSpeed == 3){speed = 3.0;}else if (sprite->airSpeed > 3){speed = 3.5;}if (player == 1){if (cact[100] == 1){Util::spriteSceneMove(0, sprite, actBase->vSize, ssize, position, speed);}if (cact[101] == 1){Util::spriteSceneMove(1, sprite, actBase->vSize, ssize, position, speed);}if (cact[102] == 1){Util::spriteSceneMove(2, sprite, actBase->vSize, ssize, position, speed);}if (cact[103] == 1){Util::spriteSceneMove(3, sprite, actBase->vSize, ssize, position, speed);}if (cact[104] == 1){launchBullet();launchMissile();}if (cact[105] == 1){launchBomb();}}else{if (cact[0] == 1){Util::spriteSceneMove(0, sprite, actBase->vSize, ssize, position, speed);}if (cact[1] == 1){Util::spriteSceneMove(1, sprite, actBase->vSize, ssize, position, speed);}if (cact[2] == 1){Util::spriteSceneMove(2, sprite, actBase->vSize, ssize, position, speed);}if (cact[3] == 1){Util::spriteSceneMove(3, sprite, actBase->vSize, ssize, position, speed);}if (cact[4] == 1){launchBullet();launchMissile();}if (cact[5] == 1){launchBomb();}}}/*发射子弹*/void Aircraft::launchBullet(){if (sprite->armType == 1){launchBullet2();}else{launchBullet1();}}/*发射子弹1*/void Aircraft::launchBullet1(){int bspeed = 250;if (sprite->armPower > 5){bspeed = 100;}else if (sprite->armPower > 3){bspeed = 150;}else if (sprite->armPower > 2){bspeed = 200;}if (!Util::isIntervalTime(bspeed, &sprite->armTime)){return;}AudioEngine::play2d("zd1.ogg", false, 0.2f);auto pinfo = AutoPolygon::generatePolygon("fgzd.png");int tag = 5;float bulletSpeed = 2.0f;if (sprite->armPower == 2){bulletSpeed = 1.8f;}else if (sprite->armPower == 3){bulletSpeed = 1.6f;}else if (sprite->armPower == 4){bulletSpeed = 1.4f;}else if (sprite->armPower == 5){bulletSpeed = 1.2f;}else if (sprite->armPower > 5){bulletSpeed = 1.0f;}createBullet1(&pinfo, tag, bulletSpeed, 0);if (sprite->armPower > 2){createBullet1(&pinfo, tag, bulletSpeed, 10);createBullet1(&pinfo, tag, bulletSpeed, -10);}if (sprite->armPower > 4){createBullet1(&pinfo, tag, bulletSpeed, 20);createBullet1(&pinfo, tag, bulletSpeed, -20);}if (sprite->armPower > 5){createBullet1(&pinfo, tag, bulletSpeed, 30);createBullet1(&pinfo, tag, bulletSpeed, -30);}}void Aircraft::createBullet1(PolygonInfo* pinfo, int tag, float speed, float startX){Vec2 svec = sprite->getPosition();auto b_sprite = new BulletSprite();b_sprite->actBase = this->actBase;BulletSprite::create(b_sprite, *pinfo);auto size = b_sprite->getContentSize();auto b_body = Util::getPhysicsBody(*pinfo, size, tag, b_sprite->category, b_sprite->collision, b_sprite->contact, b_sprite->gravityEnable);b_sprite->setPhysicsBody(b_body);b_sprite->setTag(tag);b_sprite->playerTag = sprite->playerTag;b_sprite->setPosition(Vec2(svec.x + startX, svec.y + size.height * 2));auto moveBy = MoveBy::create(speed, Vec2(0, actBase->vSize.height + size.height));auto actRuin = CallFunc::create(std::bind(&Aircraft::removeRuin, this, b_sprite));auto sequence = Sequence::create(moveBy, actRuin, NULL);b_sprite->runAction(sequence);actBase->addChild(b_sprite, 0);}/*发射子弹2*/void Aircraft::launchBullet2(){int bspeed = 400;if (sprite->armPower > 5){bspeed = 250;}else if (sprite->armPower > 3){bspeed = 300;}else if (sprite->armPower > 2){bspeed = 350;}if (!Util::isIntervalTime(bspeed, &sprite->armTime)){return;}AudioEngine::play2d("zd1.ogg", false, 0.2f);auto pinfo = AutoPolygon::generatePolygon("fgzd.png");int tag = 5;float bulletSpeed = 2.0f;if (sprite->armPower == 2){bulletSpeed = 1.8f;}else if (sprite->armPower == 3){bulletSpeed = 1.6f;}else if (sprite->armPower == 4){bulletSpeed = 1.4f;}else if (sprite->armPower == 5){bulletSpeed = 1.2f;}else if (sprite->armPower > 5){bulletSpeed = 1.0f;}createBullet2(&pinfo, tag, bulletSpeed, 0, 0);if (sprite->armPower > -1){createBullet2(&pinfo, tag, bulletSpeed, 10, 150);createBullet2(&pinfo, tag, bulletSpeed, -10, -150);}if (sprite->armPower > 3){createBullet2(&pinfo, tag, bulletSpeed, 20, 250);createBullet2(&pinfo, tag, bulletSpeed, -20, -250);}if (sprite->armPower > 5){createBullet2(&pinfo, tag, bulletSpeed, 30, 350);createBullet2(&pinfo, tag, bulletSpeed, -30, -350);}}void Aircraft::createBullet2(PolygonInfo* pinfo, int tag, float speed, float startX, float endX){Vec2 svec = sprite->getPosition();auto b_sprite = new BulletSprite();b_sprite->actBase = this->actBase;BulletSprite::create(b_sprite, *pinfo);auto size = b_sprite->getContentSize();auto b_body = Util::getPhysicsBody(*pinfo, size, tag, b_sprite->category, b_sprite->collision, b_sprite->contact, b_sprite->gravityEnable);b_sprite->setPhysicsBody(b_body);b_sprite->setTag(tag);b_sprite->playerTag = sprite->playerTag;b_sprite->setPosition(Vec2(svec.x + startX, svec.y + size.height * 2));auto moveBy = MoveBy::create(speed, Vec2(endX, actBase->vSize.height + size.height));auto actRuin = CallFunc::create(std::bind(&Aircraft::removeRuin, this, b_sprite));auto sequence = Sequence::create(moveBy, actRuin, NULL);b_sprite->runAction(sequence);actBase->addChild(b_sprite, 0);}/*发射导弹*/void Aircraft::launchMissile(){if (sprite->missileType < 0){return;}if (sprite->missileType == 1){launchMissile2();}else{launchMissile1();}}/*发射导弹1*/void Aircraft::launchMissile1(){int bspeed = 850;if (sprite->missilePower > 5){bspeed = 700;}else if (sprite->missilePower > 3){bspeed = 750;}else if (sprite->missilePower > 2){bspeed = 800;}if (!Util::isIntervalTime(bspeed, &sprite->missileTime)){return;}float bulletSpeed = 6.0f;float bulletScale = 0.5f;int bulletPower = 10;if (sprite->missilePower == 2){bulletSpeed = 6.5f;bulletScale = 0.55f;bulletPower = 12;}else if (sprite->missilePower == 3){bulletSpeed = 7.0f;bulletScale = 0.60f;bulletPower = 14;}else if (sprite->missilePower == 4){bulletSpeed = 7.5f;bulletScale = 0.65f;bulletPower = 16;}else if (sprite->missilePower == 5){bulletSpeed = 8.0f;bulletScale = 0.70f;bulletPower = 18;}else if (sprite->missilePower > 5){bulletSpeed = 8.5f;bulletScale = 0.75f;bulletPower = 20;}Size vsize = Director::getInstance()->getVisibleSize();Vec2 svec = sprite->getPosition();auto pinfo = AutoPolygon::generatePolygon("air_Missile.png");Size size;Size size1;int tag = 5;if (sprite->missilePower > -1){createMissile1(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, 10, 0);createMissile1(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, -10, 0);}if (sprite->missilePower > 3){createMissile1(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, 20, 40);createMissile1(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, -20, 40);}if (sprite->missilePower > 5){createMissile1(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, 30, 80);createMissile1(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, -30, 80);}}void Aircraft::createMissile1(PolygonInfo* pinfo, int tag, float scale, int power, float speed, float startX, float startY){Vec2 svec = sprite->getPosition();auto b_sprite = new BulletSprite();b_sprite->actBase = this->actBase;BulletSprite::create(b_sprite, *pinfo);Size size = b_sprite->getBoundingBox().size;auto b_body = Util::getPhysicsBody(*pinfo, size, tag, b_sprite->category, b_sprite->collision, b_sprite->contact, b_sprite->gravityEnable);b_sprite->setPhysicsBody(b_body);b_sprite->setScale(scale);b_sprite->bulletSpeed = speed;size = b_sprite->getBoundingBox().size;b_sprite->setTag(tag);b_sprite->bulletPower = power;b_sprite->playerTag = sprite->playerTag;b_sprite->setPosition(Vec2(svec.x + startX, svec.y + startY));Vec2 v2 = Vec2(0, actBase->vSize.height + size.height);float mTime = Util::getMoveTime(b_sprite->bulletSpeed, v2.y);auto moveBy = MoveBy::create(mTime, v2);auto actRuin = CallFunc::create(std::bind(&Aircraft::removeRuin, this, b_sprite));auto sequence = Sequence::create(moveBy, actRuin, NULL);b_sprite->runAction(sequence);actBase->addChild(b_sprite, 0);}/*发射导弹2*/void Aircraft::launchMissile2(){int bspeed = 850;if (sprite->missilePower > 5){bspeed = 700;}else if (sprite->missilePower > 3){bspeed = 750;}else if (sprite->missilePower > 2){bspeed = 800;}if (!Util::isIntervalTime(bspeed, &sprite->missileTime)){return;}float bulletSpeed = 5.0f;float bulletScale = 0.3f;int bulletPower = 4;if (sprite->missilePower == 2){bulletSpeed = 5.5f;bulletScale = 0.35f;bulletPower = 5;}else if (sprite->missilePower == 3){bulletSpeed = 6.0f;bulletScale = 0.40f;bulletPower = 6;}else if (sprite->missilePower == 4){bulletSpeed = 6.5f;bulletScale = 0.45f;bulletPower = 7;}else if (sprite->missilePower == 5){bulletSpeed = 7.0f;bulletScale = 0.50f;bulletPower = 8;}else if (sprite->missilePower > 5){bulletSpeed = 7.5f;bulletScale = 0.55f;bulletPower = 10;}auto pinfo = AutoPolygon::generatePolygon("air_Missile1.png");int tag = 5;if (sprite->missilePower > -1){createMissile2(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, 10, 50, 10);createMissile2(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, -10, -50, -10);}if (sprite->missilePower > 3){createMissile2(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, 20, 200, 20);createMissile2(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, -20, -200, -20);}if (sprite->missilePower > 5){createMissile2(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, 30, 300, 30);createMissile2(&pinfo, tag, bulletScale, bulletPower, bulletSpeed, -30, -300, -30);}}void Aircraft::createMissile2(PolygonInfo* pinfo, int tag, float scale, int power, float speed, float startX, float endX, float rotation){Vec2 svec = sprite->getPosition();auto b_sprite = new BulletSprite();b_sprite->actBase = this->actBase;BulletSprite::create(b_sprite, *pinfo);Size size = b_sprite->getBoundingBox().size;auto b_body = Util::getPhysicsBody(*pinfo, size, tag, b_sprite->category, b_sprite->collision, b_sprite->contact, b_sprite->gravityEnable);b_sprite->setPhysicsBody(b_body);b_sprite->setScale(scale);size = b_sprite->getBoundingBox().size;b_sprite->setTag(tag);b_sprite->bulletPower = power;b_sprite->playerTag = sprite->playerTag;b_sprite->setPosition(Vec2(svec.x + startX, svec.y));b_sprite->bulletSpeed = speed;Node* eNode = Util::getRandomNode(&actBase->enemyNodes, 50, 400, b_sprite->getPosition());if (eNode != nullptr){b_sprite->trackKey = eNode->getName();b_sprite->trackPoint = eNode->getPosition();b_sprite->moveSpeed = Util::getTrackPosition(b_sprite->bulletSpeed, b_sprite->getPosition(), eNode->getPosition());b_sprite->isTrack = true;}if (!b_sprite->isTrack){Vec2 endPoint = Vec2(endX, actBase->vSize.height + size.height);float mTime = Util::getMoveTime(b_sprite->bulletSpeed, endPoint.y);auto moveBy = MoveBy::create(mTime, endPoint);b_sprite->runAction(moveBy);b_sprite->setRotation(rotation);}actBase->addChild(b_sprite, 0);}/*发射炸弹*/void Aircraft::launchBomb(){if (sprite->bombCount < 1){return;}if (!Util::isIntervalTime(1000, &sprite->bombTime)){return;}--sprite->bombCount;if (sprite->bombType == 1){launchBomb2();}else{launchBomb1();}}/*发射炸弹类型1*/void Aircraft::launchBomb1(){int playerTag = sprite->playerTag;Vec2 svec = sprite->getPosition();Size size = sprite->getBoundingBox().size;float sw = 20;float ew = actBase->vSize.width - 20;float sh = svec.y - actBase->vSize.height / 2;float eh = svec.y + actBase->vSize.height / 2;SpriteFrameCache::getInstance()->addSpriteFramesWithFile("fjbz.plist");auto frames = Util::getAnimation("fjbz(%d).png", 16);int tag = 6;for (int i = 0; i < 50; ++i){auto delayAnimate = CallFunc::create(std::bind(&Aircraft::createBombAnimate, this, frames, tag, playerTag, sw, ew, sh, eh));auto dtime = DelayTime::create(random(0.0f, 1.0f));auto sequence = Sequence::create(dtime, delayAnimate, NULL);actBase->runAction(sequence);}}void Aircraft::createBombAnimate(Vector<SpriteFrame*> frames, int tag, int playerTag, float sw, float ew, float sh, float eh){auto bsprite = new BombSprite();BombSprite::createWithSpriteFrame(bsprite, frames.front());bsprite->setScale(random(1.0f, 5.0f));bsprite->setPosition(Vec2(random(sw, ew), random(sh, eh)));auto body = Util::getPhysicsBody(bsprite->getBoundingBox().size, tag, bsprite->category, bsprite->collision, bsprite->contact, bsprite->gravityEnable);bsprite->setPhysicsBody(body);bsprite->setTag(tag);bsprite->playerTag = playerTag;auto animation = Animation::createWithSpriteFrames(frames, 1.0f / 16);auto animate = Animate::create(animation);auto repeat = Repeat::create(animate, 1);auto actRuin = CallFunc::create(std::bind(&Aircraft::removeRuin, this, bsprite));auto sequence = Sequence::create(repeat, actRuin, NULL);bsprite->runAction(sequence);float mtime = random(0.2f, 1.0f);Vec2 move = Vec2(0.0f, random(-100.0f, -50.0f));auto moveBy = MoveBy::create(mtime, move);bsprite->runAction(moveBy);actBase->addChild(bsprite, 3);AudioEngine::play2d("BOMB1.ogg", false, 0.5f);}/*发射炸弹类型2*/void Aircraft::launchBomb2(){Vec2 svec = sprite->getPosition();Size size = sprite->getBoundingBox().size;float sw = 20;float ew = actBase->vSize.width - 20;SpriteFrameCache::getInstance()->addSpriteFramesWithFile("zd02.plist");auto frames = Util::getAnimation("zd02(%d).png", 4);int tag = 6;for (int i = 0; i < 20; ++i){auto bsprite = new BombSprite();BombSprite::createWithSpriteFrame(bsprite, frames.front());bsprite->setScale(random(2.0f, 3.0f));auto bsize = bsprite->getBoundingBox().size;float fx = random(sw, ew);float fy = random(-bsize.height * 4, -bsize.height * 3);bsprite->setPosition(Vec2(fx, fy));auto body = Util::getPhysicsBody(bsprite->getBoundingBox().size, tag, bsprite->category, bsprite->collision, bsprite->contact, bsprite->gravityEnable);bsprite->setPhysicsBody(body);bsprite->setTag(tag);bsprite->playerTag = sprite->playerTag;auto animation = Animation::createWithSpriteFrames(frames, 1.0f / 30);auto animate = Animate::create(animation);auto repeat = RepeatForever::create(animate);bsprite->runAction(repeat);auto moveTo = MoveTo::create(random(1.0f, 2.0f), Vec2(fx, actBase->vSize.height + size.height));auto actRuin = CallFunc::create(std::bind(&Aircraft::removeRuin, this, bsprite));auto sequence = Sequence::create(moveTo, actRuin, NULL);bsprite->runAction(sequence);actBase->addChild(bsprite, 3);AudioEngine::play2d("fg.ogg", false, 0.5f);}}void Aircraft::createRuinAnimate(Node* node){AircraftSprite* aSprite = dynamic_cast<AircraftSprite*>(node);auto size = aSprite->getBoundingBox().size;auto position = node->getPosition();SpriteFrameCache::getInstance()->addSpriteFramesWithFile("ysbz.plist");auto frames = Util::getAnimation("ysbz-%d.png", 16);auto sprite = Sprite::createWithSpriteFrame(frames.front());auto ssize = sprite->getContentSize();auto wf = size.width / ssize.width;auto hf = size.height / ssize.height;sprite->setScale(wf, hf);sprite->setPosition(position.x, position.y);auto animation = Animation::createWithSpriteFrames(frames, 1.0f / 16);auto animate = Animate::create(animation);auto repeat = Repeat::create(animate, 1);auto actRuin = CallFunc::create(std::bind(&Aircraft::removeRuin, this, sprite));auto sequence = Sequence::create(repeat, actRuin, NULL);playBOMB(aSprite);sprite->runAction(sequence);actBase->addChild(sprite);}void Aircraft::playBOMB(AircraftSprite* aSprite){auto size = aSprite->getBoundingBox().size;float sz = size.height;if (size.width > size.height){sz = size.width;}if (aSprite->airType == 0){if (sz > 300){AudioEngine::play2d("BOMB6.ogg", false, 1.0f);}else if (sz > 250){AudioEngine::play2d("BOMB5.ogg", false, 1.0f);}else if (sz > 200){AudioEngine::play2d("BOMB4.ogg", false, 1.0f);}else if (sz > 100){AudioEngine::play2d("BOMB3.ogg", false, 1.0f);}else if (sz > 50){AudioEngine::play2d("BOMB2.ogg", false, 1.0f);}else{AudioEngine::play2d("BOMB1.ogg", false, 1.0f);}}}void Aircraft::removeRuin(Sprite* sprite){sprite->removeFromParentAndCleanup(true);}
}

飞机动画编码:Aircraft.h

#pragma once
#include <list>
#include <vector>
#include "cocos2d.h"
#include "audio/include/AudioEngine.h"
#include "Util.h"
#include "Control.h"
#include "AircraftSprite.h"
#include "BulletSprite.h"
#include "BombSprite.h"using namespace std;
using namespace cocos2d;namespace SpaceWar
{class ActionBase;class Aircraft{public:Aircraft();virtual ~Aircraft();ActionBase* actBase = nullptr;/*飞机精灵*/AircraftSprite* sprite = nullptr;/*玩家标识,0:玩家1,1:玩家2*/int playerTag = 0;/*游戏次数*/int playerCount = 5;/*得分*/int playerScore = 0;/*奖励游戏次数*/int rewardPlayerCount = 0;long baseTime = 0;/*初始化飞机*/virtual bool init(int pTag, int aType);void setCollisionEnable(bool isEnable);void controlAction(int player);void launchBullet();void launchBullet1();void createBullet1(PolygonInfo * pinfo, int tag, float speed, float startX);void launchBullet2();void createBullet2(PolygonInfo * pinfo, int tag, float speed, float startX, float endY);void launchMissile();void launchMissile1();void createMissile1(PolygonInfo * pinfo, int tag, float scale, int power, float speed, float startX, float startY);void launchMissile2();void createMissile2(PolygonInfo * pinfo, int tag, float scale, int power, float speed, float startX, float endX, float rotation);void launchBomb();void launchBomb1();void createBombAnimate(Vector<SpriteFrame*> frames, int tag, int playerTag, float sw, float ew, float sh, float eh);void launchBomb2();void createRuinAnimate(Node * node);void playBOMB(AircraftSprite * aSprite);void removeRuin(Sprite * sprite);};
}

C++ 与cocos2d-x-4.0完成太空飞机大战 (三)

C++ 与cocos2d-x-4.0完成太空飞机大战 (二)相关推荐

  1. C++ 与cocos2d-x-4.0完成太空飞机大战 (四)

    C++ 与cocos2d-x-4.0完成太空飞机大战 (四) 动画演示 工具类编码:Util.cpp 工具类编码:Util.h 奖励精灵编码:RewardSprite.cpp 奖励精灵编码:Rewar ...

  2. C++ 与cocos2d-x-4.0完成太空飞机大战 (五)

    C++ 与cocos2d-x-4.0完成太空飞机大战 (五) 动画演示 敌人精灵编码:EnemySprite.cpp 敌人精灵编码:EnemySprite.h 敌人编码:Enemy.cpp 敌人编码: ...

  3. C++ 与cocos2d-x-4.0完成太空飞机大战 (一)

    C++ 与cocos2d-x-4.0完成太空飞机大战 (一) 动画演示 AppDelegate编码:AppDelegate.cpp AppDelegate编码:AppDelegate.h 关卡1场景编 ...

  4. 用Unity快速开发太空飞机大战游戏实战经验分享(上)

    用unity动手先来试试一个简单的太空飞机大战吧.看官请继续往下... 最终效果,可控制己方战机,朝目标敌机发射子弹,打飞机~~~!伴随想象,慢慢呈现这个太空飞机大战游戏. 1. 新建打飞机unity ...

  5. Python游戏之Pygame——太空飞机大战(三)

    上一篇(Python游戏之Pygame--太空飞机大战(二))完成了敌机类以及敌机坠毁时释放包裹类,这一篇将给出英雄战机类和处理.由于英雄战机是由游戏者操控的,所以要处理操控事件,比如往那个方向飞,发 ...

  6. 微信5.0 Android版飞机大战破解无敌模式手记

    微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...

  7. Python游戏之Pygame——太空飞机大战(四)

    上一篇(Python游戏之Pygame--太空飞机大战(三))完成了英雄战机和星空,那么基本上飞机大战的主要元素都已经完成,该是总结成功玩自己游戏的时候了. 哦,差点忘了,Bullet类对于普通子弹和 ...

  8. Python游戏之Pygame——太空飞机大战(二)

    上一篇(Python游戏之Pygame--太空飞机大战(一))文章简单对游戏进行了说明,给出了部分配置文件以及子弹类.下面给出敌机类和方法. 大家直到,飞机必须能非,最好能非直线飞行.因此必须有X_s ...

  9. Python游戏之Pygame——太空飞机大战(一)

    学习Python,最好的办法是实战,实战!我们知道,有无数的先人和大侠提供了非常多的软件包供我们选用.有时候学习是一件很枯燥的事,玩游戏就不一样了.我们玩的最多的游戏是别人开发的,能不能开发出一款自己 ...

最新文章

  1. Angular cli 发布自定义组件
  2. leetcode 703. 数据流中的第K大元素 最小堆解法 c语言
  3. 2020年行政区划代码_2020年梧州市行政区划,了解梧州市有几个区,详细数据
  4. 在linux中完整路径中的目录间分隔符是,路径分隔符(斜杠/与反斜杠\的问题)
  5. 使用xml及java代码混合的方式来设置图形界面
  6. 线程打印_线程知识回顾
  7. 两个Liunx服务器之间的文件夹迁移
  8. BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)
  9. Spring-Cloud-Config消息总线和高可用
  10. linux下rsync服务的搭建
  11. MySQL日期 专题
  12. 网络通信基础知识简介
  13. python求高阶导数_高阶导数 - 问答 - Python中文网
  14. Hadoop系列之二:大数据、大数据处理模型及MapReduce
  15. iPhone/iPad的IAP防破解之第三方服务器二次验证
  16. 通过图新地球把大疆L1激光雷达点云成果和影像地形等其他GIS数据进行融合
  17. 实战:3种方式安装Jenkins-2022.4.17(博客分享)
  18. Excel VBA 快速访问 Power Query 表格数据
  19. 钙钛矿结构类型化合物
  20. 12864液晶屏调试笔记.

热门文章

  1. 海蜘蛛系统日志怎么保存到服务器,海蜘蛛软路由网络设置的操作步骤
  2. 长三角一体化行动计划:布局世界级新零售网络
  3. 使用easytrader时对xiadan.exe的配置
  4. C语言二分法查找详解
  5. fedora 17 xfce 安装libreoffice
  6. 微软飞行模拟服务器,《微软飞行模拟2020》已推出首个公共SDK
  7. PS卡通效果插件Photobacks Cartoon Mac汉化破解教程(含注册码)
  8. c语言之文件存储通版讯录
  9. 系统已坏,用U盘安装系统的方法
  10. 日志审计系统及ELK日志系统