`

从魔兽世界看策略模式

阅读更多

    策略这两个字乍一听上去有点像三国志游戏里,那些鬼点子特别多的谋士出的阴谋阳谋之类的。但在面向对象的软件世界中,策略的范围要比谋略广很多。

 

    我想以一款网络游戏来描述这个模式,玩过魔兽世界的人都知道它是比较早引入地下城(Dungeon)概念的游戏之一。地下城里有各种妖魔鬼怪给玩家砍啊杀啊。杀死boss后会掉落玩家所需要的各种装备。地下城从低级到高级,种类繁多,适合不同等级的玩家去探险刷装备。其中一些特殊的地下城因为难度较高,对玩家的人数有要求,需要组队才能通过冒险。越高难度需要的人数越多,当然奖励也会越丰厚。

 

    比如著名的黑龙公主巢穴,这个地下城可以支持10人组队和25人组队两种游戏难度。组队在游戏中指的是由一名队长(玩家)联合其他玩家组成一个小队,一起完成冒险。队长必须先选定难度(比如10人或者25),再开始召集各路好手,进入地下城探险。

 

    闲聊结束。

     

    接下来,让我们从游戏设计者的角度来看待这个问题。刚开始的设计应该是这样的。一切看上去很简单。

     

                  

    后来游戏开发者突发奇想,觉得25人也没有挑战性了,又想增加难度,加入一个40人组队的难度。



 

 

    其实在加入40人难度时,合格的设计者就会开始思考,将来是否还会加入60人甚至80人难度?

 

    根据不同难度,分别初始化地下城。其实初始化这个动作本身就可以看做一种策略。策略模式也可以在此发挥它的长处。

 

    我们现在需要定义三种策略,策略其实就是一种动作,如果用计算机语言描述约等于算法(后面统一用算法来代替动作这个名词)。

    

    如下图所示

                    

 

 

    到这里其实还没有真正发挥策略模式的优点。

 

    如果用抽象的概念来看,这三个动作其实都一样,只是具体算法不同。在抽象的世界里应该是下图这样

                     

 

    这样做的好处是如果以后要加入60人或者80人的地下城,程序的结构会非常清晰。

    上面的结构其实就是策略模式的典型应用,当然到这里还没有结束。那么如何应用策略呢。

 

     我想用伪代码的形式来说明策略模式的应用,分为不使用模式和使用模式:

      1、应用策略模式之前,看到的应该是这样的逻辑:

 

      //如果是10人地下城

      //初始化10人地下城

      //否则如果是25地下城

      //初始化25人地下城

      .....

 

      2、应用策略模式之后,看到的应该是这样的逻辑:

      //根据玩家人数初始化对应的地下城(统一入口)

 

      不使用模式的做法在算法不是非常多的情况下非常适合。套用程序员的白话讲就是把代码逻辑写死。

      但第二种更灵活,并且很方便扩展。因为人数是动态的,策略模式带来的好处是明显的,就是在程序运行时动态地替换算法。而不用把代码写死。

     关于如何用代码实现策略模式,网上有很多文章,使了用各种语言,不管是C++,C#,Java还是动态语言来说明和讲解。都讲的很多,这里就不再重复。

 

     最后来总结一下策略模式的使用,大体实现都是两步:

     第一步:针对每种策略抽象各自的算法。使各算法可以互不影响。

     第二步:提供统一入口。用于根据指定条件来替换算法。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 大小: 18.9 KB
  • 大小: 33.6 KB
  • 大小: 4.4 KB
  • 大小: 9 KB
分享到:
评论

相关推荐

    魔兽世界的源码

    《魔兽世界》是一款全球知名的大型多人在线角色扮演游戏(MMORPG),其源码的公开对于学习和研究游戏开发,尤其是大型服务器架构、网络编程以及C++语言的开发者来说,是一份宝贵的资源。下面,我们将深入探讨这份...

    国服魔兽世界精灵最新插件

    3. **竞技场插件**:竞技场是《魔兽世界》中的PvP模式,需要团队协作和战术策略。竞技场插件往往专注于提供敌方信息、战术提示、伤害统计等功能。本插件中竞技场部分的调整,可能是为了简化界面,使玩家更加专注于...

    用于规划和优化Mythic+地牢运行的魔兽世界插件___下载.zip

    在魔兽世界这款大型多人在线角色扮演游戏(MMORPG)中,Mythic+地牢是一种极具挑战性的副本模式,需要玩家团队进行精心的策略规划和高效的执行。为了帮助玩家更好地应对这一挑战,开发者们创建了一系列插件,其中...

    我国网络游戏营销策略分析-以魔兽世界为例.doc

    本文主要探讨的是我国网络游戏的营销策略,以全球知名游戏《魔兽世界》为案例进行深入分析。作者指出,随着互联网和计算机技术的快速发展,网络游戏行业已成为极具利润的产业,中国在此领域已形成庞大的市场规模。...

    我国网络游戏营销策略分析以魔兽世界为例.doc

    《魔兽世界》作为全球知名的游戏品牌,其营销策略对中国网络游戏市场具有重要的参考价值。 1. **网络游戏的发展现状** - **规模**:中国网络游戏市场规模持续扩大,从早期的单机游戏发展到如今的在线网络游戏,...

    yii 实现魔兽世界排名网站源码

    Yii 提供了丰富的特性,如MVC(模型-视图-控制器)架构模式、数据库访问对象(DAO)、ActiveRecord、I18N和L10N(国际化和本地化)、缓存策略、安全性和性能优化等。Yii 的优势在于其高效的性能和简洁的代码,使得...

    WOWOnline_wow_WOW挂机_魔兽世界_注入_魔兽世界注入_源码.rar.rar

    总结起来,"WOWOnline_wow_WOW挂机_魔兽世界_注入_魔兽世界注入_源码.rar.rar"这个压缩包可能包含了一套完整的魔兽世界挂机程序的源代码,涵盖了游戏编程、自动化工具开发、游戏安全与反作弊策略等多个领域的知识。...

    战斗的奥秘:《魔兽世界》数值解读.rar

    9. **版本更新与平衡调整**:《魔兽世界》的数值系统会随着版本更新而变化,文档可能会讨论不同版本中的数值调整,以及这对玩家策略的影响。 总之,《战斗的奥秘:《魔兽世界》数值解读》是一个深度探讨游戏内战斗...

    Fisherbot_wow钓鱼挂机脚本研究_

    在网络游戏《魔兽世界》(World of Warcraft,简称WoW)中,钓鱼是一项深受玩家喜爱的休闲活动,它不仅可以带来珍贵的资源,还能提供独特的游戏体验。然而,手动钓鱼的过程可能相对枯燥,因此,一些玩家会选择使用...

    SpeedyAutoLoot.rar

    《魔兽世界快速拾取插件SpeedyAutoLoot详解》 在大型多人在线角色扮演游戏(MMORPG)《魔兽世界》中,玩家需要花费大量时间在探索、战斗和收集资源上,其中,拾取战利品是游戏流程中的一个重要环节。为了提高效率,...

    伤害统计Skada插件优化版

    《伤害统计Skada插件优化版》是一款专为魔兽世界设计的统计插件,它旨在提供更为精确且高效的伤害统计功能。在当前游戏版本中,玩家可以借助此插件来实时监控自己及队友的战斗表现,包括但不限于伤害输出、治疗量、...

    电子商务盈利模式研究.doc

    1.5 网络游戏盈利模式包括付费游戏和免费游戏两种,后者通过增值服务收费,如《魔兽世界》和免费游戏内的道具购买。 为了优化这些盈利模式,企业可以采取以下策略: 2.1 对于销售产品的盈利模式,企业应扩大用户...

    shmammered-text:将常规文本转换为醉酒文本。 受魔兽世界的启发

    【shmammered-text】是一个基于JavaScript的文本处理工具,它能将普通的文本转换成一种模拟“醉酒”状态的语言风格,这种风格让人联想到网络游戏《魔兽世界》中的幽默元素。在编程领域,这样的工具通常被称作文本...

    定稿网络游戏的运营模式分析(2).zip

    这种模式在早期网络游戏中常见,如《魔兽世界》。随着FTP模式的兴起,订阅模式逐渐减少,但仍在某些大型MMORPG中保留。 三、微交易与内购系统 1. **微交易**:玩家在游戏中进行小额消费,购买虚拟商品或服务。内购...

    LBS^2 魔兽

    【LBS^2 魔兽】是一款基于魔兽争霸III地图编辑器开发的自定义游戏,它融合了地理位置服务(LBS,Location-Based Services)与魔兽世界的元素,为玩家提供了全新的游戏体验。在这个游戏中,玩家可能需要利用真实世界...

    魔兽地图编辑自学手册

    7. **创意实践**:最后,通过一系列实战案例,你将学习到如何将理论知识应用到实际的地图创作中,比如构建RPG地图、策略地图或是竞技地图,让你的想象力在游戏世界中飞翔。 通过《魔兽地图编辑自学手册》,你不仅...

    网络游戏-通过幻像模式使用数据传输建立的幻像网络.zip

    在实际的网络游戏开发中,许多著名的作品如《魔兽世界》、《英雄联盟》等都采用了类似幻像模式的技术。通过对这些成功案例的研究,我们可以学习到如何在不同类型的游戏中灵活应用幻像模式,以提高网络效率和用户...

    js 模仿魔兽争霸

    在JavaScript的世界里,模仿经典游戏"魔兽争霸"是一项挑战性的任务,它涉及到多个技术领域,如前端开发、游戏逻辑、用户交互以及动画效果等。在这个项目中,我们将深入探讨如何利用JavaScript来实现这一目标。 首先...

    我漂亮的wow游戏截图

    6. **PVP竞技**:在《魔兽世界》的PVP模式下,玩家可以与其他阵营的玩家进行战斗,这包括战场、竞技场和个人遭遇战等多种形式。PVP竞技对玩家的策略、操作和团队协作有着极高的要求。 7. **世界观与剧情**:《魔兽...

    网游行业十大经典营销案例分析.docx

    3. **魔兽与可口可乐合作** - 这是一个跨行业的合作典范,2005年魔兽世界与可口可乐联手,不仅提升了双方品牌影响力,还开辟了“饮料+网游”的合作路径。魔兽世界广告登陆央视,展示了游戏的正面形象,而可口可乐则...

Global site tag (gtag.js) - Google Analytics