可拓宠物互动训练系统
项目结构
extenics-pet-system/
├── main.py # 主程序入口
├── pain_points.py # 痛点引入模块
├── pet_analyzer.py # 宠物分析模块
├── interaction_transformer.py # 可拓互动变换模块
├── training_planner.py # 训练计划生成模块
├── activity_generator.py # 活动生成模块
├── tracking_system.py # 追踪系统模块
├── knowledge_cards.md # 核心知识点卡片
└── README.md # 使用说明文档
主程序 (main.py)
"""
可拓宠物互动训练系统
基于可拓创新思维,设计训练+玩耍的宠物互动方案
增进宠物与主人的感情,实现科学养宠
作者:可拓创新思维课程
版本:1.0
"""
import time
from datetime import datetime
from pain_points import display_pet_pain_points
from pet_analyzer import PetAnalyzer
from interaction_transformer import PetInteractionTransformer
from training_planner import TrainingPlanner
from activity_generator import ActivityGenerator
from tracking_system import PetTrackingSystem
def display_core_logic():
"""显示核心逻辑讲解"""
print("\n" + "="*80)
print("🧠 核心逻辑:可拓宠物互动四步法")
print("="*80)
print("\n📊 第一步:物元建模 - 宠物特征分析")
print(" 用(宠物, 品种, 特征, 行为)描述宠物状态")
print(" 例:金毛 = (犬种, 大型, 温顺, 喜欢玩球)")
print("\n🌳 第二步:发散树分析 - 互动可能性探索")
print(" 训练方法:正向激励 → 点击训练 → 游戏训练 → 模仿学习")
print(" 玩耍方式:室内游戏 → 户外活动 → 益智玩具 → 社交互动")
print("\n✨ 第三步:可拓变换 - 互动方式创新")
print(" • 时间变换:固定时间 → 碎片时间互动")
print(" • 空间变换:室内训练 → 户外拓展")
print(" • 内容变换:枯燥训练 → 游戏化学习")
print(" • 关系变换:主从关系 → 伙伴关系")
print("\n⭐ 第四步:优度评价 - 方案选择优化")
print(" • 可行性:适合宠物品种和年龄吗?")
print(" • 有效性:能增进感情吗?")
print(" • 安全性:对宠物安全吗?")
print(" • 趣味性:宠物和主人都喜欢吗?")
def collect_pet_info():
"""收集宠物信息"""
print("\n" + "="*80)
print("🐾 请填写您的宠物信息")
print("="*80)
pet_info = {}
# 基本信息
print("\n📋 基本信息:")
pet_info['name'] = input("宠物名字: ")
pet_info['species'] = input("宠物种类(狗/猫/其他): ").lower()
pet_info['breed'] = input("宠物品种: ")
pet_info['age'] = int(input("宠物年龄(月): "))
# 根据年龄分类
if pet_info['age'] <= 12:
pet_info['age_group'] = '幼年'
elif pet_info['age'] <= 84: # 7岁
pet_info['age_group'] = '成年'
else:
pet_info['age_group'] = '老年'
# 性格特征
print("\n🎭 性格特征评估(1-5分,5分最明显):")
traits = ['活泼度', '温顺度', '聪明度', '独立性', '好奇心', '胆量']
pet_info['traits'] = {}
for trait in traits:
while True:
try:
score = int(input(f" {trait} (1-5): "))
if 1 <= score <= 5:
pet_info['traits'][trait] = score
break
else:
print("请输入1-5之间的数字")
except:
print("请输入数字")
# 当前行为问题
print("\n⚠️ 当前行为问题(可多选,输入编号,用逗号分隔):")
print("1. 乱叫/乱叫")
print("2. 拆家/破坏")
print("3. 随地大小便")
print("4. 挑食/食欲问题")
print("5. 分离焦虑")
print("6. 攻击性行为")
print("7. 胆小怕人")
print("8. 无问题,只想增进感情")
problems_input = input("请选择问题编号: ")
problems_map = {
"1": "乱叫乱叫", "2": "拆家破坏", "3": "随地大小便",
"4": "挑食问题", "5": "分离焦虑", "6": "攻击性",
"7": "胆小怕人", "8": "无问题"
}
problems = []
for num in problems_input.split(','):
num = num.strip()
if num in problems_map:
problems.append(problems_map[num])
pet_info['problems'] = problems if problems else ["无问题"]
# 主人可用时间
print("\n⏰ 您的可用互动时间:")
pet_info['daily_time'] = int(input("每天可用于互动的时间(分钟): "))
pet_info['weekend_time'] = int(input("周末可用于互动的时间(分钟): "))
return pet_info
def main():
"""主函数"""
# 显示痛点引入
display_pet_pain_points()
input("\n按Enter键开始为您的宠物制定专属互动计划...")
# 显示核心逻辑
display_core_logic()
# 收集宠物信息
pet_info = collect_pet_info()
# 分析宠物特征
print("\n" + "🔍"*20)
print("正在分析宠物特征...")
print("🔍"*20)
analyzer = PetAnalyzer(pet_info)
pet_analysis = analyzer.analyze_pet()
# 显示分析结果
print("\n📊 宠物特征分析结果:")
print("-"*40)
print(f"\n🐾 基本信息:")
print(f" 名字:{pet_info['name']}")
print(f" 种类:{pet_info['species']}")
print(f" 品种:{pet_info['breed']}")
print(f" 年龄:{pet_info['age']}个月({pet_info['age_group']})")
print(f"\n🎭 性格特征:")
traits = pet_info['traits']
for trait, score in traits.items():
stars = "⭐" * score
print(f" {trait}:{stars}")
if 'problems' in pet_info and pet_info['problems'] != ["无问题"]:
print(f"\n⚠️ 需要改善的行为:{', '.join(pet_info['problems'])}")
# 生成可拓互动策略
print("\n" + "✨"*20)
print("生成可拓互动策略...")
print("✨"*20)
transformer = PetInteractionTransformer(pet_analysis, pet_info)
transformations = transformer.generate_transformations()
print("\n🎯 为您推荐的可拓互动策略:")
for i, trans in enumerate(transformations[:5], 1):
print(f"\n {i}. 【{trans['type']}】{trans['name']}")
print(f" 📝 {trans['description']}")
for method in trans['methods'][:2]:
print(f" → {method}")
# 生成训练计划
print("\n" + "📅"*20)
print("生成30天互动提升计划...")
print("📅"*20)
planner = TrainingPlanner(pet_analysis, transformations, pet_info)
monthly_plan = planner.generate_30day_plan()
# 显示计划概览
print("\n" + "="*80)
print(f"🎯 {pet_info['name']}的30天互动提升计划")
print("="*80)
# 总体目标
print(f"\n📈 总体目标:")
print(f" 🎯 主要目标:{monthly_plan['main_goal']}")
print(f" ⏰ 每日互动:{pet_info['daily_time']}分钟")
print(f" 📅 计划周期:30天")
# 每周计划
print(f"\n📅 每周计划安排:")
for week, week_plan in monthly_plan['weekly_plans'].items():
print(f"\n {week_plan['name']}({week_plan['period']})")
print(f" 🎯 本周目标:{week_plan['goal']}")
print(f" 🎪 重点训练:{week_plan['focus']}")
for activity in week_plan['key_activities'][:3]:
print(f" • {activity}")
# 生成日常活动方案
print("\n" + "⚡"*20)
print("日常互动活动方案")
print("⚡"*20)
generator = ActivityGenerator(pet_analysis, transformations, pet_info)
daily_activities = generator.generate_daily_schedule()
print(f"\n🌅 早晨活动({daily_activities['morning']['duration']}分钟):")
for activity in daily_activities['morning']['activities'][:2]:
print(f" • {activity}")
print(f"\n🌇 晚间活动({daily_activities['evening']['duration']}分钟):")
for activity in daily_activities['evening']['activities'][:2]:
print(f" • {activity}")
print(f"\n🌃 周末特别活动({daily_activities['weekend']['duration']}分钟):")
for activity in daily_activities['weekend']['activities'][:2]:
print(f" • {activity}")
# 生成游戏库
print("\n" + "🎮"*20)
print("互动游戏库")
print("🎮"*20)
games = generator.generate_games_library()
print(f"\n🧠 益智类游戏:")
for game in games['puzzle'][:3]:
print(f" • {game}")
print(f"\n⚽ 运动类游戏:")
for game in games['sports'][:3]:
print(f" • {game}")
print(f"\n❤️ 情感交流游戏:")
for game in games['bonding'][:3]:
print(f" • {game}")
# 建立追踪系统
print("\n" + "📊"*20)
print("互动追踪系统")
print("📊"*20)
tracker = PetTrackingSystem()
tracking_system = tracker.setup_tracking_system(pet_info['name'])
print("\n🎯 30天里程碑:")
for milestone, description in tracking_system['milestones'].items():
print(f" {milestone}: {description}")
print("\n📈 追踪指标:")
for metric, methods in tracking_system['metrics'].items():
if methods:
print(f" {metric}: {', '.join(methods[:2])}")
# 显示总结
display_summary(pet_info['name'])
# 保存计划
save_option = input(f"\n是否保存{pet_info['name']}的互动计划?(y/n): ")
if save_option.lower() == 'y':
save_plan(pet_info, pet_analysis, monthly_plan, daily_activities, games)
print("\n" + "🎉"*30)
print(f"计划生成完成!立即开始与{pet_info['name']}的互动之旅!")
print("30天后,您们的关系将更加亲密!")
print("🎉"*30)
def display_summary(pet_name):
"""显示总结"""
print("\n" + "="*80)
print(f"🌟 与{pet_name}成功互动的关键要素")
print("="*80)
print("\n🎯 核心原则:")
principles = [
"1. 耐心温柔:宠物需要时间学习和适应",
"2. 正向激励:用奖励而不是惩罚",
"3. 一致性:固定的指令和规则",
"4. 适量适度:每次训练时间不宜过长",
"5. 寓教于乐:在玩耍中学习和训练"
]
for principle in principles:
print(f" {principle}")
print("\n⚡ 立即行动:")
actions = [
"今天就开始第一个互动游戏",
"准备宠物喜欢的零食作为奖励",
"设置每天固定的互动时间",
"记录宠物的进步和反应",
"每天都要有拥抱和爱抚的时间"
]
for action in actions:
print(f" ✓ {action}")
print("\n💡 温馨提示:")
tips = [
"• 每只宠物都是独特的,尊重它的个性",
"• 训练要有耐心,进步需要时间",
"• 注意观察宠物的情绪和状态",
"• 安全第一,避免危险的游戏",
"• 享受与宠物相处的每一刻"
]
for tip in tips:
print(f" {tip}")
def save_plan(pet_info, pet_analysis, monthly_plan, daily_activities, games):
"""保存计划到文件"""
filename = f"{pet_info['name']}_互动计划_{datetime.now().strftime('%Y%m%d_%H%M')}.md"
with open(filename, 'w', encoding='utf-8') as f:
f.write(f"# 🐾 {pet_info['name']}的30天互动提升计划\n\n")
f.write(f"> 生成时间:{datetime.now().strftime('%Y年%m月%d日 %H:%M')}\n\n")
f.write("## 📋 宠物基本信息\n")
f.write(f"- 名字:{pet_info['name']}\n")
f.write(f"- 种类:{pet_info['species']}\n")
f.write(f"- 品种:{pet_info['breed']}\n")
f.write(f"- 年龄:{pet_info['age']}个月({pet_info['age_group']})\n")
f.write(f"- 行为问题:{', '.join(pet_info['problems'])}\n")
f.write(f"- 每日互动时间:{pet_info['daily_time']}分钟\n\n")
f.write("## 📊 宠物性格分析\n")
traits = pet_info['traits']
for trait, score in traits.items():
stars = "⭐" * score
f.write(f"- {trait}:{stars}\n")
f.write("\n## 🎯 30天互动计划\n")
f.write(f"**主要目标**:{monthly_plan['main_goal']}\n\n")
f.write("### 📅 每周计划\n")
for week, week_plan in monthly_plan['weekly_plans'].items():
f.write(f"\n#### {week_plan['name']}({week_plan['period']})\n")
f.write(f"- **本周目标**:{week_plan['goal']}\n")
f.write(f"- **训练重点**:{week_plan['focus']}\n")
f.write("- **主要活动**:\n")
for activity in week_plan['key_activities']:
f.write(f" - {activity}\n")
f.write("\n## ⏰ 日常活动安排\n")
for time_slot, schedule in daily_activities.items():
f.write(f"\n### {time_slot.title()}({schedule['duration']}分钟)\n")
for activity in schedule['activities']:
f.write(f"- {activity}\n")
f.write("\n## 🎮 互动游戏库\n")
for category, game_list in games.items():
f.write(f"\n### {category}游戏\n")
for game in game_list:
f.write(f"- {game}\n")
f.write("\n## 💡 成功建议\n")
f.write("1. 每天坚持互动,形成习惯\n")
f.write("2. 及时奖励正确行为\n")
f.write("3. 记录宠物的进步和变化\n")
f.write("4. 根据宠物反应调整互动方式\n")
f.write("5. 享受与宠物相处的每一刻\n")
print(f"✅ 计划已保存到:{filename}")
if __name__ == "__main__":
main()
痛点引入模块 (pain_points.py)
"""
痛点引入模块
直击宠物互动痛点
"""
def display_pet_pain_points():
"""显示宠物互动痛点"""
print("="*80)
print("🐾 宠物主人们,您是不是也遇到了这些问题?")
print("="*80)
print("\n🔥 痛点一:宠物不听话,训练没效果")
print(" • 教了很多遍,宠物还是听不懂指令")
print(" • 训练时配合,一结束就恢复原样")
print(" • 不知道如何正确奖励和纠正")
print("\n🔥 痛点二:缺乏互动,关系疏远")
print(" • 每天只是喂食铲屎,缺乏深度互动")
print(" • 宠物对主人不够亲密,不粘人")
print(" • 不知道怎么增进与宠物的感情")
print("\n🔥 痛点三:宠物行为问题多多")
print(" • 乱叫乱咬,拆家破坏")
print(" • 分离焦虑,主人一走就叫不停")
print(" • 胆小怕人,社会化不足")
print("\n🔥 痛点四:没有系统的互动计划")
print(" • 今天玩这个,明天玩那个,没有计划")
print(" • 不知道什么游戏适合自家宠物")
print(" • 互动时间不固定,时有时无")
print("\n🔥 痛点五:缺乏科学方法")
print(" • 用打骂方式"教育"宠物")
print(" • 不知道正向激励的重要性")
print(" • 不了解宠物的行为心理学")
print("\n🔥 痛点六:工作忙,没时间")
print(" • 每天加班,回家只想休息")
print(" • 周末也想躺着,没精力陪宠物玩")
print(" • 觉得互动很累,是负担不是乐趣")
print("\n" + "="*80)
print("💡 解决方案:可拓宠物互动系统")
print(" • 科学分析宠物性格和行为")
print(" • 制定个性化互动训练计划")
print(" • 游戏化互动,增进感情")
print(" • 30天系统计划,见证改变")
print("="*80)
宠物分析模块 (pet_analyzer.py)
"""
宠物分析模块
分析宠物特征和行为
"""
class PetAnalyzer:
"""宠物分析器"""
def __init__(self, pet_info):
self.pet_info = pet_info
self.analysis_result = {}
def analyze_pet(self):
"""分析宠物特征"""
species = self.pet_info['species']
breed = self.pet_info['breed']
age_group = self.pet_info['age_group']
traits = self.pet_info['traits']
problems = self.pet_info['problems']
# 基础分析
self.analysis_result = {
'basic_info': {
'species': species,
'breed': breed,
'age_group': age_group,
'name': self.pet_info['name']
},
'personality_type': self._analyze_personality(traits),
'training_priority': self._analyze_training_priority(problems, traits),
'interaction_style': self._analyze_interaction_style(traits),
'energy_level': self._calculate_energy_level(traits),
'sociability': self._calculate_sociability(traits)
}
# 品种特征补充
breed_features = self._get_breed_features(breed, species)
self.analysis_result['breed_features'] = breed_features
return self.analysis_result
def _analyze_personality(self, traits):
"""分析性格类型"""
active_score = traits.get('活泼度', 3)
gentle_score = traits.get('温顺度', 3)
smart_score = traits.get('聪明度', 3)
independent_score = traits.get('独立性', 3)
if active_score >= 4 and smart_score >= 4:
return "活泼聪明型"
elif active_score >= 4 and gentle_score >= 4:
return "活泼温顺型"
elif gentle_score >= 4 and smart_score >= 4:
return "温顺聪明型"
elif independent_score >= 4 and active_score <= 2:
return "独立安静型"
elif active_score <= 2 and gentle_score >= 4:
return "安静温顺型"
else:
return "均衡型"
def _analyze_training_priority(self, problems, traits):
"""分析训练优先级"""
priorities = []
if "乱叫乱叫" in problems:
priorities.append("安静训练")
if "拆家破坏" in problems:
priorities.append("物品边界训练")
if "随地大小便" in problems:
priorities.append("如厕训练")
if "分离焦虑" in problems:
priorities.append("独立训练")
if "攻击性" in problems:
priorities.append("社会化训练")
if "胆小怕人" in problems:
priorities.append("脱敏训练")
# 根据年龄添加优先级
age_group = self.pet_info['age_group']
if age_group == '幼年':
priorities.append("社会化训练")
priorities.append("基础服从训练")
elif age_group == '成年':
priorities.append("技能提升训练")
elif age_group == '老年':
priorities.append("适应性训练")
# 如果没有问题,专注于互动游戏
if not priorities or "无问题" in problems:
priorities = ["基础服从", "互动游戏", "情感交流"]
return priorities[:3] # 取前3个优先级
def _analyze_interaction_style(self, traits):
"""分析适合的互动风格"""
active_score = traits.get('活泼度', 3)
smart_score = traits.get('聪明度', 3)
curiosity_score = traits.get('好奇心', 3)
if active_score >= 4 and smart_score >= 4:
return "高能量高智能型:需要大量运动和脑力活动"
elif active_score >= 4 and smart_score <= 3:
return "高能量型:需要大量运动,简单游戏"
elif active_score <= 3 and smart_score >= 4:
return "高智能型:需要脑力挑战,适量运动"
elif curiosity_score >= 4:
return "探索型:喜欢新游戏和新环境"
else:
return "温和型:喜欢温和稳定的互动"
def _calculate_energy_level(self, traits):
"""计算能量等级"""
active_score = traits.get('活泼度', 3)
energy_map = {
1: "低能量:每天30分钟轻度活动",
2: "中低能量:每天45分钟适度活动",
3: "中等能量:每天60分钟适度活动",
4: "中高能量:每天90分钟活跃活动",
5: "高能量:每天120分钟以上高强度活动"
}
return energy_map.get(active_score, "中等能量")
def _calculate_sociability(self, traits):
"""计算社交性"""
gentle_score = traits.get('温顺度', 3)
brave_score = traits.get('胆量', 3)
if gentle_score >= 4 and brave_score >= 4:
return "高度社交:喜欢与人和其他动物互动"
elif gentle_score >= 4 and brave_score <= 2:
return "温和但胆小:需要慢慢建立信任"
elif gentle_score <= 2 and brave_score >= 4:
return "胆大但有距离感:需要建立尊重"
else:
return "适度社交:需要正确引导"
def _get_breed_features(self, breed, species):
"""获取品种特征"""
breed_features = {}
if species == '狗':
breed_info = {
'金毛': {'size': '大型', 'energy': '高', 'trainability': '高', 'temperament': '温顺友好'},
'拉布拉多': {'size': '大型', 'energy': '高', 'trainability': '高', 'temperament': '活泼友好'},
'柯基': {'size': '中小型', 'energy': '中高', 'trainability': '中高', 'temperament': '聪明活泼'},
'柴犬': {'size': '中型', 'energy': '中', 'trainability': '中', 'temperament': '独立有个性'},
'贵宾': {'size': '中小型', 'energy': '中高', 'trainability': '高', 'temperament': '聪明活泼'},
'哈士奇': {'size': '大型', 'energy': '极高', 'trainability': '中', 'temperament': '活泼好动'},
'边牧': {'size': '中型', 'energy': '极高', 'trainability': '极高', 'temperament': '聪明好动'}
}
breed_features = breed_info.get(breed, {'size': '未知', 'energy': '中等', 'trainability': '中等', 'temperament': '需要观察'})
elif species == '猫':
breed_info = {
'英短': {'size': '中型', 'energy': '中低', 'trainability': '中', 'temperament': '温顺安静'},
'美短': {'size': '中型', 'energy': '中高', 'trainability': '中高', 'temperament': '活泼友好'},
'布偶': {'size': '大型', 'energy': '中低', 'trainability': '中高', 'temperament': '温顺粘人'},
'暹罗': {'size': '中型', 'energy': '高', 'trainability': '高', 'temperament': '活泼话多'},
'中华田园猫': {'size': '中小型', 'energy': '中高', 'trainability': '中', 'temperament': '聪明独立'}
}
breed_features = breed_info.get(breed, {'size': '未知', 'energy': '中等', 'trainability': '中等', 'temperament': '需要观察'})
else:
breed_features = {'size': '未知', 'energy': '中等', 'trainability': '需观察', 'temperament': '需观察'}
return breed_features
def get_training_recommendations(self):
"""获取训练建议"""
recommendations = []
age_group = self.analysis_result['basic_info']['age_group']
personality = self.analysis_result['personality_type']
priorities = self.analysis_result['training_priority']
# 年龄相关建议
if age_group == '幼年':
recommendations.append("社会化关键期,多接触不同环境和人")
recommendations.append("每次训练5-10分钟,每天多次")
recommendations.append("使用正向激励,建立信任基础")
elif age_group == '成年':
recommendations.append("巩固基础训练,学习新技能")
recommendations.append("每次训练10-15分钟,保持兴趣")
recommendations.append("挑战智力游戏,防止无聊")
elif age_group == '老年':
recommendations.append("温和训练,注意关节健康")
recommendations.append("短时多次,避免疲劳")
recommendations.append("强化已学技能,保持大脑活跃")
# 性格相关建议
if "活泼" in personality:
recommendations.append("训练前适当运动释放能量")
recommendations.append("使用动态游戏式训练")
recommendations.append("保持训练趣味性,防止分心")
if "温顺" in personality:
recommendations.append("温柔引导,避免惊吓")
recommendations.append("建立牢固的信任关系")
recommendations.append("使用柔和的声音和动作")
if "聪明" in personality:
recommendations.append("提供智力挑战游戏")
recommendations.append("经常变换训练内容")
recommendations.append("训练复杂技能和指令")
如果你觉得这个工具好用,欢迎关注我!