#黄金矿工
好久没有写点东西了,最近工作有一点忙,生活上事情也比较繁琐,趁着最近有点时间,写个小游戏供大家娱乐下!随便恭喜木木同学被挖去了新公司,祝工作顺利~
##关于项目(代码下载地址在文章最下面点击GitHub链接)
项目说明:采用cocos2d-X3.12游戏引擎,基于C++开发,支持Android,iOS以及wp系统
开发工具:支持Xcode,eclipse,visual studio都可以,提前在机器上创建一个cocos2d-x的空工程,将Class文件删除,把下载好的代码Class文件拖入到工程,把res文件放入到项目的Resoures目录下运行就OK了~
辅助工具:`Cocostudio`
项目比较简单,适合有一定编程经验对游戏有兴趣想入门的同学.
![游戏截图](http://ww4.sinaimg.cn/mw690/0068uRu1jw1fakp2ilr4og306o04g1ky.gif)
![游戏截图](http://ww2.sinaimg.cn/mw690/0068uRu1jw1fakp2l0lzfg306o04g4qr.gif)
![游戏截图](http://ww1.sinaimg.cn/mw690/0068uRu1jw1fakp2hy574j30df09075z.jpg)
![粒子效果](http://ww2.sinaimg.cn/mw690/0068uRu1jw1fakp2hig76g306o04g1kz.gif)
###首页场景
本游戏的布局基本都是cocostudio布局的,放一张在cocostudio中布局的样式图
![cocostudio布局样式](http://ww2.sinaimg.cn/mw690/0068uRu1gw1famxlucyp7j311g142akx.jpg)
通过CSLoder加载csb文件添加到对应的场景中展示,具体代码如下
```cpp
auto mainCsb = CSLoader::createNode("csb文件名");
this->addChild(mainCsb);
```
Logo放大出现动画也在cocostudio中创建,通过CSLoader获取Timeline对象,播放指定的帧动画
```cpp
animation = CSLoader::createTimeline("Layer.csb");
mainCsb->runAction(animation);
// 播放指定的动画
animation->gotoFrameAndPlay(0, 25, false);
```
云飘动动画以及人物吹口哨抖腿的动画都是通过代码实现的,当然也可以在cocostudio中制作骨骼动画,通过在工程中加载导出的js文件播放动画也可以,这里的动画比较简单,就直接通过代码实现了,如果项目中用到比较复杂的动画推荐采用加载js动画的方式.这里由于没有用到骨骼动画,就不做相应的介绍了,有兴趣的同学可以自己研究下~
由于游戏需要用到存储的数据比较小,这里对用户游戏数据持久化存储是采用`UserDefault`来进行.如果项目中需要存储的数据量比较庞大,建议使用数据库建表来进行存储,这样更方便数据的查询与管理.
在工程中通过一个单例`UserDataManager`来管理用户的数据,提供背景音乐是否静音,音效是否静音,用户账户金币以及当前游戏的关数四个成员变量.
```c++
UserDataManager *UserDataManager::getInstance()
{
if (s_SharedUserDataManager == nullptr) {
s_SharedUserDataManager = new UserDataManager();
s_SharedUserDataManager->_musicMute = UserDefault::getInstance()->getBoolForKey(musicMuteKey, false);
s_SharedUserDataManager->_soundMute = UserDefault::getInstance()->getBoolForKey(soundMuteKey, false);
s_SharedUserDataManager->_allMoney = UserDefault::getInstance()->getIntegerForKey(userAllMoneyKey, 0);
s_SharedUserDataManager->_stageNum = UserDefault::getInstance()->getIntegerForKey(userStageNumKey, 1);
}
return s_SharedUserDataManager;
}
```
监听按钮的点击事件,可以在cocostudio中对节点进行命名,然后在代码中通过下面方法获取对应name的节点
```c++
// 获取startButton节点
auto startBtn = static_cast<Button *>(Helper::seekWidgetByName(static_cast<Widget *>(mainCsb), "startButton"));
```
需要注意的是,按钮点击回调函数需要在.h文件提前声明,或者可以采用lambda表达式也可
- 采用函数的回调写法
// 添加按钮的事件
```c++
tartBtn->addTouchEventListener(CC_CALLBACK_2(MainLayer::startButtonTouch, this));
```
- 采用lambda表达式写法
```c++
startBtn->addTouchEventListener([=](Ref *sender, Widget::TouchEventType touchType){
// button click callBack
});
```
StartButton点击后会有两个逻辑:通过`UserDataManager`获取用户游戏关数
- 用户没有游戏记录或者当前记录是游戏是第一关,直接进入游戏场景,开始游戏.
- 用户有游戏记录并且关数大于1,直接进入商店场景.
###商店场景
同样也是通过采用cocostudio来进行布局的,效果如下
![商店场景cocostudio效果](http://ww1.sinaimg.cn/mw690/0068uRu1gw1famyje8uddj318s0z6k14.jpg)
商店场景也比较简单,账户余额通过上文中的`UserDataManager`可以获取用户的金币数.
```
UserDataManager::getInstance()->getUserAllMoney();
```
商品采用Button来展示,这样可以获取玩家选择的当前商品,每一个商品只能购买一次,如果购买了商品后,对应商品上显示1的图标.商品描述通过点击商品,展示对应的商品作用描述.
```c++
auto csb = CSLoader::createNode("ShopScene.csb");
this->addChild(csb);
// 添加商品描述容器
goodsDesVec.push_back(Value("炸药.购买以后,当抓到较重且金额不多的物品时,按下上方炸药即可炸毁物品,以便节省时间.功效为下一关"));
goodsDesVec.push_back(Value("力量药水.购买以后,在下一关力量会增加,抓到物品后拉回速度会增加20%.功效为下一关"));
goodsDesVec.push_back(Value("优质矿石.购买后在下一关中收购钻石的价格将变成原价格的3倍,但不保证下一关一定会有钻石~其效果为下一关"));
goodsDesVec.push_back(Value("矿石收藏书.购买后下一关的矿石的价格将会是原有价格的3倍,其功效为下一关"));
// 初始化商品描述Text
goodsDesText = static_cast<Text *>(Helper::seekWidgetByName(static_cast<Widget *>(csb), "shopDetail"));
Text *userMoney = static_cast<Text *>(Helper::seekWidgetByName(static_cast<Widget *>(csb), "userMoney"));
userMoney->setString("$" + to_string(UserDataManager::getInstance()->getAllMoney()));
// 获取购买按钮.并且添加按钮的点击事件
Button *buyButton = static_cast<Button *>(Helper::seekWidgetByName(static_cast<Widget *>(csb), "buyButton"));
buyButton->addTouchEventListener([=](Ref *sender, Widget::TouchEventType type){
if (type == Widget::TouchEventType::ENDED) {
int index = lastSelected->getTag() - 1;
auto oneIV = buyOnes.at(index);
if (oneIV->isVisible()) {
return;
}
// 获取商品价格
int price = 0;
switch (index) {
case 0:
price = kBombPrice;
break;
case 1:
price = kPotionPrice;
break;
case 2:
price = kDiamondsPrice;
break;
case 3:
price = kStoneBookPrice;
break;
}
if (UserDataManager::getInstance()->getAllMoney() - payMoneyCount - price >= 0) {
payMoneyCount += price;
userMoney->setString("$" + to_string(UserDataManager::getInstance()->getAllMoney() - payMoneyCount));
oneIV->setVisible(true);
}
}
});
```
点击下一关,切换到游戏场景.
###游戏场景
一样也是在cocostudio中布局,这里需要注意的是并不是采用一个csb文件就全部将节点添加完毕,这里分三块布局,如下图所示三块
![顶部](http://ww4.sinaimg.cn/mw690/0068uRu1gw1famz3276kvj30u00k4401.jpg)
![level](http://ww4.sinaimg.cn/mw690/0068uRu1gw1famz31cvksj30tq0jwmzy.jpg)
![钩子](http://ww4.sinaimg.cn/mw690/0068uRu1gw1famz31q41tj308o06ua9y.jpg)
游戏Layer提供一个快速创建场景的方法
```c++
// 参数分别为 是否购买了炸弹.力量药水.砖石升值书.石头收藏书.在商店的花销
static Scene *createScene(bool isBuyBomb, bool isBuyPotion, bool isBuyDiamonds, bool isStoneBook, int payMoney);
```
在上
没有合适的资源?快使用搜索试试~ 我知道了~
黄金矿工,使用Cocos2d-X 基于C++.zip
共76个文件
png:24个
csb:13个
hpp:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 157 浏览量
2024-06-03
15:59:18
上传
评论
收藏 3.8MB ZIP 举报
温馨提示
黄金矿工,使用Cocos2d-X 基于C++ C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3
资源推荐
资源详情
资源评论
收起资源包目录
黄金矿工,使用Cocos2d-X 基于C++.zip (76个子文件)
content
.DS_Store 6KB
res
TipsFailOrSucess.csb 2KB
.DS_Store 6KB
music
level.mp3 6KB
bomb.mp3 3KB
Select.mp3 13KB
backMusic.mp3 435KB
lastart.mp3 2KB
finish.mp3 6KB
largegold.mp3 2KB
laend.mp3 2KB
MinerAnimtion.csb 908B
PauseLayer.csb 5KB
Boom.plist 8KB
Default
Button_Disable.png 1KB
Hook.csb 2KB
ShopScene.csb 15KB
level2.csb 7KB
level3.csb 7KB
Layer.csb 5KB
StageTipsLayer.csb 2KB
Resources
shoper.plist 2KB
minerAction.png 183KB
shoper.png 221KB
level-sheet.plist 33KB
mineBG4.png 22KB
tip.png 3KB
huancun.png 34KB
green.png 1KB
tableImage.png 3KB
mineBG1.png 101KB
quitbtn.png 4KB
menu-start-gold.png 72KB
mineBG3.png 25KB
one.png 5KB
dialog-background.png 284KB
huancun.plist 2KB
general-sheet.plist 26KB
shopBack.png 20KB
menu-background.png 561KB
level-sheet.png 1.09MB
mineBG2.png 21KB
minerAction.plist 2KB
menu-background-sky.jpg 31KB
gold-miner-text.png 44KB
general-sheet.png 505KB
topbg.png 6KB
mineBG5.png 23KB
menu-miner.png 146KB
stars.png 1KB
GameLayer.csb 9KB
level1.csb 6KB
level4.csb 7KB
level5.csb 8KB
Classes
.DS_Store 6KB
Other
Const.hpp 999B
UserDataManager.cpp 1KB
AppDelegate.h 1KB
UserDataManager.hpp 1KB
AppDelegate.cpp 2KB
MainScene
.DS_Store 6KB
StageTipsLayer.cpp 5KB
MainRoot.hpp 971B
Pause.hpp 864B
Shop.hpp 729B
Pause.cpp 4KB
Gold.cpp 4KB
Shop.cpp 5KB
Game.cpp 13KB
Game.hpp 2KB
Gold.hpp 1KB
MainRoot.cpp 4KB
StageTipsLayer.hpp 1KB
Tool
SoundTool.cpp 3KB
SoundTool.hpp 994B
README.md 16KB
共 76 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3917
- 资源: 7441
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot和MyBatis的社区问答系统.zip
- (源码)基于Spring Boot和WebSocket的人事管理系统.zip
- (源码)基于Spring Boot框架的云网页管理系统.zip
- (源码)基于Maude和深度强化学习的智能体验证系统.zip
- (源码)基于C语言的Papageno字符序列处理系统.zip
- (源码)基于Arduino的水质监测与控制系统.zip
- (源码)基于物联网的智能家居门锁系统.zip
- (源码)基于Python和FastAPI的Squint数据检索系统.zip
- (源码)基于Arduino的图片绘制系统.zip
- (源码)基于C++的ARMA53贪吃蛇游戏系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功