Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的

又是一个愉快的夜晚

还是那张长长的工作桌

哲哲在左边做一个香云纱手包

骨头在这里噼里啪啦的解刨

pad里放着《赢在中国》

桌子中间各种饮料、奶、水果...


进击吧~骨头~


首先感谢Android技术开发群(93367423)的SW同学提供的例子:战神传说

其实就是个打飞机的游戏

开始导入

1 新建项目,使用create_project.py建立一个空项目

2 将源码文件夹里的.cpp和.h还有资源文件拷贝到新建的项目中

3 用vs2012打开新建的项目

4 添加现有项,把cpp和h文件添加到classes里


一运行,好多错,额,尝试着改改

[html]  view plain copy 在CODE上查看代码片
  1. 1>------ 已启动生成: 项目: MoonWarriors, 配置: Debug Win32 ------  
  2. 1>  Bullet.cpp  
  3. 1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.h(31): error C2259: “Bullet”: 不能实例化抽象类  
  4. 1>          由于下列成员:  
  5. 1>          “void UnitSprite::hurt(void)”: 是抽象的  
  6. 1>          d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\unitsprite.h(21) : 参见“UnitSprite::hurt”的声明  
  7. 1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(6): error C2600: “Bullet::Bullet”: 不能定义编译器生成的特殊成员函数(必须首先在类中声明)  
  8. 1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(12): error C2511: “Bullet::Bullet(int,const char *,int)”:“Bullet”中没有找到重载的成员函数  
  9. 1>          d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.h(8) : 参见“Bullet”的声明  
  10. 1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(46): error C2511: “void Bullet::hurt(void)”:“Bullet”中没有找到重载的成员函数  
  11. 1>          d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.h(8) : 参见“Bullet”的声明  
  12. 1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(67): warning C4305: “参数”: 从“double”到“float”截断  
  13. 1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(68): warning C4305: “参数”: 从“double”到“float”截断  
骨头不懂C++,尝试着解决下。

首先看这段错误信息:

Bullet.cpp类中,不能实例化

它的父类有几个虚函数,但在Bullet.h文件中,似乎没找到这某个虚函数的定义,好吧,把UnitSprite.h

“Bullet::Bullet”: 不能定义编译器生成的特殊成员函数(必须首先在类中声明)

我们在对应的cpp文件中,添加所有的构造函数:

Bullet();
Bullet(int speed, const char *weapon, int attactMode);

ok,再次运行,看到helloworld窗口了。


可为啥不是游戏界面呢,再改改。。。

AppDelegate.cpp类bool AppDelegate::applicationDidFinishLaunching() 方法中,

实例化CCScene方法改为:CCScene *pScene = StartMenu::scene();

并且加入头文件#include "StartMenu.h"

再次运行 OK!

Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的_第1张图片


额,看来需要改成竖屏的。

找到win32包下的main.cpp文件,

把19行的 eglView->setFrameSize(480, 320);

改为 eglView->setFrameSize(320, 480);

这次是完全OK了。

Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的_第2张图片


游戏截图如上,看起来还怎不错,一个demo做的还比较用心。

不知能否顺利的跑在手机上,走着。


1 首先拷贝资源文件到android系统的assets文件夹下。


2 然后打开android.mk文件,把所有的cpp文件加进去。


Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的_第3张图片


3 管理员权限打开cmd,cd到所在目录下,分别使用下面两个命令,修改目录权限

takeown /f * /A /R

icacls * /t /grant:r everyone:f 


4 打开cygwin,定位到D:/Java/cocos2d-x-2.2/projects/LuoLiRun/proj.android 你的android目录文件夹下,运行./build_native.sh命令 

cygwin报错如下:

jni/Android.mk:12: *** 遗漏分隔符 。 停止。

分隔符,难道是Android.mk格式有问题?

很有可能,于是骨头打开Android.mk文件,仔细检查了下,果然,第三行最后少了 反斜杠,最后多了个反斜杠,改之,再次运行

Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的_第4张图片


开始编译代码了,但运行到一半又停了,难报错是main.cpp相关。

难道是因为有两个main.cpp?我记得好像demo里有,然后脚本生成的代码里也有。删掉demo里的main.cpp,并且在Android.mk文件里也删掉。

猜对了!再次进行编译了......


几分钟之后,在cygwin里看到了so文件编译成功。

为了不打扰哲哲休息,骨头决定截稿,明天继续!



 ------------------- 飞船起飞--------------------  

Cocos2dx游戏开发系列笔记10:解刨《战神传说》

Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应

Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的

Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)

Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上

Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》

Cocos2dx游戏开发系列笔记4:怎样新加一个Scene类?

Cocos2dx游戏开发系列笔记3:牛刀小试->忍者飞镖射幽灵的Demo

Cocos2dx游戏开发系列笔记2:一个刚创建的cocos2dx中的demo里都有什么

Cocos2dx游戏开发系列笔记1:一个崭新的开始,cocos2dx2.2+ndkr9+Cygwin

-------------------- 飞船降落-------------------- 


最后,骨头介绍一下陪在身边的哲哲(右边就是低调的哲哲)

哲哲,小名 YIYI ,手工爱好者,文艺范,手艺人,《YiYiの妙舍》创始人,很有自己想法。

Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的_第5张图片

 

你可能感兴趣的:(Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的)