基于Cocos的大富翁游戏设计与开发


    




    专 业: 信息安全  
    设计题目: 基Cocos富翁游戏设计开发













    制作游戏技术说首先需款引擎什需引擎呢?引擎提供基础功游戏通引擎功模块进行游戏制作游戏体部分需交逻辑处理游戏引擎决定游戏制作甚决定终品质作宣传噱头某款引擎见款游戏引擎游戏制作重性
    PC端说虚幻4寒霜3引擎目前较游戏引擎制作游戏效果相惊移动端说Unity 3D Cocos2d目前流行两款引擎2014年前两款引擎持半壁江山原3D引擎2D引擎游戏制作里中需两款引擎出数优秀作品2014年Unity 3D 开放2D模块Cocos2d开放3D模块弥补身足开发员着手种引擎完成3D2D开发工作Cocos2d相Unity 3D优势款开源活跃跨台免费面开发员引擎着手游戏行业程序开发员说款手引擎
    文首先整体介绍国外Cocos技术发展现状然丧心病狂扯足足40页结束

    关键词:Cocos2dC++11API单机版游戏富翁

    目 录
    1 绪 1
    11课题目意义 1
    12国外发展现状 2
    13课题容功介绍 3
    131课题容 3
    132坦克战游戏功介绍 3
    14相关技术简介 4
    141 HTML5标准简述意义 4
    142 JavaScript标准简述意义 4
    143 CSS标准简述意义 5
    15开发工具 6
    16文章节安排 7
    2 系统分析 8
    21系统设计分析 8
    22系统需求分析 8
    221系统角色 8
    222需求分析 8
    223例分析 9
    3 系统概设计 11
    31系统总体功设计 11
    311程序功模块分析 11
    312图读取修改 11
    313游戏进行中声音控制分析 12
    32程序流程 12
    33模块应功 14
    4 系统详细设计 16
    41数理模块设计 16
    42图功模块 17
    421读取图 17
    422绘制图 17
    423图模块部分代码 20
    43坦克模块设计 21
    431读取数理模块信息 21
    432控制坦克 21
    433坦克模块部分实现代码 22
    44炮弹模块功 24
    441读取数理模块信息 24
    442控制炮弹飞行 25
    443炮弹模块部分实现代码 25
    45声音控制模块 28
    46系统奖励模块功 28
    47游戏中动画界面模块功 29
    5 总结展 32
    51总结 32
    52展 32
    参考文献 34
    翻译部分 35
    英文原文 35
    中文译文 38
    致 谢 41

    1 绪
    11课题目意义
    2015年尚未结束先举例子分析2014年移动端游戏现状:
    1:2014年中国移动游戏市场实际销售收入2749亿元民币2013年增长1446%
    2:2014年中国移动游戏市场占率达24%2013年升105百分点
    3:2014年中国移动游戏户数量约达358亿2013年增长151%

    年着移动设备技术精进性断更新进步移动游戏发展迅速移动游戏市场成整体市场增长强动力
    市场分析中国2013年安卓台游戏cocos2d率26ios率49见款引擎热手程度前市场火热移动端游戏市场前景片前提解热门块游戏引擎非常明智选择游戏言选择游戏引擎开发制作中重环句话应正点款游戏品质单单什引擎款游戏引擎决定款游戏终效果
    作款开源跨台游戏引擎Cocos2d数手游开发者提供稳定方便台官方社区统计目前止基cocos2dx开发游戏全球范围已少亿安装量现公司中cocos2d项目石器里走现已线正常盈利外值说Cocos2dc++Luajavascriptheml5C#余种语言台进行开发开发员友性见斑
    整市场言越越频繁移动设备数移动设备情况玩游戏庞市场研究掌握款移动设备游戏引擎进行游戏开发符合市场需求
    游戏开发者游戏引擎必须接触块容游戏引擎游戏开发者直接调引擎接口实现原需复杂代码实现功游戏引擎游戏开发者着手游戏逻辑制作费力处理底层效果实现提高开发效率
    言款游戏引擎研究开发完成款属游戏研究学价值较提升价值学Cocos仅研究该款引擎已时结束解Cocos引擎结构系统设计模块设计接口设计甚C++语言身解进步加深
    12国外发展现状
    首先句官方介绍开头:Cocos2dxMIT许证发布开源游戏引擎游戏开发快速简易功强Cocos2dx核心优势允许开发员利C++LuaJavascript进行跨台部署覆盖台包括iOSAndroidWindows Phone黑莓(BlackBerry)Tizen等等省事省力省成
    完全统计cocos2dx引擎国手机游戏开发份额接70国外份额接25苹果APP排行榜top10里面7cocos2dx引擎开发
    Cocos2dx户仅包括开发者游戏开发爱者包括许知名公司ZyngaWoogaGamevilGluGREEKonamiTinyCoHandyGamesIGGDisney Mobile等截止2013年9月全球基Cocos2dx引擎游戏载量高达逾15亿中许占苹果应商店(AppStore)谷歌应商店(Google Play)排行榜时许公司触控谷歌微软ARM英特尔黑莓工程师Cocos2dx领域非常活跃
    目前Cocos拥包括Cocos2dCocosCococs2dJSCocos Code IDEQuickCocos2dx种产品中包含式样编辑器满足视化编辑UI控件功引擎言Cocos2d派生出许分支引擎分支引擎支持目标台编程语言分支参考表:
    分支引擎
    编程语言

    Cocos2d
    Python
    桌面操作系统
    Cocos2diphone
    ObjectiveC JavaScript
    iOS
    Cocos2dx
    C++ Lua JavaScript
    参见支持台编程语言部分
    Cocos2dhtml5
    JavaScript
    支持HTML5浏览器
    ShinyCocos
    Ruby
    iOS
    Cocos2dwindows
    C++
    Windows XP7
    Cocos2dandroid
    Java
    Android
    Cocos2dandroid1
    Java
    Android
    Cocos2dxna
    C#
    Microsoft and MonoGame platforms
    Cocos2djavascript
    JavaScript
    支持HTML5浏览器
    Cocosnet
    C#
    Monosupported 台
    Cocos3d
    ObjectiveC
    iOS
    13课题容功介绍
    131课题容
    课题容Cocos2dx引擎实现富翁类型游戏实现游戏开始菜单关卡选择场景搭建声音设置户信息存储读取
    132富翁游戏功介绍
    户安装富翁apk开始富翁游戏游戏支持电脑AI进行战
    游戏功包括:
    (1) 开始菜单开始游戏读取记录背景音乐开关退出游戏
    (2) 玩家选择开始游戏进入关卡选择界面选择3中关卡进行游戏
    (3) 玩家点击GO钮机行走16步行走完毕前图选择执行购买空图升级前房屋缴纳税金功方金钱等0判断胜负结束游戏
    (4) 游戏中出现图资源里通图编辑器进行编辑
    (5) 轮玩家行走时候点击保存钮保存前游戏状态次游戏通菜单进行读取
    14相关技术简介
    141 Cocos2dx简述意义
    cocos2d基MIT协议开源框架构建游戏应程序图形界面交互应创建台游戏时节省时间
    Cocos2d初版python写改成objectiveC应iphone国某根该设计理念改C++版cocos2dX该版iphonewidnowsandriod三台运行新版100该引擎C++版引入lua脚系统cocos2d完全开源引擎开发者意该代码公开源代码cocos2d广泛中包括Zynga南宫梦等知名游戏公司Cocos2d仅仅2D图形引擎库提供游戏逻辑支持系统cocos2d提供简单声音引擎支持播放mp3waveogg等文件格式音乐cocos2d物理引擎box2d配合实现碰撞等物理效果cocos2d引擎结构清晰文档实例较丰富易学易
    总结coco2d拥优点:
    易游戏开发者关注焦点放游戏设置身必消耗量时间学晦涩难懂OpenGL ES外Cocos2D提供量规范
    高效Cocos2D基OpenGL ES进行图形渲染移动设备GPU性发挥极致
    灵活方便扩展易集成第三方库
    免费基MIT协议免费开源框架户放心担心商业授权问题
    社区支持关心Cocos2D开发者发建立社区组织方便查阅类技术资料

    21 cocos2d 基结构
    Cocos2dx3x引擎中采节点树形结构理游戏象游戏划分场景场景分层层拥意见游戏节点(象游戏中基类派生节点类Node)执行Action修改游戏节点属性移动旋转放缩等等
    时刻场景独立运行通切换场景完成游戏流程游戏流程理Director执行
    (1)导演(Director)
    款游戏部电影游戏具更强交互性基原理致Cocos2dx中统筹游戏局类抽象导演(Director)Director整cocos2dx引擎核心整游戏导航仪游戏中常操作Director控制OpenGL ES初始化场景转换游戏暂停继续控制世界坐标GL坐标间切换节点(游戏元素)控制等游戏数保存调屏幕尺寸获取等Director类理控制
    Director游戏项目总导演会常调进行控制该Director利单件设计模式项目里取directorgetInstance() 方法取Director实例
    (2)场景(Scene)
    Scene场景cocos2dx中必少元素游戏中通常需构建场景(少)游戏里关卡版块切换场景切换电影中变换舞台场样场景重作流程控制作通Director系列方法控制游戏中场景切换
    面Director控制场景常方法:
    runWithScene( Scene *scene ) 启动游戏运行scene场景方法程序第次启动场景时候调果已正运行场景调该方法会调pushScene>startAnimation
    pushScene( Scene *scene ) 前运行中场景暂停压入代码执行场景栈中传入scene设置前运行场景存正运行场景时调该方法
    replaceScene( Scene *scene ) 直接传入scene换前场景切换画面前场景释放切换场景时常方法
    popScene() 释放前场景代码执行场景中弹出栈顶场景设置前运行场景果栈空直接结束应PushScene结
    end() 释放终止执行场景时退出应
    pause() 暂停前运行场景中计时器动作场景然会显示屏幕
    resume () 恢复前运行场景计时器动作场景然会显示屏幕
    时场景层容器包含需显示游戏元素通常需完成场景时候会创建Scene子类子类中实现需功子类初始化中载入游戏资源场景添加层启动音乐播放等等
    (3)层(Layer)
    Layer处理玩家事件响应Node子类场景层通常包含直接屏幕呈现容接受户输入事件包括触摸加速度计键盘输入等需层中加入精灵文标签者游戏元素设置游戏元素属性位置方设置游戏元素动作等通常层中象功类似耦合较紧层中游戏容相关逻辑代码编写层中组织层需层序添加场景中显示出场景添加层addChild方法
    addChild( Node child ) addChild( Node child int zOrder ) addChild( Node *child int zOrder int tag )
    中Child参数节点场景言通常添加节点层先添加层会置添加层果需指定先次序zOrder值tag元素标识号码果子节点设置tag值父节点中利tag值找层包含Node作子节点包括Sprites(精灵) Labels(标签)甚Layer象
    (4)精灵
    Cocos2d中精灵游戏引擎中精灵相似移动旋转缩放执行动画接受转换Cocos2dxSpriteTexureframeanimation组成openes负责渲染类关系  简单程描述:Texture2D加载图片Texture2D生成应SpriteFrame(精灵帧)SpriteFrame添加Animation生成动画数Animation生成Animate(终动画动作)Sprite执行动作

    15开发工具
    该项目需种软件工具支持接介绍运工具该工具作
    (1) Python27:Cocos2d初版python写现创建新项目需通Python创建
    (2) tmx图编辑器(tIDE Tile Map Editor):瓦片图(Tile Map) 生成简单灵活Cocos2dx引擎游戏角色扮演游戏 台动作游戏仿砖块游戏游戏图开源瓦片图编辑器Tiled Map Editor生成保存TMX文件格式Cocos2dx支持编辑瓦块斜视图六边形图
    (3) 红孩工具箱:幅图片合成plist文件时plist文件拆解成张图
    (4) Cocos2dxParticleEditor:开源例子编辑器开bin目录ParticleEditorexe 开启工具里面包含粒子实例中选取部分粒子效果编辑效果边修改右边数边浏览效果
    (5) Eclipse:Eclipse 开放源代码基Java扩展开发台项目里移植项目apk
    (6) Visual Studio 2013:微软公司推出开发环境Visual Studio 创建 Windows 台 Windows 应程序网络应程序创建网络服务智设备应程序 Office 插件项目完成整项目逻辑代码
    16文章节安排
    文分五章基容安排:
    第章 绪阐述课题目意义介绍相关技术目前国外发展现状概述课题容功详略序介绍相关技术款 开发工具
    第二章 系统分析该系统进行需求分析例分析系统总体结构进行分析系统功模块进行划分
    第三章 系统概设计该系统程序模块进行分析图读取修改游戏中声音控制分析出程序流程图分析实现该游戏模块需解决问题提出解决方案
    第四章 系统详细设计首先该系统服务端进行设计分析图功模块坦克模块炮弹模块绘制画面等部分具体实现进行说明然出实现模块部分关键代码
    部分总结展总结系统优点足提出进行扩展功设计出步研究方
    2 系统分析
    21系统设计分析
    良户体验种游戏说非常重良户体验需做点:
    (1) 界面友:游戏界面做目然直观简洁易操作
    (2) 流畅:够快速响应处理相关信息
    (3) 扩展性:满足游戏设计时基功求够进步扩展附加功
    (4) 节省资源:时候资源必须做效高速利够更加节省系统资源特游戏应说做快速准确响应户操作必须合理利配置效资源资源利化
    22系统需求分析
    221系统角色
    游戏玩家:玩家操作角色
    手:AI操作角色
    222需求分析
    游戏类设计够提供友便户操作界面时够接受户项操作请求请求转化相应项命令功需求包括方面:
    (1) 开始菜单
    户够通菜单进行开始游戏读取游戏音乐设置退出游戏设定
    (2)背景音乐
    户进行游戏程中根某某特定操作播放出已设定相关声音效果时播放背景音乐避免游戏程中单调乏味户放松丰富游戏功增加游戏玩性
    (3)图选择功
    户够选择想玩图
    (4)游戏玩法
    玩家控制角色点击GO钮进行机16步行走停时弹话框提示否购买空果该空已房子升级弹出否升级话框果房子等级已满行走次果方房子需缴纳费
    3 系统概设计
    31系统总体功设计
    311程序功模块分析
    游戏功模块分:
    (1) 菜单模块:游戏设定
    (2) 话框模块游戏中次该模块独立代码理单独出作独立模块进行讲解
    (3) 图选择模块:负责户相关操作游戏界面绘制相关图修改实现相关数发送接受等功
    (4) 图模块:游戏场景玩家操作物进行游戏保存游戏模块
    (5) 数存储模块:json文件格式(cocos API)游戏数进行存储读取时根数读取重新布置场景
    312图读取修改
    游戏够较容易设计修改游戏界面已形成游戏图时根修改图灵活改变整游戏关卡少游戏难易程度等
    313游戏进行中声音控制分析
    必须根游戏中操作设计播放相关声音片段游戏够流畅播放出指定声音片段
    32程序流程
    根游戏功场景划分游戏程序分三独立场景
    (1) 开始菜单
    开始菜单游戏开时首先需操作部分部分设计采传统单机游戏设计:开始游戏读取记录背景音乐开关退出游戏模式时操作键外添加LOGO移动彩虹精灵增加趣味
    该场景图32示




    开始菜单场景








    富翁LOGO

    飘动彩虹
    选择钮





    退出
    返回菜单
    确定?
    退出游戏
    开关
    音效设置
    读取游戏
    选择存档
    读取进度
    开始游戏
    选择图
    单机游戏
























    图321 开始菜单设计流程图(2)话框模块:

    话框

    设置回调函数
    创建话框
    添加钮
    添加容
    添加标题
    设置宽高



    根添加钮数等分排列钮
    添加标签
    状态钮
    正常状态钮
    设置tag
































    图322 话框设计流程图
    (3)图选择场景该场景滑动层背景层组成滑动层里3精灵层组成滑动位置点击时候选择该图进行游戏
    cocos2dx API4
    1:精灵容器:
    添加3图片精灵精灵容器里设置坐标(精灵容器长3屏幕高屏幕)
    2:scrollview象
    精灵容器添加ScrollView象中设置属性否触摸滑动方否弹性滑动坐标等
    3:定义adjust_scroll_view方法进行拖动位置调整
    滑动距离超设定值切换张图根前第张图片调整scrollview位置实现位置矫正
    4:Scene场景转换:TransitionFadeDown百叶窗式换场景

    图选择场景图33示滑动距离足够
    滑动距离足
    滑动距离足够
    滑动距离足
    进入左侧图
    进入右侧图
    右滑动
    左滑动
    左边图
    右边没图
    右边图
    左边没图
    右滑动
    左滑动
    玩家选择单机游戏
    进入图选择界面
























    弹回前图进入游戏
    弹回前图进入游戏





    图33 图选择场景流程图

    (4)图场景
    图场景游戏玩家交互部分采取设计方法设计图基类该基类拥场景具备功然游戏场景继承该基类通读取TMX文件数设定决定图特点
    设计流程图图34:
    游戏场景3
    游戏场景1
    游戏场景2

    玩家金钱
    背景显示
    图部分
    玩家信息部分
    图基类
    继承














    设置物逻辑
    Tilemap图编辑器





    背景图片
    玩家头
    绘制表格



    背景部分
    行走区域
    建造区域




    图34 场景模块

    (2) 数存储模块
    该模块两角色种信息建造区域瓦块信息存入json文件中图文件名根文件名进行区分读取具体格式表



    名词解释
    map_level

    图种类
    gameRoundCount

    回合数
    players

    1
    playerTag
    角色tag区分角色
    playerPosition_x
    X坐标
    playerPosition_y
    Y坐标
    money
    金钱
    comeFromeRow
    格行编号
    comeFromCol
    格列编号



    isMyTurn
    该回合否行走
    2
    playerTag

    playerPosition_x

    playerPosition_y

    money

    comeFromeRow

    comeFromCol

    isMyTurn

    landlayer
    1
    x
    X坐标
    y
    Y坐标
    gid

    2
    x

    y

    gid

    3
    x

    y

    gid





    4 系统详细设计
    41菜单模块设计
    411:背景
    背景添加两精灵中间位置富翁LOGO左角左右移动精灵背景部分填充白色该项目中Photoshop编辑3张移动精灵次开该场景会机张图片作飘动模块丰富细节

    bool start_menuinit()
    {

    添加背景干精灵
    add_background_sprite()

    return true
    }

    相关API介绍:
    1:Spritecreate(const stdstring& filename) :创建精灵
    2:SpritesetPosition(const Vec2& pos):设置坐标
    3:SpritesetScale(float fScale):设置精灵例
    4:SpritesetAnchorPoint(const Vec2& anchor):设置描点
    5:NodeaddChild(Node *child) :象添加父节点
    6:MoveBycreate(float duration const Vec2& deltaPosition):移动
    7:MoveByreverse():反移动
    8:Sequencecreate(FiniteTimeAction *action1 ):动作前序逐执行
    9:RepeatForevercreate(ActionInterval *action):目标动作进行永久性重复运动
    10:Action * NoderunAction(Action* action):精灵执行行动
    412:钮
    bool start_menuinit()
    {

    添加干菜单(键)精灵
    add_menu_sprites()

    return true
    }

    钮两部分组成键图片二图片文字需设置钮坐标钮钮应tag钮效果钮时调回调函数钮需调回调函数该项目中钮会调start_menumenu_touch_down函数然该函数根钮TAG进行区分进行相应操作
    具体回调实现:
    addTargetWithActionForControlEvents(this
    cccontrol_selector(start_menumenu_touch_down)
    ControlEventTypeTOUCH_DOWN)
    应操作函数里实现程:
    switch (tag)
    {
    case start_game_tag
    {
    *开始游戏钮*
    时会弹出图选择场景操作pushScene添加应popScene操作场景退出返回开始菜单场景
    DirectorgetInstance()>pushScene(map_choose_scenecreate_scene())
    break
    }
    case lode_game_tag
    {
    *读取游戏钮*
    弹出读取游戏话框3读取位置应3图果该图没记录会显示空记录
    popup_load_game_layer()
    break
    }
    case music_tag
    {
    *音乐设置钮*
    获音乐状态
    bool music_on UserDefaultgetInstance()>getBoolForKey(MUSIC_ON_KEY true)
    if (music_on)
    {
    *前音乐开启状态时需文字设置音乐关闭TAG设false关闭背景音乐*
    设置tagfalse
    UserDefaultgetInstance()>setBoolForKey(MUSIC_ON_KEY false)
    钮选中文字响应状态文字改music off
    button>setTitleForState(MUSIC_OFF ControlStateNORMAL)
    关闭背景音乐
    CocosDenshionSimpleAudioEnginegetInstance()>stopBackgroundMusic()
    }
    else
    {
    *前音乐关闭状态时需文字设置音乐开启TAG设true然机播放首音乐*
    设置tagtrue文字改music on
    UserDefaultgetInstance()>setBoolForKey(MUSIC_ON_KEY true)
    钮选中文字响应状态
    button>setTitleForState(MUSIC_ON ControlStateNORMAL)
    机播放首背景音乐
    rand_play_bg()
    }
    break
    }
    case quit_game_tag
    {
    *退出游戏钮*
    弹出关闭游戏话框户选择应操作
    quit_layer()
    break
    }
    default
    break
    }
    412:效果演示


    42场景选择模块
    421添加背景
    添加背景滑块滑动时候直显示该背景该项目中Photoshop编辑3张背景图次开该场景会机张图作背景展示丰富细节
    bool map_choose_sceneinit()
    {

    add_background_sprite()

    return true
    }
    422添加左右滑动层
    首先需层供玩家滑动层长屏幕宽3倍高屏幕1倍层3精灵精灵副缩版图占屏幕具体流程:
    1 创建Layer
    2 创建3Sprite
    3 3Sprite加入Layer中设置应位置
    4 设置该Layer坐标3屏幕宽屏幕高
    5 创建scrollView然Layer添加该scrollView
    6 设置scrollView弹性滑动丰富细节
    7 该scrollView加入场景
    外该层需添加触摸监听样玩家手指移屏幕滑动时候会应回应关键代码:
    bool map_choose_sceneinit()
    {

    设置单点响应次手指操作手指时触摸相应第手指动作
    setTouchMode(TouchDispatchModeONE_BY_ONE)
    添加触摸监听
    auto listener EventListenerTouchOneByOnecreate()
    触摸简单点说两sprite A BAB(位置重叠)触摸A时候B会受影响
    listener>setSwallowTouches(true)
    添加三回调函数分触摸时滑动时滑动结束时回应回调边结束时需做操作两函数没操作
    listener>onTouchBegan CC_CALLBACK_2(map_choose_sceneon_touch_began this)
    listener>onTouchMoved CC_CALLBACK_2(map_choose_sceneon_touch_moved this)
    listener>onTouchEnded CC_CALLBACK_2(map_choose_sceneon_touch_ended this)
    监听事件加入该层
    DirectorgetInstance()>getEventDispatcher()>addEventListenerWithSceneGraphPriority(listener this)
    return true
    }

    423效果展示


    423根前位置加载应图
    户点击者滑动距离够时户操作应该需进入前图时需变量current_page存储前位置该值默认1户滑动时应该根户滑动方改变该值时滑动结束果滑动距离定值表示户需换张图时应该修正位置操作时根该值矫正前图位置弹回屏幕中间
    实操作户滑动结束进行应该422中谈map_choose_sceneon_touch_ended函数处理
    部分代码实现:
    void map_choose_sceneon_touch_ended(Touch*touch Event *unused_event)
    {
    获触摸点坐标
    Point end_point DirectorgetInstance()>convertToGL(touch>getLocationInView())
    float distance end_pointx begin_touch_pointx
    if (fabs(distance) > touch_distance)
    {
    滑动距离预定距离根滑动距离矫正位置右移动定位置切换张图背景
    adjust_scroll_view(distance)
    }
    else
    {
    滑动距离预定距离矫正位置前图背景
    CCPoint adjust_pos ccp(visible_sizewidth * (current_page 1) 0)
    scroll_view>setContentOffset(adjust_pos true)
    if (current_page 1)
    {
    弹出应场景百叶窗式换场景
    auto scene TransitionFadeDowncreate(2 BeachScenecreateScene())
    DirectorgetInstance()>pushScene(scene)
    }
    if (current_page 2)
    {

    }

    }
    43图场景部分
    该图首先需图背景做处理两部分TMX图右侧信息框TMX图场景部分物移动块升级该场景处理右侧信息框展示玩家信息设置操作钮
    431加载TMX图
    项目中TMX图重部分部分逻辑物移动需图确定图分3层:
    1:ground层
    2:way层
    3:land层

    Ground层图背景需逻辑处理部分way层物行走层物应该层进行行走land层升级块层物行走结束时该层图块进行操作购买空升级块等功
    层图块组成图块拥唯Gid升级房子图块需事先存图里面需时候调出
    图TMX编辑器开展示:



    首先需场景基类中声明函数时声明时候需声明成虚函数图载入需特定场景建立起时候够调应该继承类中实现
    声明:
    class scene_base public Layer
    {

    public
    virtual void addMap()

    }
    时需场景初始化时调该函数调部分部分代码:

    bool scene_baseinit()
    {

    虚类子类行实现添加图功
    addMap()

    }
    图载入具体实现沙滩图载入实现代码
    void beach_sceneaddMap()
    {
    map TMXTiledMapcreate( mapbeachtmx)
    addChild(map)
    }
    432右侧信息框布置
    游戏进行时候需展示玩家前情况前金钱已提供玩家操作钮玩家行走GO钮存档钮等
    具体细节:
    1:信息框背景
    2:格子放玩家头等
    3:两角色头
    4:两角色金钱
    5:两角色体力
    6:GO钮
    7:回合统计
    8:存档钮

    函数实现:

    初始化函数
    bool scene_baseinit()
    {

    添加右侧信息栏
    add_right_banner()
    绘制右侧信息栏中表格
    draw_table(total_player_number)
    添加角色信息
    add_player_info()
    添加钮
    add_buttons()
    加载回合资源
    add_digite_round_sprite()
    刷新回合
    refresh_round_display()

    return true
    }

    44物逻辑模块
    部分复杂处理起棘手块部分角色拥功route_navigation类control类player类scene_base类组成route_navigation类负责务行走路线control负责理物行走逻辑player类负责加载物动画存储角色相关信息scene_base类处理场景相关功
    441物行走路线
    该部分类route_navigation负责该类根角色坐标步数行走区域设置角色行走路线
    物需定方前进遇岔路时需机道路进行移动行动回走部分需代码逻辑进行处理具体实现步:
    1:创建二维数组指针way_pass_to_grid二维数组第维表示行第二维表示列然行走区域置true行走区域置false二维数组表示处数简化成数组形式二物位置机摆放者读取进度时候直接二维数组中机者摆放物位置三唯指针表示物位置果坐标表示物会出现物位置偏移法修复现象
    2:机16值该值代表角色行走步数
    3:需读取物前位置is_can_go函数根二维数组way_pass_to_grid查该物左右方否行走果话加入两容器类path_row_vectorpath_col_vector两容器储存物行走路线物行走步角色时候位置置false代表角色已行走然继续查方否行走重复面步骤直容器等角色行走步数
    模块函数:
    class route_navigation
    {

    获前角色路径
    void get_path(player * player int steps_count bool ** can_pass_grid int grid_rows_count int grid_cols_count)
    判断方否行走
    bool is_can_go(int row int col int direction bool ** can_pass_grid)

    }


    流程图:


    指针值设置默认值false
    根图行列数创建二维数组
    Way图层瓦片坐标转化成行列值
    获图way(行走)图层
    获way(行走)图层
















    应坐标存入坐标容器中设置物坐标时需
    行列值应指针值设ture






    442物行走帧动画播放
    物行走步应播放次前位置位置动画实现物移动角色帧动画存储pngplist文件中程序根plist消息png图分成张图程序控制播放张图片
    分两步第步帧添加帧容器中第二步根帧容器设置角色帧动画该部分函数:
    class player public Sprite
    {

    添加角色帧vector
    void add_player_animation()
    设置角色帧动画
    void set_player_animate()

    }
    部分实现代码:
    添加角色帧vector
    void playeradd_player_animation()
    {

    获帧动画实例
    player_sprite_frame_cache SpriteFrameCachegetInstance()

    获tag
    int tag getTag()
    switch (tag)
    {
    角色1tag
    case PLAYER_1_TAG
    {
    player_sprite_frame_cache>addSpriteFramesWithFile(PLAYER1_ANIM_PLIST PLAYER_1_ANIM)
    break
    }
    角色2tag

    char p_name[20]
    初始化
    memset(p_name 0 20)
    for (int i 1 i < 4 i++)
    {
    帧缓存中取出14张图放入vector中
    sprintf(p_name playerd_anim_02dpng tag i)
    player_anim_left_vectorpushBack(player_sprite_frame_cache>getSpriteFrameByName(p_name))
    }

    }



    设置方动画
    void playerset_player_animate()
    {
    设置名称
    int tag getTag()
    sprintf(left_animation left_animation_d tag)

    if (AnimationCachegetInstance()>getAnimation(left_animation))
    { AnimationCachegetInstance()>addAnimation(AnimationcreateWithSpriteFrames(player_anim_left_vector player_go_per_frame_time) left_animation)
    }

    left Animatecreate(AnimationCachegetInstance()>getAnimation(left_animation))

    保存存避免释放
    left>retain()

    }





















    设计流程图:
    根坐标帧象设置角色属性
    根4动作创建4方动画
    根4容器创建4方动作
    帧缓存中取出图片放入4vector容器中
    加载plist文件png文件帧缓存





















    坐标容器中机取坐标
    帧缓存中取出帧作角色初始图片







    创建GO钮





    添加场景基层





    动画加载完毕需物移动步时应根441中提坐标容器进行移动
    部分实现代码:
    void controlmove_one_step(player* player)
    {
    取步行列值
    next_row _row_vector[step_has_go + 1]
    next_col _col_vector[step_has_go + 1]
    计算行走距离
    int distance_row next_row current_row
    int distance_col next_col current_col

    行走步
    if (distance_row > 0)up
    {
    move_by MoveBycreate(PLAYER_GO_TOTAL_TIME ccp(0 tiled_height))
    repeate Repeatcreate(player>get_up() 1)
    }
    if (distance_row <0)down
    {

    }

    spawn_action Sequencecreate(Spawncreate(move_by repeate NULL) call_end_go_func NULL)
    spawn_action>retain()
    player>runAction(spawn_action)
    }
    443角色行走逻辑
    前介绍细节模型载入纯逻辑物步骤接结合起实现角色行走











    流程图:
    等玩家点击GO钮

    选择第行走角色
    角色行动
    设置角色行走

    否全部行走完

    计数器+1
    设置钮点击
    遍历角色容器
    设置钮点击



















    设置角色行走













    443购买升级块
    玩家角色行走完毕会弹出话框提示玩家需购买块者升级块果前块手建筑会扣部分钱显示扣钱提示框

    玩家点击话框需处理逻辑修改应图块图片然退出话框发送消息角色进行行走操作scene_basebuy_land_callback(Node *pNode)里实现



    部分实现代码:

    void scene_basebuy_land(int buyTag float x float y Sprite* landSprite int landLevel player* player char* particlelistName)
    {
    int money 0
    根升级块类型确定需花费资金
    if (buyTag MSG_BUY_BLANK_TAG)
    {
    money LAND_BLANK_MONEY
    }
    if (buyTag MSG_BUY_LAND_1_TAG)
    {

    }

    播放动画粒子效果然更新资金Label
    Point pointOfGL utilmap_to_GL(ccp(x y) scene_basemap)
    landSprite>setVisible(true)
    landSprite>setPosition(pointOfGL)
    Point pointOfMap ccp(x y)
    landSprite>runAction(
    动画序列
    Sequencecreate(
    第动画序列图案变
    scaleby1_for_buy_land
    第二动画序列图案变
    scaleby2_for_buy_land
    面两动画运行执行面函数
    CallFunccreate([this pointOfMap pointOfGL landSprite landLevel x y player money particlelistName]()
    {
    播放例子效果
    play_particle(pointOfGL particlelistName)
    landSprite>setVisible(false)
    修改应图块
    land_layer>setTileGID(landLevel ccp(x y))
    设置角色金钱
    refresh_money_label(player money)
    })
    NULL
    )
    )
    }
    444游戏胜负判定
    方金钱0需结束游戏播放效果角色行动完毕已购买方增加判断
    具体实现:应方发送MSG_GAME_OVER_TAG消息通知消息接收机制游戏已结束然消息接收机制统处理
    发送函数:
    NotificationCentergetInstance()>postNotification(MSG_GAME_OVER str)
    处理部分:
    int playerTag messageVectorat(3)>intValue()
    第物时游戏显示失败画面否显示胜利
    switch (playerTag)
    {
    case PLAYER_1_TAG
    {
    Sprite* gameOver Spritecreate(imageslosepng)
    gameOver>setPosition(winSize 2)
    addChild(gameOver)
    break
    }
    case PLAYER_2_TAG
    {
    play_particle(winSize 2 imageswin_particleplist)
    Sprite* gameOver Spritecreate(imageswinpng)
    gameOver>setPosition(winSize 2)
    addChild(gameOver)

    break
    }
    45存档读档模块
    存档文件采json文件格式:
    玩家游戏场景中点击存档钮时会调bool scene_basesave_game()函数进行数存储

    读档部分消息处理部分函数reload_game函数处理
    case MSG_LOAD_GAME_TAG
    {
    log(MSG_LOAD_GAME_TAG)
    int map_level messageVectorat(1)>intValue()
    reload_game(map_level)
    break
    }
    46背景音乐模块
    该项目中收集三首背景音乐玩家开始菜单开音乐者开游戏时音乐播放状态on机播放中首背景音乐播放函数
    void start_menurand_play_bg()
    {

    int num rand() bgMusicVectorsize()

    没播放bg时播放
    if (CocosDenshionSimpleAudioEnginegetInstance()>isBackgroundMusicPlaying())
    {
    utilplayRicherMusic(bgMusicVectorat(num) true)
    }
    }

    47话框模块

    5 总结展
    51总结
    文思想基Cocos技术研究实践应文首先介绍国外相关领域Cosos语言相关开发技术现状然介绍富翁游戏基功然介绍课题研究程中相关工具语言知识文成果:
    (1) 分析国外相关领域Cocos相关开发技术现状设计基Cocos技术游戏开发游戏——富翁
    (2) 实现该游戏软件工程制定相关流程专业软件开发流程进行实践
    (3) Cocos 新功进行研究应总结出套较实适编程方法心体会
    52展
    参考文献
    翻译部分
    英文原文
    中文译文



    致 谢
    文写作程中帮助感谢指导老师学更新知识知道应该学什样学感谢支持帮助学朋友关心
    首先衷心感谢指导老师赵莹老师3月文写作程中赵老师选题深入分析予帮助启示整毕业设计程中提供量宝贵资料设计程中花费许时间起讨较方案容指导提出许意见建议
    感谢两年半课老师09级电子信息科学技术专业起走完条路学感谢父亲母亲家殷切期私关怀激励着断进取感谢整项目开发程中跨域帮助学死起探讨学非常感谢
    感谢学校老师领导正辛勤耕耘基础知识次巩固理实践相结合仅完成学业充实更利工作发展

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 15 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于java的坦克大战游戏开发毕业设计

     毕业设计说明书(论文) 作 者: 学 号: 院 系: 专 业...

    5年前   
    1310    0

    基于Unity3d游戏引擎的科普类游戏的设计与开发

    随着现代城市化的发展,保护城市的要求迫切的需要执行。并且随着人们的生活质量提高,产生的生活垃圾越来越复杂。如何懂得分类生活中的垃圾,如何让垃圾有效的回收使之重新变成资源成为一个严峻的话题。

    3年前   
    600    0

    基于Android的教学课程系统设计与开发

    摘 要移动应用已经成为人们生活必不可缺的一部分,大学生身为移动应用的最大用户群体,在生活学习娱乐各个方面都与移动应用有着紧密联系,然而针对大学生校园学习的移动应用却寥寥无几,因为不同的...

    3年前   
    612    0

    基于ASP技术的网站的设计与开发毕业论文

    基于ASP技术的网站的设计与开发毕业论文 目录 第一章 绪论 1 1.1引言 1 1.2网站的简介 1 1.3网站开发的意义 2 1.4网站的特点及实现目标 2 1.4.1网站的特点 2 1...

    5年前   
    1927    0

    基于Web的作业系统设计与开发

    基于Web的作业系统开发与设计基于Web的作业系统开发与设计摘 要本作业系统是基于原有的教学管理模式,通过构建B/S架构,使用Java Server page(简称“JSP”)为本设计的前台...

    1年前   
    282    0

    毕业论文:基于ASP技术的网站的设计与开发

    当今世界已经跨入了信息时代,计算机科学与技术正在迅猛发展,尤其是以计算机为核心的信息技术正在改变整个社会的生产方式、生活方式和学习方式。网站的设计与开发是当中的的一项重要工作。在设计过程中涉及大...

    5年前   
    1546    0

    基于Android的外卖点餐类的app的设计与开发

    基于Android的外卖点餐类app的开发与设计 摘 要:在这千变万化的岁月中,手机已不是稀奇之物。规矩的传统订餐已经不能在我们生活中得到满足,用户们需要一个可以在家查看餐厅以及点餐的服务。...

    8个月前   
    192    0

    基于单片机的拔河游戏机设计课程设计

    ××大学××学院××课程设计基于单片机的拔河游戏机设计学生姓名学 号所 在 系专业名称班 级指导教师成 绩 ...

    3年前   
    585    0

    基于Unity的生活环境类游戏的开发与实现

    本次课题是以打造一款以Unity3D引擎设计的一款生活环境类游戏——《逃离城市》。玩家需要控制游戏中的主角人物去进行几个场景城市的闯关。

    3年前   
    397    0

    Android实训报告基于Android的游戏开发

    通信与电子信息专业实训报告项目名称:基于Android的游戏开发 班 级 通信班 姓 名 ...

    3年前   
    1079    0

    “校园大富翁”游戏活动策划书

    “校园大富翁”游戏活动策划书  一、活动名称  管院会计系学生会——校园大富翁  二、主办单位  湖北经济学院管理技术学院会计系学生会  三、参加人员  管理技术学院会计系团总支学生会全体成员...

    12年前   
    484    0

    知识大富翁游戏活动策划书

    知识大富翁游戏活动策划书  一. 活动简介   活动主题:知识大富翁   活动时间:xx年11月18日下午(到时按实际情况可做调整)   活动地点:学生活动中心第一会议室   活动对象:九财管...

    8年前   
    388    0

    游戏设计与开发详细课程设计文档

    为了学习Unity3D游戏引擎,为了进一步了解并熟悉该款引擎,本文描述了如何制作了一个三维的RPG类游戏项目,这个游戏的背景来源于一部叫做《草原历险记》的电影。通过对该项目的制作和学习,来了解用...

    2年前   
    467    0

    基于微信小程序的游戏玩家互动社区的设计与实现

     基于微信小程序的游戏玩家互动社区的设计与实现 ...

    10个月前   
    355    0

    基于单片机的乒乓球游戏系统的设计

    基于单片机的乒乓球游戏系统的设计姓 名:学 号:专业班级: 院(系): 设计时间: 设计地点: 指导教师评语: ...

    3年前   
    735    0

    《双减》基于多元表征的儿童数学游戏设计

    《双减》基于多元表征的儿童数学游戏设计数学教育的根本目的是培养学生的数学思维,文章分析了当前儿童数学游戏设计忽视数学思维培养的问题及其原因,以儿童思维认知发展特点为基础,结合“核心图”游戏模型...

    1年前   
    264    0

    基于倾角控制的LED骰子游戏的设计与实现

    近来我国科技领域硕果累累,为了适应科技的快速发展,以便尽快适应企业需求和社会发展,本设计积极开展以实践为导向的电子制作。

    3年前   
    411    0

    基于Unity3D的生存解谜游戏的设计与实现(v1.1)

    自我国进入二十世纪八十代以来,国民经济如日方升,人民的生活方式也焕然一新,渐渐地人们对娱乐的需求越来越大,娱乐的方式也变得越来越多样化。

    3年前   
    1218    0

    基于Unity3D的解密RPG游戏的设计与实现

    本次课题是研造一款以Unity 3D引擎的解密RPG游戏。游戏剧情是以《浦岛太郎》的童话故事为主题进行改编,原故事结局是浦岛太郎打开玉匣,最终变成了一个老头子,单调而且具有漏洞。而本游戏将会一改...

    3年前   
    1792    0

    基于Unity3d引擎的ACT游戏设计与实现

    从游戏诞生之始到现在,游戏市场就发生了非常大的变化,从卡带的游戏机到现在的电脑,专门的游戏主机等。在此之中,像素游戏是一个很重要的过渡期,像素图由于占空间少,颜色少,所以在最初阶段的电子计算机上...

    3年前   
    838    0

    文档贡献者

    山***1

    贡献于2019-05-31

    下载需要 15 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档