zoukankan      html  css  js  c++  java
  • cocos2d-x step by step(3) Double Kill

    喏,咱们已经调通hello world 了,然后呢,咱们做一些高大上的东西,那做什么呢,做一个打乒乓球的小东西,啊哈!

    这就是最终界面了,没画一个球形  就用一个白色方框代替吧。

    啊哈!

    public:
        virtual bool init();
    
        static cocos2d::Scene* scene();
        void update(float dt) override;
    
        void menuCloseCallback(Ref* sender);
    
        void onButtonClicked(Ref *pSender,ui::Widget::TouchEventType type);
        void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);
        void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);
        CREATE_FUNC(FishTestScence);

    首先呢,我们需要keypreed 和keyreleased 两个事件,因为要触发键盘事件

    bool isUp = false;
    bool isLeft = true;
    bool isPreessLeft = false;
    bool isPressRight = false;
    bool isDead = true;
    void FishTestScence::update(float dt)
    {
        if (isDead)return;
    
        const cocos2d::Vector<cocos2d::Node*> arr = this->getChildren();
        Sprite* sprite1 = (Sprite*)arr.at(2);
        Sprite* sprite2 = (Sprite*)arr.at(3);
    
        if (ballPosition.x < 5)
        {
            isLeft = false;
        }
        else if (ballPosition.x > maxWidth)
        {
            isLeft = true;
        }
    
        if (ballPosition.y < 36)
        {
            isUp = true;
        }
        else if (ballPosition.y > maxHeight)
        {
            isUp = false;
        }
    
        isLeft ? ballPosition.x -= 2 : ballPosition.x += 2;
        isUp ? ballPosition.y += 2 : ballPosition.y -= 2;
    
        if (isPreessLeft)dangbanVec.x -= 2;
        if (isPressRight)dangbanVec.x += 2;
    
        if (((ballPosition.x - dangbanVec.x) > 45 && ballPosition.y <= 36) || ((ballPosition.x - dangbanVec.x) < -45 && ballPosition.y <= 36)) isDead = true;
    
        sprite1->setPosition(Vec2(dangbanVec.x, dangbanVec.y));
    
        sprite2->setPosition(Vec2(ballPosition.x, ballPosition.y));
    
    }
    
    // 键位响应函数原型
    void FishTestScence::onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event)
    {
        const cocos2d::Vector<cocos2d::Node*> arr = this->getChildren();
        Sprite* sprite1 = (Sprite*)arr.at(2);
        Vec2 vec = sprite1->getPosition();
        switch (keyCode)
        {
        case     EventKeyboard::KeyCode::KEY_LEFT_ARROW:
            isPreessLeft = true;
            break;
        case     EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
            isPressRight = true;
            break;
    
        default:
            break;
        }
    }
    
    void FishTestScence::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)
    {
        switch (keyCode)
        {
        case     EventKeyboard::KeyCode::KEY_LEFT_ARROW:
            isPreessLeft = false;;
            break;
        case     EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
            isPressRight = false;
            break;
        case     EventKeyboard::KeyCode::KEY_UP_ARROW:
            isDead = false;
            break;
        default:
            break;
        }
    }

    这是代码实现,大概是这样的,当点击up箭头,游戏开始,当白色方块不在触板内,则game over ,用 isDead缓存

    再次按up重新开始,

    小东西,没什么技术含量,只是娱乐!

    不写了,代码里有!

        // create a scene. it's an autorelease object
        auto scene = HelloWorld::scene();
        auto fish = FishTestScence::scene();
        // run
        director->runWithScene(fish);

    这里替换一下就行,图片如果没有的话 上一篇内有呢

    烦死了!

    妈蛋的淘宝,给姑娘买东西半天提示我重置密码和支付密码,老子重置了,浪费老子一个小时,还你妈比的不能买,qnmlgb!艹!

    代码:源代码

  • 相关阅读:
    Will Go eventually replace C++ as Google hoped when Go came out?
    5G到底什么时候来,它究竟能给我们带来什么?
    eog——Eye of GNOME Image Viewer
    Appweb——Embedded Web Server
    【2017】数字重排
    【9203】众数
    【2034】四人投票
    【9204】第k小整数
    【2031】求一元三次方程的解
    iOS 7: 如何为iPhone 5s编译64位应用
  • 原文地址:https://www.cnblogs.com/fish124423/p/4455982.html
Copyright © 2011-2022 走看看