逗B少年搞程序04 策略模式——这次要甩什么技能呢~
2014-04-27 21:35
246 查看
开始看设计模式已经一周了,没事上课就拿着看看,看了不少但是敲得不多,看到后面已经有些理解困难了。果然这个不动动手就不行啊。
每次看一个模式的时候都会联想应用的地方,当然最多的时候还是联系游戏中的场景。。。看了大神用剪刀石头布来分析策略模式,本来还有点不太懂的地方也就看得差不多了。
策略模式,简单说就是事先写好各种能想到的策略,然后根据传递的参数不同,系统给出不同的反应。
这不就简单了嘛~
作为一名游戏玩家,策略类游戏也是非常的了解,电脑AI会根据玩家不同的站位,职业,生命值,魔法等等条件,瞬间做出各种各样的反应。
恩,差不多。
上次有人要看简单兵营模式,这次就写个强行联系dota的吧。
首先,一般来说dota中一个英雄有四个技能,而这四个技能的释放时机是要玩家自己判断的。就拿萌萌的冰女来说,四个技能分别是霜冻新星,冰封禁制,辉煌光环,极寒领域。那么着四个技能就是我们要事先写好的四个策略类。
最后就是根据玩家的选择,把condition的传过去。
就是这样了。
策略模式可以配合一些事先写好的组合框选项选项,很快的完成业务逻辑变换,而且维护起来也相对容易。和简单工厂结合一下,也能大大降低系统的耦合性。
越写越兴奋,妥妥的搞起,先甩对面一脸技能再说~
以上
每次看一个模式的时候都会联想应用的地方,当然最多的时候还是联系游戏中的场景。。。看了大神用剪刀石头布来分析策略模式,本来还有点不太懂的地方也就看得差不多了。
策略模式,简单说就是事先写好各种能想到的策略,然后根据传递的参数不同,系统给出不同的反应。
这不就简单了嘛~
作为一名游戏玩家,策略类游戏也是非常的了解,电脑AI会根据玩家不同的站位,职业,生命值,魔法等等条件,瞬间做出各种各样的反应。
恩,差不多。
上次有人要看简单兵营模式,这次就写个强行联系dota的吧。
首先,一般来说dota中一个英雄有四个技能,而这四个技能的释放时机是要玩家自己判断的。就拿萌萌的冰女来说,四个技能分别是霜冻新星,冰封禁制,辉煌光环,极寒领域。那么着四个技能就是我们要事先写好的四个策略类。
abstract class 技能 { public abstract string 释放(); } class 霜冻新星 : 技能 { private string name = "霜冻新星"; public override string 释放() { return name; } } class 冰封禁制 : 技能 { private string name = "冰封禁制"; public override string 释放() { return name; } } class 辉煌光环 : 技能 { private string name = "辉煌光环"; public override string 释放() { return name; } } class 极寒领域 : 技能 { private string name = "极寒领域"; public override string 释放() { return name; } }[b]技能效果可以自己调整,比如伤害类型,伤害数值等等,具体什么效果这里我就不写了,写出来还不知道什么德行的。每个技能是要玩家根据局势自己选择的,那么我们就写几个条件。[/b]
class 选择 { private 技能 jn = null; public 选择(string condition) { switch (condition) { case "爆发": 霜冻新星 jn1 = new 霜冻新星(); jn = jn1; break; case "控制": 冰封禁制 jn2 = new 冰封禁制(); jn = jn2; break; case "队友缺魔法": 辉煌光环 jn3 = new 辉煌光环(); jn = jn3; break; case "队友打不过了": 极寒领域 jn4 = new 极寒领域(); break; } } public string 释放结果() { return jn.释放(); } }
最后就是根据玩家的选择,把condition的传过去。
namespace ConsoleApplication8 { class Program { static void Main(string[] args) { Console.WriteLine("当前局势:"); 选择 xz = new 选择(Console.ReadLine()); Console.WriteLine(xz.释放结果()); } } }
就是这样了。
策略模式可以配合一些事先写好的组合框选项选项,很快的完成业务逻辑变换,而且维护起来也相对容易。和简单工厂结合一下,也能大大降低系统的耦合性。
越写越兴奋,妥妥的搞起,先甩对面一脸技能再说~
以上
相关文章推荐
- 逗B少年搞程序04 装饰模式——又是一波非常规性总结
- 策略模式与命令模式的区别 是什么?
- tensorflow27《TensorFlow实战Google深度学习框架》笔记-10-04 异步更新模式样例程序 code
- 策略模式Strategy——坐什么车回家?
- 代理模式 和 策略模式 看似相似,有什么不同
- 什么是大小端模式,写个程序判断本机是大端还是小端模式
- 程序设计模式 —— 策略模式
- 什么是策略模式?
- 逗B少年搞程序03 简单工厂模式——模式来源于生活而高于生活
- 模式识别 - 有害视频检测程序的策略
- 策略模式Strategy——回家乘什么车?
- 逗B少年搞程序07 模板方法模式——思路可以相同,但思路不会被复制
- 策略模式与命令模式的区别 是什么?
- JAVA设计模式是个什么玩意儿_04_建造者模式
- 逗B少年搞程序06 原型模式——手动蜡烛
- Python设计模式——策略模式(孙悟空用什么打妖怪)
- 【小程序】用策略模式完成自定义类的排序(改进版)
- 策略模式与SPI机制,到底有什么不同?
- [设计模式-04]策略模式-对开发和测试的意义