当前位置:首页>python>我用Python写了个地牢探险游戏,300行代码实现完整RPG系统!

我用Python写了个地牢探险游戏,300行代码实现完整RPG系统!

  • 2026-03-16 07:06:12
我用Python写了个地牢探险游戏,300行代码实现完整RPG系统!
大家好!没错依旧是我,《临近中年但是一点不秃且185长相帅过吴彦祖身材胜过彭于晏》的程序员,今天给大家分享一个我最近用Python写的文字冒险游戏——《地牢探险家》!这是一个完整的Roguelike游戏,包含战斗系统、角色成长、装备收集、随机事件等核心玩法。文末有完整代码,可以直接体验!

🎯 游戏概览

《地牢探险家》是一款用纯Python编写的文字冒险游戏。玩家将扮演一名冒险者,探索10层随机生成的地牢,击败怪物,收集装备,学习技能,最终挑战地牢守护者!
游戏特色:
  • ✅ 完整RPG系统:等级、属性、技能、装备

  • ✅ 随机生成:每次冒险都不同

  • ✅ 策略战斗:回合制战斗,技能组合

  • ✅ 收集要素:多种装备和道具

  • ✅ 进度保存:JSON存档功能

  • ✅ 代码简洁:约300行,结构清晰

📱 游戏截图

🎮 游戏玩法详解

1. 核心目标

探索10层地牢,击败最终BOSS地牢守护者!每层需要击败3个敌人才能前往下一层。

2. 属性系统

  • ❤️ HP:生命值,归零则游戏结束

  • 💙 MP:魔法值,释放技能需要

  • ⚔️ 攻击:影响伤害输出

  • 🛡️ 防御:减少受到的伤害

  • 💰 金币:购买物品和装备

  • 📈 经验:积累经验升级

3. 成长系统

升级奖励

  • 每级需要:当前等级 × 20 经验

  • HP上限 +10,MP上限 +5

  • 攻击力 +2,防御力 +1

  • 3级学会治疗术,5级学会火球术

4. 装备系统

装备类型

效果

获取方式

木剑 → 铁剑 → 钢剑

攻击力+3 → +6 → +10

击败敌人、开宝箱、商人购买

布衣 → 皮甲 → 锁子甲

防御力+2 → +4 → +7

击败敌人、开宝箱、商人购买

装备自动比较:获得更好装备时自动替换!

5. 技能系统

技能

解锁

MP消耗

效果

重击

初始

5

造成150%伤害

治疗术

3级

8

恢复20HP

火球术

5级

10

造成200%魔法伤害

🎯 战斗系统详解

遭遇敌人时:

战斗指令:

  1. ⚔️ 攻击 - 普通攻击

  2. 🎯 技能 - 使用特殊技能

  3. 💊 物品 - 使用背包道具

  4. 🏃 逃跑 - 50%几率逃离战斗

敌人类型:

敌人

HP

攻击

防御

经验

出现层数

史莱姆

10

3

1

5

1-3层

哥布林

15

5

2

8

1-6层

骷髅

20

7

3

12

4-9层

兽人

30

10

5

20

7-9层

地牢守护者

100

15

8

50

第10层

🎲 随机事件系统

每次探索都会随机触发以下事件:

1. 👾 遭遇敌人 (40%)

  • 与各种怪物战斗

  • 击败后获得经验、金币

  • 30%几率掉落物品

2. 🎁 发现宝藏 (20%)

  • 获得金币(10-30)

  • 获得药水(治疗/魔法)

  • 获得装备(自动比较)

3. 🏠 安全屋 (15%)

  • 恢复HP和MP

  • 有时会遇到商人

  • 安全的休息点

4. ⚠️ 陷阱 (15%)

  • 地刺陷阱:扣血5-10

  • 蛛网陷阱:暂时无法行动

  • 毒气陷阱:HP-8,MP-5

5. 🛒 商人 (10%)

  • 出售药水和装备

  • 价格合理

  • 装备直接使用

🎮 操作指南

主菜单操作:

1. 🚪 探索地牢2. 💾 保存游戏3. 📂 加载游戏4. 🆘 游戏帮助5. 🚪 退出游戏
  • 输入 1-5 选择对应功能

  • 按 回车 确认

战斗操作:

  • 1 - 攻击

  • 2 - 技能(需选择技能编号)

  • 3 - 物品(需选择物品编号)

  • 4 - 逃跑(50%成功率)

快捷键总结:

操作

按键

说明

探索

1

开始冒险

攻击

1

普通攻击

技能

2

使用技能

物品

3

使用道具

逃跑

4

尝试逃跑

保存

2(主菜单)

保存进度

加载

3(主菜单)

读取存档

🎯 游戏策略

新手必看攻略:

1. 前期发育(1-3层)

  • 多打史莱姆积累经验

  • 保留治疗药水应对强敌

  • 遇到商人优先买治疗药水

2. 中期成长(4-7层)

  • 学会治疗术后战斗更轻松

  • 收集铁剑和皮甲

  • 注意MP管理

3. 后期挑战(8-10层)

  • 学会火球术对付强敌

  • 装备钢剑和锁子甲

  • 保留大量药水应对BOSS

4. 经济管理

  • 优先购买治疗药水

  • 装备看属性不看价格

  • 商人出现时尽量购物

5. 战斗技巧

  • 普通敌人用普通攻击

  • 强敌使用技能连招

  • HP低于30%考虑逃跑

  • 合理使用治疗术

📢 互动时间

  1. 你通关时的等级是多少?

  2. 你觉得哪个BOSS最难打?

  3. 你希望游戏添加什么新功能?

  4. 你最高收集了多少金币?

欢迎在评论区留言讨论!点赞最高的3位读者,将获得Python编程课程一份!

以下是小游戏完整代码,复制粘贴本地运行即可开玩

import randomimport osimport jsonfrom datetime import datetimeclass DungeonAdventure:    def __init__(self):        self.player = {            "name""冒险者",            "level"1,            "hp"30,            "max_hp"30,            "mp"15,            "max_mp"15,            "attack"5,            "defense"2,            "exp"0,            "gold"0,            "floor"1,            "inventory": ["治疗药水""治疗药水"],            "equipment": {"武器""木剑""防具""布衣"},            "skills": ["重击"]        }        self.enemies = {            "slime": {"name""史莱姆""hp"10"attack"3"defense"1"exp"5"gold"2},            "goblin": {"name""哥布林""hp"15"attack"5"defense"2"exp"8"gold"5},            "skeleton": {"name""骷髅""hp"20"attack"7"defense"3"exp"12"gold"8},            "orc": {"name""兽人""hp"30"attack"10"defense"5"exp"20"gold"15},            "boss": {"name""地牢守护者""hp"100"attack"15"defense"8"exp"50"gold"50}        }        self.items = {            "治疗药水": {"type""消耗品""effect""恢复20HP""value"10},            "魔法药水": {"type""消耗品""effect""恢复10MP""value"15},            "木剑": {"type""武器""attack"3"value"20},            "铁剑": {"type""武器""attack"6"value"50},            "钢剑": {"type""武器""attack"10"value"100},            "布衣": {"type""防具""defense"2"value"15},            "皮甲": {"type""防具""defense"4"value"40},            "锁子甲": {"type""防具""defense"7"value"80},            "神秘宝箱": {"type""特殊""effect""随机物品""value"0}        }        self.skills = {            "重击": {"mp_cost"5"damage_mult"1.5"description""消耗5MP,造成150%伤害"},            "治疗术": {"mp_cost"8"heal"20"description""消耗8MP,恢复20HP"},            "火球术": {"mp_cost"10"damage_mult"2.0"description""消耗10MP,造成200%魔法伤害"}        }        self.game_running = True        self.current_enemy = None    def show_status(self):        """显示玩家状态"""        os.system('cls' if os.name == 'nt' else 'clear')        print(f"\n{'='*50}")        print(f"🎮 地牢探险家 - 第{self.player['floor']}层")        print(f"{'='*50}")        print(f"👤 {self.player['name']} LV.{self.player['level']} EXP:{self.player['exp']}/{self.player['level']*20}")        print(f"❤️  HP: {self.player['hp']}/{self.player['max_hp']}  💙 MP: {self.player['mp']}/{self.player['max_mp']}")        print(f"⚔️  攻击: {self.player['attack']}  🛡️ 防御: {self.player['defense']}  💰金币: {self.player['gold']}")        print(f"🎒 背包: {', '.join(self.player['inventory']) if self.player['inventory'else'空'}")        print(f"⚔️ 装备: 武器[{self.player['equipment']['武器']}] 防具[{self.player['equipment']['防具']}]")        print(f"🎯 技能: {', '.join(self.player['skills'])}")        print(f"{'='*50}")    def explore(self):        """探索地牢"""        events = [            self.encounter_enemy,            self.find_treasure,            self.find_safe_room,            self.find_trap,            self.find_merchant        ]        print("\n🚪 你开始探索地牢...")        input("按回车继续...")        event = random.choice(events)        event()    def encounter_enemy(self):        """遭遇敌人"""        if self.player['floor'] >= 10:            enemy_type = "boss" if random.random() < 0.3 else random.choice(["orc""skeleton"])        elif self.player['floor'] >= 7:            enemy_type = random.choice(["orc""skeleton""goblin"])        elif self.player['floor'] >= 4:            enemy_type = random.choice(["goblin""skeleton"])        else:            enemy_type = random.choice(["slime""goblin"])        self.current_enemy = self.enemies[enemy_type].copy()        self.current_enemy["current_hp"] = self.current_enemy["hp"]        print(f"\n⚠️  遭遇了{self.current_enemy['name']}!")        self.battle()    def battle(self):        """战斗系统"""        while self.current_enemy["current_hp"] > 0 and self.player["hp"] > 0:            self.show_status()            print(f"\n👾 敌人: {self.current_enemy['name']} HP: {self.current_enemy['current_hp']}/{self.current_enemy['hp']}")            print(f"⚔️ 攻击: {self.current_enemy['attack']}  🛡️ 防御: {self.current_enemy['defense']}")            print("\n1. 攻击  2. 使用技能  3. 使用物品  4. 逃跑")            choice = input("选择行动: ").strip()            if choice == "1":                self.attack_enemy()                if self.current_enemy["current_hp"] > 0:                    self.enemy_attack()            elif choice == "2":                self.use_skill()                if self.current_enemy["current_hp"] > 0:                    self.enemy_attack()            elif choice == "3":                self.use_item()                self.enemy_attack()            elif choice == "4":                if random.random() < 0.5:                    print("🏃 成功逃脱!")                    self.current_enemy = None                    return                else:                    print("❌ 逃跑失败!")                    self.enemy_attack()            else:                print("❌ 无效选择")                continue            input("\n按回车继续...")        if self.player["hp"] <= 0:            print("💀 你被击败了!游戏结束。")            self.game_running = False        elif self.current_enemy["current_hp"] <= 0:            self.defeat_enemy()    def attack_enemy(self):        """攻击敌人"""        damage = max(1self.player["attack"] - self.current_enemy["defense"])        self.current_enemy["current_hp"] -= damage        print(f"⚔️ 你对{self.current_enemy['name']}造成了{damage}点伤害!")    def enemy_attack(self):        """敌人攻击"""        damage = max(1self.current_enemy["attack"] - self.player["defense"])        self.player["hp"] -= damage        print(f"💥 {self.current_enemy['name']}对你造成了{damage}点伤害!")    def use_skill(self):        """使用技能"""        print("\n可用技能:")        for i, skill in enumerate(self.player["skills"], 1):            print(f"{i}{skill} - {self.skills[skill]['description']}")        try:            choice = int(input("选择技能: ")) - 1            if 0 <= choice < len(self.player["skills"]):                skill = self.player["skills"][choice]                skill_info = self.skills[skill]                if self.player["mp"] < skill_info["mp_cost"]:                    print("❌ MP不足!")                    return                self.player["mp"] -= skill_info["mp_cost"]                if skill == "重击":                    damage = max(1int(self.player["attack"] * skill_info["damage_mult"]) - self.current_enemy["defense"])                    self.current_enemy["current_hp"] -= damage                    print(f"💥 使用{skill}!造成{damage}点伤害!")                elif skill == "治疗术":                    heal = min(skill_info["heal"], self.player["max_hp"] - self.player["hp"])                    self.player["hp"] += heal                    print(f"💚 使用{skill}!恢复{heal}点HP!")                elif skill == "火球术":                    damage = max(1int(self.player["attack"] * skill_info["damage_mult"]))                    self.current_enemy["current_hp"] -= damage                    print(f"🔥 使用{skill}!造成{damage}点魔法伤害!")        except:            print("❌ 无效选择")    def use_item(self):        """使用物品"""        if not self.player["inventory"]:            print("❌ 背包是空的!")            return        print("\n可用物品:")        for i, item in enumerate(self.player["inventory"], 1):            print(f"{i}{item}")        print("0. 返回")        try:            choice = int(input("选择物品: ")) - 1            if choice == -1:                return            if 0 <= choice < len(self.player["inventory"]):                item = self.player["inventory"].pop(choice)                self.apply_item_effect(item)        except:            print("❌ 无效选择")    def apply_item_effect(self, item):        """应用物品效果"""        if item == "治疗药水":            heal = min(20self.player["max_hp"] - self.player["hp"])            self.player["hp"] += heal            print(f"💊 使用治疗药水,恢复{heal}点HP!")        elif item == "魔法药水":            restore = min(10self.player["max_mp"] - self.player["mp"])            self.player["mp"] += restore            print(f"🔮 使用魔法药水,恢复{restore}点MP!")    def defeat_enemy(self):        """击败敌人"""        exp = self.current_enemy["exp"]        gold = self.current_enemy["gold"]        self.player["exp"] += exp        self.player["gold"] += gold        print(f"🎉 击败了{self.current_enemy['name']}!")        print(f"📈 获得{exp}经验值!")        print(f"💰 获得{gold}金币!")        # 随机掉落        if random.random() < 0.3:            drop_item = random.choice(["治疗药水""魔法药水"])            self.player["inventory"].append(drop_item)            print(f"🎁 获得了{drop_item}!")        self.check_level_up()        self.current_enemy = None        # 每击败3个敌人可下一层        if self.player.get("enemies_defeated"0) % 3 == 2:            self.go_deeper()        else:            self.player["enemies_defeated"] = self.player.get("enemies_defeated"0) + 1    def check_level_up(self):        """检查升级"""        exp_needed = self.player["level"] * 20        if self.player["exp"] >= exp_needed:            self.player["level"] += 1            self.player["exp"] = 0            self.player["max_hp"] += 10            self.player["hp"] = self.player["max_hp"]            self.player["max_mp"] += 5            self.player["mp"] = self.player["max_mp"]            self.player["attack"] += 2            self.player["defense"] += 1            # 学习新技能            if self.player["level"] == 3 and "治疗术" not in self.player["skills"]:                self.player["skills"].append("治疗术")                print("🎯 学会了新技能:治疗术!")            elif self.player["level"] == 5 and "火球术" not in self.player["skills"]:                self.player["skills"].append("火球术")                print("🎯 学会了新技能:火球术!")            print(f"🌟 升级到{self.player['level']}级!")            print(f"❤️  HP上限增加!  💙 MP上限增加!")            print(f"⚔️  攻击力提升!  🛡️ 防御力提升!")    def find_treasure(self):        """找到宝藏"""        treasures = [            ("💰 金币"lambdaself.player.update(gold=self.player["gold"] + random.randint(1030))),            ("💊 治疗药水"lambdaself.player["inventory"].append("治疗药水")),            ("🔮 魔法药水"lambdaself.player["inventory"].append("魔法药水")),            ("⚔️ 装备"self.find_equipment)        ]        treasure_type, treasure_func = random.choice(treasures)        print(f"\n🎁 发现了一个宝箱!")        if treasure_type == "💰 金币":            amount = random.randint(1030)            self.player["gold"] += amount            print(f"💰 获得了{amount}金币!")        elif treasure_type == "💊 治疗药水":            self.player["inventory"].append("治疗药水")            print(f"💊 获得了治疗药水!")        elif treasure_type == "🔮 魔法药水":            self.player["inventory"].append("魔法药水")            print(f"🔮 获得了魔法药水!")        else:            treasure_func()    def find_equipment(self):        """找到装备"""        if self.player["floor"] >= 7:            equipment = random.choice(["钢剑""锁子甲"])        elif self.player["floor"] >= 4:            equipment = random.choice(["铁剑""皮甲"])        else:            equipment = random.choice(["木剑""布衣"])        item_info = self.items[equipment]        if item_info["type"] == "武器":            current_weapon = self.player["equipment"]["武器"]            current_attack = self.items.get(current_weapon, {"attack"0})["attack"]            new_attack = item_info["attack"]            if new_attack > current_attack:                self.player["equipment"]["武器"] = equipment                self.player["attack"] = 5 + new_attack                print(f"⚔️ 获得了{equipment}!攻击力+{new_attack}")                print(f"⚔️ 替换了{current_weapon}")            else:                self.player["inventory"].append(equipment)                print(f"⚔️ 获得了{equipment},放入背包")        elif item_info["type"] == "防具":            current_armor = self.player["equipment"]["防具"]            current_defense = self.items.get(current_armor, {"defense"0})["defense"]            new_defense = item_info["defense"]            if new_defense > current_defense:                self.player["equipment"]["防具"] = equipment                self.player["defense"] = 2 + new_defense                print(f"🛡️ 获得了{equipment}!防御力+{new_defense}")                print(f"🛡️ 替换了{current_armor}")            else:                self.player["inventory"].append(equipment)                print(f"🛡️ 获得了{equipment},放入背包")    def find_safe_room(self):        """找到安全屋"""        print("\n🏠 发现了一个安全屋!")        heal = min(15self.player["max_hp"] - self.player["hp"])        self.player["hp"] += heal        restore = min(8self.player["max_mp"] - self.player["mp"])        self.player["mp"] += restore        if heal > 0:            print(f"💚 休息恢复了{heal}点HP")        if restore > 0:            print(f"💙 恢复了{restore}点MP")        # 安全屋有商人        if random.random() < 0.5:            self.find_merchant()    def find_trap(self):        """找到陷阱"""        traps = [            ("💥 地刺陷阱"lambdaself.player.update(hp=max(1self.player["hp"] - random.randint(510)))),            ("🕸️ 蛛网陷阱"lambdaprint("🕸️ 被蛛网缠住,暂时无法行动")),            ("💨 毒气陷阱"lambdaself.player.update(hp=max(1self.player["hp"] - 8), mp=max(0self.player["mp"] - 5)))        ]        trap_name, trap_func = random.choice(traps)        print(f"\n⚠️  触发了{trap_name}!")        trap_func()        if trap_name == "💥 地刺陷阱":            damage = random.randint(510)            self.player["hp"] = max(1self.player["hp"] - damage)            print(f"💥 受到{damage}点伤害!")        elif trap_name == "💨 毒气陷阱":            self.player["hp"] = max(1self.player["hp"] - 8)            self.player["mp"] = max(0self.player["mp"] - 5)            print("💨 中毒了!HP-8, MP-5")    def find_merchant(self):        """遇到商人"""        print("\n🛒 遇到了旅行商人!")        print("1. 购买治疗药水 (20金币)")        print("2. 购买魔法药水 (30金币)")        print("3. 购买铁剑 (100金币)")        print("4. 购买皮甲 (80金币)")        print("5. 离开")        shop_items = {            "1": ("治疗药水"20),            "2": ("魔法药水"30),            "3": ("铁剑"100),            "4": ("皮甲"80)        }        choice = input("选择: ").strip()        if choice in shop_items:            item_name, price = shop_items[choice]            if self.player["gold"] >= price:                self.player["gold"] -= price                if item_name in ["铁剑""皮甲"]:                    # 装备直接使用                    item_info = self.items[item_name]                    if item_info["type"] == "武器":                        self.player["equipment"]["武器"] = item_name                        self.player["attack"] = 5 + item_info["attack"]                        print(f"⚔️ 购买了{item_name}并装备!攻击力+{item_info['attack']}")                    else:                        self.player["equipment"]["防具"] = item_name                        self.player["defense"] = 2 + item_info["defense"]                        print(f"🛡️ 购买了{item_name}并装备!防御力+{item_info['defense']}")                else:                    self.player["inventory"].append(item_name)                    print(f"🛍️ 购买了{item_name}!")            else:                print("❌ 金币不足!")    def go_deeper(self):        """前往下一层"""        self.player["floor"] += 1        print(f"\n⬇️  发现了通往第{self.player['floor']}层的楼梯!")        # 每5层恢复状态        if self.player["floor"] % 5 == 0:            self.player["hp"] = self.player["max_hp"]            self.player["mp"] = self.player["max_mp"]            print("💚 到达新区域,状态完全恢复!")        # 10层遇到BOSS        if self.player["floor"] == 10:            print("\n🐉 警告:前方感受到强大的气息...")            print("🐉 地牢守护者在等待着你!")            input("按回车继续...")    def save_game(self):        """保存游戏"""        save_data = {            "player"self.player,            "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")        }        with open("dungeon_save.json""w", encoding="utf-8"as f:            json.dump(save_data, f, ensure_ascii=False, indent=2)        print("💾 游戏已保存!")    def load_game(self):        """加载游戏"""        try:            with open("dungeon_save.json""r", encoding="utf-8"as f:                save_data = json.load(f)            self.player = save_data["player"]            print(f"📂 游戏已加载!最后保存: {save_data.get('timestamp''未知')}")            return True        except:            print("📭 没有找到存档,开始新游戏")            return False    def show_help(self):        """显示帮助"""        print("\n" + "="*50)        print("🎮 游戏帮助")        print("="*50)        print("目标:探索10层地牢,击败最终BOSS")        print("\n🎯 游戏系统:")        print("  • 每层需要击败3个敌人才能前往下一层")        print("  • 每5层完全恢复状态")        print("  • 第10层是BOSS战")        print("\n⚔️ 战斗系统:")        print("  • 攻击:普通攻击")        print("  • 技能:消耗MP的特殊攻击")        print("  • 物品:使用背包中的道具")        print("  • 逃跑:50%几率成功")        print("\n💡 提示:")        print("  • 合理使用技能和道具")        print("  • 及时更换更好的装备")        print("  • 经常保存游戏进度")        print("="*50)    def main_menu(self):        """主菜单"""        while self.game_running:            self.show_status()            print("\n1. 🚪 探索地牢")            print("2. 💾 保存游戏")            print("3. 📂 加载游戏")            print("4. 🆘 游戏帮助")            print("5. 🚪 退出游戏")            choice = input("\n选择: ").strip()            if choice == "1":                self.explore()            elif choice == "2":                self.save_game()                input("按回车继续...")            elif choice == "3":                self.load_game()                input("按回车继续...")            elif choice == "4":                self.show_help()                input("按回车继续...")            elif choice == "5":                save = input("退出前是否保存?(y/n): ").lower()                if save == 'y':                    self.save_game()                print("\n🎮 感谢游玩!")                self.game_running = False            else:                print("❌ 无效选择")def main():    """主函数"""    os.system('cls' if os.name == 'nt' else 'clear')    print("\n" + "="*50)    print("        🎮 地牢探险家")    print("="*50)    print("一个Roguelike文字冒险游戏")    print("目标:探索10层地牢,击败最终BOSS")    print("="*50)    # 获取玩家姓名    name = input("\n请输入你的名字: ").strip()    # 创建游戏实例    game = DungeonAdventure()    if name:        game.player["name"] = name    # 尝试加载存档    load_choice = input("是否加载存档?(y/n): ").lower()    if load_choice == 'y':        game.load_game()    input("\n按回车开始游戏...")    # 启动游戏    game.main_menu()if __name__ == "__main__":    main()

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 18:22:37 HTTP/2.0 GET : https://f.mffb.com.cn/a/480170.html
  2. 运行时间 : 0.174890s [ 吞吐率:5.72req/s ] 内存消耗:4,627.68kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e2c56ec11803cf789815a925e56c9b6c
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000881s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001003s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000450s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000406s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000764s ]
  6. SELECT * FROM `set` [ RunTime:0.000306s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000877s ]
  8. SELECT * FROM `article` WHERE `id` = 480170 LIMIT 1 [ RunTime:0.000870s ]
  9. UPDATE `article` SET `lasttime` = 1774606957 WHERE `id` = 480170 [ RunTime:0.016788s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000425s ]
  11. SELECT * FROM `article` WHERE `id` < 480170 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000689s ]
  12. SELECT * FROM `article` WHERE `id` > 480170 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000557s ]
  13. SELECT * FROM `article` WHERE `id` < 480170 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001211s ]
  14. SELECT * FROM `article` WHERE `id` < 480170 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001299s ]
  15. SELECT * FROM `article` WHERE `id` < 480170 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001482s ]
0.177196s