当前位置:首页>python>Python经典游戏:简化版的QQ农场游戏

Python经典游戏:简化版的QQ农场游戏

  • 2026-08-25 13:45:28
Python经典游戏:简化版的QQ农场游戏

Python,速成心法

敲代码,查资料,问度娘

练习,探索,总结,优化

★★★★★博文创作不易,我的博文不需要打赏,也不需要知识付费,可以白嫖学习编程小技巧。使用代码的过程中,如有疑问的地方,欢迎大家指正留言交流。喜欢的老铁可以多多点赞+收藏分享+置顶,小红牛在此表示感谢。★★★★★

---------★Pygame教程★---------

Python经典游戏:手动+自动版贪吃蛇Snake

Python经典游戏:太空飞机大战Space Plane Battle

Python经典游戏:扫雷

Python经典游戏:乒乓球对战(单人+双人模式)

Pygame经典游戏:消消乐Icehappy(安排!!)

Pygame经典游戏:坦克大战TankWar+五子棋人机对弈+俄罗斯方块(安排!!)

Python经典游戏:植物大战僵尸

Python经典游戏:像素鸟flappybird

Pygame经典游戏:微信飞机大战Wechatflying(初级版)

Python经典游戏:超级玛丽

Pygame经典游戏:贪吃蛇(普通版)

Pygame游戏:3*3/4*4/5*5智力宫格拼图

Python游戏:打地鼠(坤坤版)

Python游戏:吃金币Eating-coins

Python经典游戏:走迷宫,好烦呀,我到现在还没有走出去!!

Python游戏:滑雪+弹小球

Python游戏:外星人入侵

Pygame教程01:初识pygame游戏模块

Pygame教程02:图片的加载+缩放+旋转+显示操作

Pygame教程03:文本显示+字体加载+transform方法

Pygame教程04:draw方法绘制矩形、多边形、圆、椭圆、弧线、直线和线条等

Pygame教程05:帧动画原理+边界值检测,让小球来回上下运动

Pygame教程06:Event事件的类型+处理方法+监听鼠标事件

Pygame教程07:键盘常量+键盘事件的2种捕捉方式

Pygame教程08:使用键盘方向键,控制小球,上下左右移动。

Pygame教程09:font.render文本内容,如何自动换行显示

Pygame教程10:在背景图片上,添加一个雪花特效

下面是一个用 Python 实现的简化版“QQ农场”种菜游戏。采用回合制(每天结束时作物生长一次),包含种植、浇水、收获、购买种子等基本功能,运行在命令行界面。

1.游戏玩法说明:初始拥有6块土地和100 金币。通过 购买种子 消耗金币获得种子库存。在空地上种植作物,会消耗对应种子。

每天可以对未成熟的作物 浇水,使其立即生长一天(加快成熟)。作物成熟后可以 收获 获得金币。结束一天 会使所有作物自然生长一天。循环操作,积累金币,解锁更多作物(可自行扩展代码增加作物种类)。代码结构
Crop 类:代表一株作物,记录名称、生长阶段、总阶段、售价,提供生长、判断成熟等方法。
Land 类:代表一块土地,可种植、收获、浇水,查询状态。
Game 类:整合游戏逻辑,管理金币、种子库存、土地列表,处理用户输入和主循环。
你可以直接复制代码保存为 .py 文件运行,体验命令行版的种菜乐趣。如果想增加更多作物,只需在 Game 类的 crop_types 和 seed_inventory 中添加相应条目即可。

↓ 源码如下 ↓

# -*- coding: utf-8 -*-# @Author : 小红牛# 微信公众号:wdPythonimport sysclass Crop:    """作物类"""    def __init__(self, name, total_stages, sell_price):        self.name = name          # 作物名称        self.stage = 0             # 当前生长阶段(0为刚种下)        self.total_stages = total_stages  # 成熟所需阶段        self.sell_price = sell_price      # 收获售价    def grow(self):        """生长一天,阶段增加1,但不超过总阶段"""        if self.stage < self.total_stages:            self.stage += 1    def is_mature(self):        """是否成熟"""        return self.stage >= self.total_stages    def status(self):        """返回当前状态描述"""        if self.stage == 0:            return "种子"        elif self.stage < self.total_stages:            return f"生长中 ({self.stage}/{self.total_stages})"        else:            return "成熟"class Land:    """一块土地"""    def __init__(self, index):        self.index = index          # 土地编号        self.crop = None             # 当前种植的作物,None表示空地    def plant(self, crop):        """种植作物"""        self.crop = crop    def harvest(self):        """收获作物,返回售价;如果没有作物或未成熟则返回0"""        if self.crop and self.crop.is_mature():            price = self.crop.sell_price            self.crop = None            return price        return 0    def water(self):        """浇水:让作物额外生长一天(立即生效)"""        if self.crop and not self.crop.is_mature():            self.crop.grow()            return True        return False    def is_empty(self):        return self.crop is None    def info(self):        if self.is_empty():            return f"地块{self.index}:空地"        else:            return f"地块{self.index}:{self.crop.name},{self.crop.status()}"class Game:    """游戏主类"""    def __init__(self, land_count=6):        self.lands = [Land(i+1) for i in range(land_count)]        self.gold = 100               # 初始金币        # 种子库存:每种作物拥有的种子数量        self.seed_inventory = {            "萝卜": 0,            "玉米": 0,        }        # 作物类型数据:种子价格、成熟所需阶段、收获售价        self.crop_types = {            "萝卜": {"seed_price": 10, "total_stages": 3, "sell_price": 30},            "玉米": {"seed_price": 20, "total_stages": 5, "sell_price": 60},        }    def show_status(self):        """显示当前游戏状态"""        print("\n" + "="*40)        print(f"金币: {self.gold}")        print("种子库存:")        for name, count in self.seed_inventory.items():            print(f"  {name}: {count} 个")        print("土地状况:")        for land in self.lands:            print("  " + land.info())        print("="*40)    def buy_seeds(self):        """购买种子"""        print("\n--- 购买种子 ---")        print("可购买的作物:")        for i, (name, info) in enumerate(self.crop_types.items(), 1):            print(f"{i}. {name} (价格: {info['seed_price']}金币/个)")        try:            choice = int(input("请选择作物编号(0返回): "))            if choice == 0:                return            name = list(self.crop_types.keys())[choice-1]            info = self.crop_types[name]        except (ValueError, IndexError):            print("输入无效!")            return        try:            num = int(input(f"购买几个 {name} 种子? "))            if num <= 0:                return            cost = info["seed_price"] * num            if self.gold < cost:                print(f"金币不足!需要{cost}金币,当前只有{self.gold}金币。")                return            self.gold -= cost            self.seed_inventory[name] += num            print(f"购买成功!花费{cost}金币,获得{num}个{name}种子。")        except ValueError:            print("输入无效!")    def plant_crop(self):        """种植作物"""        print("\n--- 种植 ---")        # 显示可种植的空地        empty_lands = [land for land in self.lands if land.is_empty()]        if not empty_lands:            print("没有空地可种植!")            return        print("空地块:", ", ".join(str(land.index) for land in empty_lands))        # 显示可用的种子        available_seeds = {name: count for name, count in self.seed_inventory.items() if count > 0}        if not available_seeds:            print("没有种子库存,请先购买种子!")            return        print("可用种子:")        for i, name in enumerate(available_seeds.keys(), 1):            print(f"{i}. {name} (库存: {self.seed_inventory[name]})")        try:            seed_choice = int(input("请选择要种植的作物编号: "))            name = list(available_seeds.keys())[seed_choice-1]        except (ValueError, IndexError):            print("输入无效!")            return        try:            land_idx = int(input("请选择要种植的地块编号: "))            land = next((l for l in self.lands if l.index == land_idx), None)            if land is None or not land.is_empty():                print("该地块不存在或不是空地!")                return        except ValueError:            print("输入无效!")            return        # 扣除种子,种植        self.seed_inventory[name] -= 1        info = self.crop_types[name]        new_crop = Crop(name, info["total_stages"], info["sell_price"])        land.plant(new_crop)        print(f"在地块{land_idx}种下了 {name}。")    def water_crop(self):        """给作物浇水"""        print("\n--- 浇水 ---")        # 找出有作物且未成熟的地块        waterable = [land for land in self.lands if land.crop and not land.crop.is_mature()]        if not waterable:            print("没有需要浇水的作物。")            return        print("可浇水的地块:", ", ".join(str(land.index) for land in waterable))        try:            land_idx = int(input("请选择要浇水的地块编号: "))            land = next((l for l in self.lands if l.index == land_idx), None)            if land not in waterable:                print("该地块没有需要浇水的作物!")                return            if land.water():                print(f"地块{land_idx}浇水成功,作物生长一天!")            else:                print("浇水无效(作物已成熟)。")        except ValueError:            print("输入无效!")    def harvest_crop(self):        """收获作物"""        print("\n--- 收获 ---")        # 找出已成熟的地块        mature = [land for land in self.lands if land.crop and land.crop.is_mature()]        if not mature:            print("没有可收获的作物。")            return        print("可收获的地块:", ", ".join(str(land.index) for land in mature))        try:            land_idx = int(input("请选择要收获的地块编号(输入0收获全部): "))            if land_idx == 0:                total_income = 0                for land in mature:                    income = land.harvest()                    total_income += income                    print(f"地块{land.index} 收获成功,获得 {income} 金币。")                self.gold += total_income                print(f"本次共收获 {total_income} 金币。")                return            land = next((l for l in self.lands if l.index == land_idx), None)            if land not in mature:                print("该地块没有成熟作物!")                return            income = land.harvest()            self.gold += income            print(f"地块{land_idx} 收获成功,获得 {income} 金币。")        except ValueError:            print("输入无效!")    def next_day(self):        """结束一天:所有作物生长一天"""        print("\n--- 新的一天 ---")        for land in self.lands:            if land.crop:                land.crop.grow()        print("所有作物生长了一天。")    def run(self):        """游戏主循环"""        print("欢迎来到QQ农场简易版!")        while True:            self.show_status()            print("\n操作菜单:")            print("1. 种植")            print("2. 浇水")            print("3. 收获")            print("4. 购买种子")            print("5. 结束一天")            print("6. 退出游戏")            choice = input("请选择操作(1-6): ").strip()            if choice == "1":                self.plant_crop()            elif choice == "2":                self.water_crop()            elif choice == "3":                self.harvest_crop()            elif choice == "4":                self.buy_seeds()            elif choice == "5":                self.next_day()            elif choice == "6":                print("游戏结束,欢迎下次再来!")                sys.exit(0)            else:                print("无效输入,请重新选择。")if __name__ == "__main__":    game = Game()    game.run()

完毕!!感谢您的收看

--------★★历史博文集合★★--------

Python入门篇  进阶篇  视频教程  Py安装

py项目Python模块 Python爬虫  Json

Xpath正则表达式SeleniumEtreeCss

Gui程序开发TkinterPyqt5 列表元组字典

数据可视化 matplotlib  词云图Pyecharts

海龟画图PandasBug处理电脑小知识

自动化脚本编程工具NumPy CSVWeb

Pygame  图像处理  机器学习数据库

最新文章

随机文章