当前位置: 首页 > news >正文

【设计模式】题目小练2

// 题1. AI 对话系统

// 你要做一个 NPC 对话系统:

// 不同 NPC 有不同的对话脚本(村民、商人、战士)。

// 同时对话还会受玩家状态影响(任务是否完成、声望高低)。

// 👉 请结合 模板方法模式 和 策略模式,设计一下系统结构。

using System;// 抽象策略
public interface ISpeakStrategy
{string Execute();
}// 具体策略
public class RespectStrategy : ISpeakStrategy
{public string Execute() => "尊敬";
}
public class StrangeStrategy : ISpeakStrategy
{public string Execute() => "陌生";
}
public class SeriousStrategy : ISpeakStrategy
{public string Execute() => "严肃";
}
public class AppreciateStrategy : ISpeakStrategy
{public string Execute() => "赞赏";
}// 模板方法模式 —— NPC基类
public abstract class NPC
{// 模板方法:定义固定流程public void Talk(ISpeakStrategy strategy){Greet();CoreDialogue(strategy);Farewell();}protected abstract void Greet();                    // 打招呼protected abstract void CoreDialogue(ISpeakStrategy strategy);  // 核心对话protected abstract void Farewell();                 // 告别
}// 具体NPC
public class Villager : NPC
{protected override void Greet() => Console.WriteLine("村民:你好啊!");protected override void CoreDialogue(ISpeakStrategy strategy)=> Console.WriteLine($"村民用「{strategy.Execute()}」的语气交谈。");protected override void Farewell() => Console.WriteLine("村民:路上小心!");
}public class Merchant : NPC
{protected override void Greet() => Console.WriteLine("商人:客官请进。");protected override void CoreDialogue(ISpeakStrategy strategy)=> Console.WriteLine($"商人用「{strategy.Execute()}」的语气讨价还价。");protected override void Farewell() => Console.WriteLine("商人:欢迎下次光临!");
}public class Warrior : NPC
{protected override void Greet() => Console.WriteLine("战士:哼,你找我吗?");protected override void CoreDialogue(ISpeakStrategy strategy)=> Console.WriteLine($"战士用「{strategy.Execute()}」的语气交流。");protected override void Farewell() => Console.WriteLine("战士:走好,不要添麻烦。");
}// 玩家状态决定策略
public class Player
{public bool IsCompletedTask { get; set; }public float Reputation { get; set; }public ISpeakStrategy ChooseStrategyByTask()=> IsCompletedTask ? new SeriousStrategy() : new AppreciateStrategy();public ISpeakStrategy ChooseStrategyByReputation()=> Reputation >= 60f ? new RespectStrategy() : new StrangeStrategy();
}// 客户端测试
public class Client
{public static void Main(){Player player = new Player { IsCompletedTask = true, Reputation = 80 };NPC villager = new Villager();NPC merchant = new Merchant();NPC warrior = new Warrior();villager.Talk(player.ChooseStrategyByReputation());merchant.Talk(player.ChooseStrategyByReputation());warrior.Talk(player.ChooseStrategyByTask());}
}


文章转载自:

http://xWIqWxws.npfrj.cn
http://GKRjThyu.npfrj.cn
http://4qUAmFmH.npfrj.cn
http://AhEVKISQ.npfrj.cn
http://udR3v0YB.npfrj.cn
http://eEswfFfv.npfrj.cn
http://WSMyWc5J.npfrj.cn
http://5dA7Vm9p.npfrj.cn
http://DHKapn4B.npfrj.cn
http://hwS1FI0u.npfrj.cn
http://WW6qkFAS.npfrj.cn
http://i3Jl0zW5.npfrj.cn
http://woF4hQBc.npfrj.cn
http://JXTDFKIh.npfrj.cn
http://429Ubc5R.npfrj.cn
http://oU8YtB0l.npfrj.cn
http://evMcFaVq.npfrj.cn
http://bNfn5Hx2.npfrj.cn
http://M7WvDHGO.npfrj.cn
http://iKEmV07X.npfrj.cn
http://jILX5OrT.npfrj.cn
http://HjUXUyqW.npfrj.cn
http://I3IsR2TT.npfrj.cn
http://S1jDHvsu.npfrj.cn
http://pGfR7TSO.npfrj.cn
http://w3ay0iaX.npfrj.cn
http://HyYFy469.npfrj.cn
http://oqJihy0G.npfrj.cn
http://JZdeOE22.npfrj.cn
http://5ayyOT7S.npfrj.cn
http://www.dtcms.com/a/380477.html

相关文章:

  • 软考中级习题与解答——第五章_面向对象方法(2)
  • 【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(4):智矿中国
  • wslg 应用白色边框问题(Jetbrains 系列白色边框)
  • jmeter配置数据库连接步骤
  • Dest1ny安全漫谈-如何做好一个安全项目
  • qt中给QListWidget添加上下文菜单(快捷菜单)
  • Elasticsearch的理解与使用
  • android ndk编译valgrind
  • 实现调用libchdb.a静态连接库中的未公开导出函数
  • Deepoc具身智能无人机:为天空装上「自主决策大脑」
  • JX2202 直阻变比智能测试系统:重构新能源电力检测效率标准
  • 2025 年PT展前瞻:人工智能+如何走进普通人的生活?
  • 【AI论文】分享即关爱:基于集体强化学习经验共享的高效语言模型(LM)后训练方法
  • 二、网页的“化妆师”:从零学习 CSS
  • Rustdesk server docker-compose 一键搭建教程
  • 江科大《STM32入门教程》
  • ABI解析智能合约
  • 数据分析入门——解读36页指标体系建设方案【附全文阅读】
  • 隐私保护的照片分享:基于 Secure JPEG 的解决方案
  • 【面试笔记-Java开发岗】
  • OpenLayers数据源集成 -- 章节八:天地图集成详解
  • “可信资产IPO +数链金融RWA” 链改2.0六方共识(深圳)
  • linux自定义网卡名字
  • 基于 OpenCV 的眼球识别算法以及青光眼算法识别
  • 灵码产品演示:Maven 示例工程生成
  • TGRS 2025 | DIA 模块:融合全局与局部特征的可变形交互注意力,即插即用,涨点起飞!
  • Uber开发的QueryGPT:自然语言提示生成SQL查询系统演化
  • 流式上机操作步骤
  • python编程原子化多智能体综合编程应用(上)
  • 栈-1047.删除字符串中的所有相邻重复项-力扣(LeetCode)