【cocos2d-x IOS游戏开发-捕鱼达人14】炮弹切换界面

原创 2013年12月05日 22:56:02

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17150705


上节回顾

【cocos2d-x IOS游戏开发-捕鱼达人13】完善鱼群效果


1、大炮功能分析

基本数据
等级
外观(外观由等级决定)

基本操作
等级改变
炮弹发射

2、大炮布局与事件

额外工作
主界面布局

大炮相关
降级按钮
升级按钮
大炮炮管


具体的实现如下:

初始化player界面层

#ifndef __GAME_UI_MGR_H__
#define __GAME_UI_MGR_H__
#include "../ui/UIBeginLogic.h"
#include "../ui/UIPlayLogic.h"
#include "../include/IGameLogic.h"
namespace fishingjoy
{
	namespace logic
	{
		class CGameUIMgr
		{
			ui::CBeginUILogic* m_pBeginUI;
			ui::CPlayUILogic* m_pPlayUI;
		public:
			CGameUIMgr()
			{

			}
			void init(IGameLogic* pLogic,CCLayer* pUIRoot)
			{
				m_pBeginUI = new ui::CBeginUILogic(pLogic,pUIRoot);
				//初始化player界面
				m_pPlayUI = new ui::CPlayUILogic(pLogic,pUIRoot);
			}
		};
	}
}
#endif
大炮界面层实现:

#ifndef __UI_CANNON_LAYOUT_H__
#define __UI_CANNON_LAYOUT_H__
#include "cocos2d.h"
#include "../include/SignalSlot.h"
USING_NS_CC;
namespace fishingjoy
{
	namespace ui
	{
		class UI_CannonLayout:public CCLayer
		{
		public:
			base::Signal<void(void)> Event_CannonAdd;
			base::Signal<void(void)> Event_CannonReduce;
			CCSprite* m_pCannon;
		public:
			UI_CannonLayout()
			{
				m_pCannon = CCSprite::create("ui/pao5.png",CCRectMake(0,0,64,88));
				//bg->setAnchorPoint(CCPointZero);
				addChild(m_pCannon);
				//add button.
				CCMenuItemSprite* pAdd = CCMenuItemSprite::create(CCSprite::create("ui/button_add.png",CCRectMake(0,0,34.5,42))
					,CCSprite::create("ui/button_add.png",CCRectMake(34.5,0,34.5,42)),this,menu_selector(UI_CannonLayout::onMenu_Add));
				pAdd->setPositionX(50);
				//reduce button.
				CCMenuItemSprite* pReduce = CCMenuItemSprite::create(CCSprite::create("ui/button_reduce.png",CCRectMake(0,0,34.5,42))
					,CCSprite::create("ui/button_reduce.png",CCRectMake(34.5,0,34.5,42)),this,menu_selector(UI_CannonLayout::onMenu_Reduce));
				pReduce->setPositionX(-50);
				//add all of buttons into menu.
				CCMenu* pMenu = CCMenu::create(pAdd,pReduce,NULL);
				pMenu->setPositionX(0);
				pMenu->setPositionY(0);
				//attach to ui node.
				addChild(pMenu);
			}

			void setCannonLevel(int lv)
			{
				m_pCannon->setTextureRect(CCRectMake((lv-1)*64,0,64,88));
			}

		private:
			void onMenu_Add(CCObject* pSender)
			{
				Event_CannonAdd();
			}

			void onMenu_Reduce(CCObject* pSender)
			{
				Event_CannonReduce();
			}
		};
	}
}
#endif

大炮操作逻辑层实现:

#ifndef __PLAY_UI_LOGIC_H__
#define __PLAY_UI_LOGIC_H__
#include "UIPlayLayout.h"
#include "UICannonLayout.h"
#include "../include/IGameLogic.h"
namespace fishingjoy
{
	namespace ui
	{
		class CPlayUILogic
		{
			UI_PlayLayout m_PlayLayout;
			UI_CannonLayout m_CannonLayout;
			logic::IGameLogic* m_pGameLogic;
			int m_iCannonLevel;
		public:
			CPlayUILogic(logic::IGameLogic* p,cocos2d::CCLayer* pParent)
			{
				m_pGameLogic = p;
				pParent->addChild(&m_PlayLayout);
				m_PlayLayout.setVisible(false);
				base::Delegate<void(void)> egs(this,&CPlayUILogic::slot_EnterGame);;
				m_pGameLogic->Event_EnterGameSuccessed+=egs;

				base::Delegate<void(void)> gps(this,&CPlayUILogic::slot_CannonAdd);;
				m_CannonLayout.Event_CannonAdd += gps;

				base::Delegate<void(void)> ges(this,&CPlayUILogic::slot_CannonReduce);
				m_CannonLayout.Event_CannonReduce += ges;
				
				m_PlayLayout.addChild(&m_CannonLayout);
				m_CannonLayout.setPositionX(258);
				m_CannonLayout.setPositionY(25);


				m_iCannonLevel = 1;
			}
		private:
			void slot_EnterGame()
			{
				m_PlayLayout.setVisible(true);
			}

			void slot_CannonAdd()
			{
				m_iCannonLevel++;
				if(m_iCannonLevel > 5)
					m_iCannonLevel = 1;
				m_CannonLayout.setCannonLevel(m_iCannonLevel);
			}

			void slot_CannonReduce()
			{
				m_iCannonLevel--;
				if(m_iCannonLevel < 1)
					m_iCannonLevel = 5;
				m_CannonLayout.setCannonLevel(m_iCannonLevel);
			}
		};
	}
}
#endif

现在可以看到大炮界面了:

本节源代码与工程文件:【资源引用页】

java实现捕鱼达人游戏之Java swing图形界面开发游戏项目捕鱼达人源码及实现方式详解

今天我们来看看Java如何实现捕鱼达人游戏的设计与开发,源码文件非产多,没办法全部贴出来,只贴部分源码,项目下载地址在最下方,先来看看运行结果: 接下来我们来看看代码: package com.m...
  • llqqxf
  • llqqxf
  • 2016年07月13日 17:04
  • 4150

【笔记】Cocos2d-x高级开发教程:制作自己的<捕鱼达人> 笔记一:序_前言_第一章

Cocos2d-x高级开发教程:制作自己的 摘录一:序_前言_第一章 ------------------------------------------------- 序 1.Cocos2d...
  • L_BadLuck
  • L_BadLuck
  • 2013年12月26日 16:41
  • 1894

对于基本的捕鱼游戏设计思路(三)——炮弹

双休的时候休息了两天,玩玩游戏看看电影,也没带电脑所以搞得打包游戏都得今天才弄,然后选择继续写捕鱼游戏之炮弹的生成。 分析炮弹对象,首先炮弹肯定是有它的类型,然后根据点击的坐标发射,每点击一次发射一...
  • Cineze
  • Cineze
  • 2016年09月26日 17:23
  • 939

H5 canvas基础入门到捕鱼达人小游戏实现(1)

为什么学习canvas? 看见别人网页一些非常炫酷的效果,羡慕不已,于是对canvas产生了浓厚的兴趣,所以想仔细学习学习canvas.下面就一起来学习吧,本文为系列文章,最后会编写一个简单版的捕...
  • qq_32514043
  • qq_32514043
  • 2017年12月21日 08:50
  • 166

HTML5游戏实战(2):90行代码实现捕鱼达人

捕鱼达人是一款非常流行的游戏,几年里赚取了数以千万的收入,这里借用它来介绍一下用Gamebuilder+CanTK开发游戏的方法。其实赚钱的游戏未必技术就很难,今天我们就仅用90来行代码来实现这个游戏...
  • absurd
  • absurd
  • 2014年12月03日 06:55
  • 19870

捕鱼游戏java源码

package fishlord; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ...
  • u014801801
  • u014801801
  • 2016年12月24日 22:55
  • 1468

【cocos2d-x IOS游戏开发-捕鱼达人19】音乐与音效的实现

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17151883 上节回顾 【cocos2d-x I...
  • danielzzu
  • danielzzu
  • 2013年12月06日 14:32
  • 2731

《捕鱼达人3》讲解Cocos引擎3D技术(四):旋涡特效

大家好,经过前面三节课的学习,我们已经可以掌握将模型加载到游戏中进行显示,并且做出模型在水中受波光影响的效果,也学会了如何产生闪电链。这一节课,我们来学习一下如何开发旋涡特效。 在《捕鱼达人...
  • sunyazhou13
  • sunyazhou13
  • 2014年08月15日 08:47
  • 1068

【cocos2d-x IOS游戏开发-捕鱼达人17】炮弹攻击判定

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17151883 上节回顾 【cocos2d-...
  • danielzzu
  • danielzzu
  • 2013年12月06日 10:24
  • 3384

15款Cocos2d-x游戏源码

(1)用cocos2d-x开发的中国象棋游戏源码 使用Cocos2d-X2.2.3开发的一款中国象棋游戏,游戏中可以实现、新局面、悔棋、游戏音乐、胜利后会显示游戏结果。 源码下载:http...
  • Jailman
  • Jailman
  • 2017年11月30日 17:52
  • 1268
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【cocos2d-x IOS游戏开发-捕鱼达人14】炮弹切换界面
举报原因:
原因补充:

(最多只允许输入30个字)