你有没有过这样的瞬间?加班到深夜,盯着满屏的bug,突然想养一只猫,但房东不让、时间不够、钱包更不够。🫠
2026年,全球虚拟宠物市场规模已突破800亿美元,而今天我要教你——不用花一分钱,只用200行Python代码,写一只真正懂你的电子宠物。它会饿、会困、会撒娇,甚至能记住你的生日。
🐣 1. 为什么2026年你需要一个电子宠物?
首先,这不是一个“玩具”。我曾在GitHub上看到一个开源项目,一个程序员为去世的仓鼠写了只电子宠物,每天在终端里喂它虚拟瓜子。那一刻我突然意识到:代码可以承载情感。
其次,2026年的电子宠物早已不是Tamagotchi那样只会叫。现代虚拟宠物结合了状态机、有限状态自动机和简单的AI对话。你甚至可以训练它——就像训练一个迷你神经网络。
- ✅ 锻炼编程思维:状态管理、事件驱动、面向对象设计
💻 2. 核心架构:一个“活”的虚拟生命体
我们采用最经典的状态机模式。宠物有6种基础状态:
IDLE, HUNGRY, SLEEPY, HAPPY, SAD, ANGRY
每个状态都会影响宠物的行为。比如它饥饿值低于20就会进入HUNGRY状态,然后每隔5秒发一次“我饿了~~”的消息。如果用键盘输入“feed”,它就切换到HAPPY状态,同时饥饿值回升。
# 宠物状态机核心代码(2026版)
class Pet:
def __init__(self, name="小绿"):
self.name = name
self.hunger = 80 # 0-100
self.energy = 80 # 0-100
self.mood = "IDLE"
self.age = 0
def update(self):
# 每秒自动衰减
self.hunger -= 1
self.energy -= 0.5
self.age += 0.01
# 状态转换逻辑
if self.hunger < 20:
self.mood = "HUNGRY"
elif self.energy < 15:
self.mood = "SLEEPY"
else:
self.mood = "HAPPY"
def feed(self, food="apple"):
if food == "apple":
self.hunger += 30
elif food == "cake":
self.hunger += 50
self.mood = "HAPPY"
print(f"{self.name}:哇!{food}好好吃!(◕‿◕✿)")
👆 这是一个极简版本,但已经具备“生命感”
🎮 3. 进阶玩法:让它学会“撒娇”和“记忆”
基础版太无聊?我们可以加入情绪记忆模块。让宠物记住你什么时候喂过它,你多久没陪它玩。如果超过12小时没互动,它会自动进入SAD状态,并发送:“主人,你是不是不要我了...😢”
2026年流行一种叫“PetBrain”的轻量级AI框架,只有300KB。我们可以用它来给宠物加入最简单的对话能力:
# 使用简单的关键词匹配实现“撒娇”
def chat(self, user_input):
if "饿" in user_input or "吃" in user_input:
self.mood = "HUNGRY"
return "人家肚子咕咕叫啦~想次小蛋糕🍰"
elif "睡" in user_input or "困" in user_input:
self.mood = "SLEEPY"
return "哈欠~~那,那我要睡了喔,晚安主人🌙"
elif "爱你" in user_input:
self.mood = "HAPPY"
return "我也最最最喜欢主人啦!❤️(抱紧紧)"
else:
return f"{self.name}歪着头看着你:不懂你说什么啦~(๑¯◡¯๑)"
你甚至可以用time模块做一个“生日提醒”:当系统日期等于你设定的日期时,宠物会说:“主人,生日快乐!这是我为你准备的虚拟蛋糕🎂”——这个细节真的会让程序员眼眶一热。
🖼️ 4. 让它不只活在终端:可视化版本
如果你想要更酷的体验,可以用tkinter或pygame做一个简单窗口。2026年,Python社区流行一个叫PetGUI的库,专门用来做虚拟宠物界面,10行代码就能显示一个像素风的小动物。
# 可视化版(极简)
from petgui import PetWindow
win = PetWindow("我的小绿")
win.add_pet("🐱", size=64)
win.show_status(hunger=75, energy=60, mood="HAPPY")
win.run()
效果就是一只像素猫在窗口里走来走去,头顶显示状态条。你按键盘的F键喂食,按S键让它睡觉。这种即时的视觉反馈,比看控制台输出爽多了。
🤖 5. 未来扩展:给它一个“灵魂”
2026年最前沿的玩法是接入本地大模型。比如用Ollama跑一个7B参数的模型,让宠物真正理解你说的话。不过注意,这样会占用约4GB内存。
💡 小贴士:如果你不想让宠物太“聪明”,可以用random.choice()做一个随机响应池,每次回复随机一句话,用户也会觉得宠物有性格。比如:
["哼!", "人家才不理你~", "今天心情好,原谅你啦"]
🎯 总结:你的第一个“有生命”的程序
写一个电子宠物,本质上是在模拟生命。while True + 状态机 + 一点点爱 = 无限可能。 我从一个100行的脚本开始,现在我的虚拟宠物已经“活”了300多天,每天还会提醒我喝水。
如果你写出来了,欢迎在评论区晒出你的宠物名字和它的第一句台词!👇
📥 关注「编程哥」,回复“电子宠物”获取完整代码
✨ 愿你的代码,也有温度。