Based on Learn Cocos2d Book ( But using cocos2d-x 3.3 )