当前位置:首页>python>python-TANK大战

python-TANK大战

  • 2026-04-16 15:50:23
python-TANK大战
游戏界面如下:
参考代码:
import tkinter as tkimport randomfrom tkinter import messageboxclass TankGame:    def __init__(self, root):        self.root = root        self.root.title("坦克大战")        self.root.resizable(FalseFalse)        # 游戏配置        self.cell_size = 30  # 每个格子的大小(像素)        self.map_width = 20  # 地图宽度(格子数)        self.map_height = 15  # 地图高度(格子数)        # 计算窗口大小        self.game_width = self.map_width * self.cell_size        self.game_height = self.map_height * self.cell_size        self.info_width = 200        # 设置窗口大小        self.root.geometry(f"{self.game_width + self.info_width + 40}x{self.game_height + 40}")        # 游戏状态        self.player_tank = None        self.enemy_tanks = []        self.bullets = []        self.walls = []        self.score = 0        self.enemy_count = 5  # 敌方坦克数量        self.game_over = False        self.paused = False        self.game_loop_id = None        # 移动延迟(防止移动太快)        self.move_delay = 0        self.enemy_move_delay = 0        # 颜色配置        self.colors = {            'bg''#2c3e50',            'player''#2ecc71',            'enemy''#e74c3c',            'wall''#95a5a6',            'bullet''#f1c40f',            'grid''#34495e'        }        # 创建界面        self.setup_ui()        # 绑定键盘事件        self.bind_keys()        # 开始游戏        self.start_game()        # 游戏循环        self.game_loop()    def setup_ui(self):        """创建用户界面"""        # 主框架        main_frame = tk.Frame(self.root, bg=self.colors['bg'])        main_frame.pack(expand=True, fill=tk.BOTH)        # 游戏画布        self.canvas = tk.Canvas(            main_frame,            width=self.game_width,            height=self.game_height,            bg=self.colors['bg'],            highlightthickness=2,            highlightbackground='#555'        )        self.canvas.pack(side=tk.LEFT, padx=10, pady=10)        # 信息面板        info_frame = tk.Frame(main_frame, width=self.info_width, bg='#34495e')        info_frame.pack(side=tk.RIGHT, padx=10, pady=10, fill=tk.BOTH)        info_frame.pack_propagate(False)        # 得分显示        self.score_label = tk.Label(            info_frame,            text=f"得分: {self.score}",            font=('Arial'18'bold'),            bg='#34495e',            fg='white'        )        self.score_label.pack(pady=20)        # 敌方剩余数量        self.enemy_label = tk.Label(            info_frame,            text=f"敌方剩余: {self.enemy_count}",            font=('Arial'14'bold'),            bg='#34495e',            fg='white'        )        self.enemy_label.pack(pady=10)        # 操作说明        controls_frame = tk.Frame(info_frame, bg='#34495e')        controls_frame.pack(pady=20)        controls = [            "操作说明:",            "",            "WASD 或 方向键: 移动",            "J 或 空格: 射击",            "",            "P: 暂停",            "R: 重新开始"        ]        for text in controls:            label = tk.Label(                controls_frame,                text=text,                font=('Arial'10),                bg='#34495e',                fg='#95a5a6'            )            label.pack(pady=2)    def bind_keys(self):        """绑定键盘事件"""        # 移动控制        self.root.bind('<KeyPress-Left>'lambda e: self.move_player('left'))        self.root.bind('<KeyPress-Right>'lambda e: self.move_player('right'))        self.root.bind('<KeyPress-Up>'lambda e: self.move_player('up'))        self.root.bind('<KeyPress-Down>'lambda e: self.move_player('down'))        self.root.bind('<KeyPress-a>'lambda e: self.move_player('left'))        self.root.bind('<KeyPress-d>'lambda e: self.move_player('right'))        self.root.bind('<KeyPress-w>'lambda e: self.move_player('up'))        self.root.bind('<KeyPress-s>'lambda e: self.move_player('down'))        # 射击控制        self.root.bind('<KeyPress-space>'lambda e: self.shoot())        self.root.bind('<KeyPress-j>'lambda e: self.shoot())        self.root.bind('<KeyPress-J>'lambda e: self.shoot())        # 游戏控制        self.root.bind('<KeyPress-p>'lambda e: self.toggle_pause())        self.root.bind('<KeyPress-P>'lambda e: self.toggle_pause())        self.root.bind('<KeyPress-r>'lambda e: self.restart())        self.root.bind('<KeyPress-R>'lambda e: self.restart())        # 确保窗口获得焦点        self.root.focus_set()    def start_game(self):        """开始游戏"""        self.create_map()        self.player_tank = Tank(self.map_width // 2self.map_height - 2'player'self.colors['player'])        self.enemy_tanks = []        self.bullets = []        self.score = 0        self.enemy_count = 5        self.game_over = False        self.paused = False        self.move_delay = 0        self.enemy_move_delay = 0        # 创建敌方坦克        for i in range(self.enemy_count):            while True:                x = random.randint(1self.map_width - 2)                y = random.randint(15)                # 确保不与玩家重叠且不与其他敌方坦克重叠                overlap = False                if (x, y) == (self.player_tank.x, self.player_tank.y):                    overlap = True                for enemy in self.enemy_tanks:                    if enemy.x == x and enemy.y == y:                        overlap = True                        break                if not overlap:                    enemy = Tank(x, y, 'enemy'self.colors['enemy'])                    self.enemy_tanks.append(enemy)                    break        self.update_info()        self.draw()    def create_map(self):        """创建地图(墙壁)"""        self.walls = []        # 创建边界墙壁        for x in range(self.map_width):            self.walls.append(Wall(x, 0))  # 上边界            self.walls.append(Wall(x, self.map_height - 1))  # 下边界        for y in range(self.map_height):            self.walls.append(Wall(0, y))  # 左边界            self.walls.append(Wall(self.map_width - 1, y))  # 右边界        # 创建一些障碍物        obstacles = [            (55), (65), (75),            (125), (135), (145),            (38), (48), (58), (68),            (138), (148), (158), (168),            (810), (910), (1010), (1110),            (412), (512), (1412), (1512)        ]        for x, y in obstacles:            if 0 < x < self.map_width - 1 and 0 < y < self.map_height - 1:                self.walls.append(Wall(x, y))    def move_player(self, direction):        """移动玩家坦克(带延迟,防止移动太快)"""        if self.game_over or self.paused:            return        # 移动延迟控制        if self.move_delay > 0:            return        new_x, new_y = self.player_tank.x, self.player_tank.y        if direction == 'left':            new_x -= 1        elif direction == 'right':            new_x += 1        elif direction == 'up':            new_y -= 1        elif direction == 'down':            new_y += 1        # 检查碰撞        if self.can_move(new_x, new_y, self.player_tank):            self.player_tank.x = new_x            self.player_tank.y = new_y            self.player_tank.direction = direction            self.move_delay = 3  # 设置移动延迟,数值越大移动越慢            self.draw()    def move_enemies(self):        """移动敌方坦克(带延迟)"""        if self.enemy_move_delay > 0:            self.enemy_move_delay -= 1            return        for enemy in self.enemy_tanks[:]:            # 随机移动            directions = ['up''down''left''right']            move_dir = random.choice(directions)            new_x, new_y = enemy.x, enemy.y            if move_dir == 'left':                new_x -= 1            elif move_dir == 'right':                new_x += 1            elif move_dir == 'up':                new_y -= 1            elif move_dir == 'down':                new_y += 1            # 检查碰撞            if self.can_move(new_x, new_y, enemy):                enemy.x = new_x                enemy.y = new_y                enemy.direction = move_dir        self.enemy_move_delay = 4  # 敌方移动延迟,比玩家稍慢    def can_move(self, x, y, tank):        """检查坦克是否可以移动到指定位置"""        # 检查边界        if x <= 0 or x >= self.map_width - 1 or y <= 0 or y >= self.map_height - 1:            return False        # 检查墙壁碰撞        for wall in self.walls:            if wall.x == x and wall.y == y:                return False        # 检查其他坦克碰撞        if tank.type == 'player':            for enemy in self.enemy_tanks:                if enemy.x == x and enemy.y == y:                    return False        else:            if self.player_tank.x == x and self.player_tank.y == y:                return False            for other in self.enemy_tanks:                if other != tank and other.x == x and other.y == y:                    return False        return True    def shoot(self):        """玩家射击(无冷却)"""        if self.game_over or self.paused:            return        bullet = Bullet(            self.player_tank.x,            self.player_tank.y,            self.player_tank.direction,            'player'        )        self.bullets.append(bullet)    def enemy_shoot(self, enemy):        """敌方射击(无冷却)"""        bullet = Bullet(            enemy.x,            enemy.y,            enemy.direction,            'enemy'        )        self.bullets.append(bullet)    def update_bullets(self):        """更新子弹位置和碰撞(子弹速度加快)"""        for bullet in self.bullets[:]:            # 子弹每次移动多格,加快速度            for _ in range(3):  # 每次更新移动3格,速度是坦克的3倍                # 移动子弹                if bullet.direction == 'up':                    bullet.y -= 1                elif bullet.direction == 'down':                    bullet.y += 1                elif bullet.direction == 'left':                    bullet.x -= 1                elif bullet.direction == 'right':                    bullet.x += 1                # 检查边界                if (bullet.x <= 0 or bullet.x >= self.map_width - 1 or                    bullet.y <= 0 or bullet.y >= self.map_height - 1):                    if bullet in self.bullets:                        self.bullets.remove(bullet)                    break                # 检查墙壁碰撞                hit_wall = False                for wall in self.walls[:]:                    if wall.x == bullet.x and wall.y == bullet.y:                        if wall in self.walls:                            self.walls.remove(wall)                        if bullet in self.bullets:                            self.bullets.remove(bullet)                        hit_wall = True                        break                if hit_wall:                    break                # 检查坦克碰撞                if bullet.type == 'player':                    for enemy in self.enemy_tanks[:]:                        if enemy.x == bullet.x and enemy.y == bullet.y:                            if enemy in self.enemy_tanks:                                self.enemy_tanks.remove(enemy)                            if bullet in self.bullets:                                self.bullets.remove(bullet)                            self.score += 10                            self.enemy_count = len(self.enemy_tanks)                            self.update_info()                            break                    if bullet not in self.bullets:                        break                else:                    if (self.player_tank.x == bullet.x and                         self.player_tank.y == bullet.y):                        self.game_over = True                        if bullet in self.bullets:                            self.bullets.remove(bullet)                        return                # 如果子弹已经移除,跳出循环                if bullet not in self.bullets:                    break    def update_info(self):        """更新信息显示"""        self.score_label.config(text=f"得分: {self.score}")        self.enemy_label.config(text=f"敌方剩余: {self.enemy_count}")        # 检查胜利条件        if self.enemy_count == 0 and not self.game_over:            self.game_over = True            self.show_victory()    def toggle_pause(self):        """暂停/继续游戏"""        if not self.game_over:            self.paused = not self.paused            self.draw()            if not self.paused:                self.game_loop()    def restart(self):        """重新开始游戏"""        # 停止当前的游戏循环        if self.game_loop_id:            self.root.after_cancel(self.game_loop_id)            self.game_loop_id = None        self.start_game()        self.draw()        self.game_loop()    def show_game_over(self):        """显示游戏结束"""        self.draw()        result = messagebox.askyesno("游戏结束"                                     f"游戏结束!\n最终得分: {self.score}\n是否重新开始?")        if result:            self.restart()        else:            self.root.quit()    def show_victory(self):        """显示胜利"""        self.draw()        result = messagebox.askyesno("胜利"                                     f"恭喜获胜!\n最终得分: {self.score}\n是否重新开始?")        if result:            self.restart()        else:            self.root.quit()    def draw(self):        """绘制游戏画面"""        self.canvas.delete("all")        # 绘制网格线        for x in range(self.map_width + 1):            self.canvas.create_line(                x * self.cell_size, 0,                x * self.cell_size, self.game_height,                fill=self.colors['grid'], width=1            )        for y in range(self.map_height + 1):            self.canvas.create_line(                0, y * self.cell_size,                self.game_width, y * self.cell_size,                fill=self.colors['grid'], width=1            )        # 绘制墙壁        for wall in self.walls:            self.canvas.create_rectangle(                wall.x * self.cell_size, wall.y * self.cell_size,                (wall.x + 1) * self.cell_size, (wall.y + 1) * self.cell_size,                fill=self.colors['wall'], outline=self.colors['bg'], width=2            )        # 绘制玩家坦克        if self.player_tank:            self.draw_tank(self.player_tank)        # 绘制敌方坦克        for enemy in self.enemy_tanks:            self.draw_tank(enemy)        # 绘制子弹        for bullet in self.bullets:            self.canvas.create_rectangle(                bullet.x * self.cell_size + self.cell_size//3,                bullet.y * self.cell_size + self.cell_size//3,                (bullet.x + 1) * self.cell_size - self.cell_size//3,                (bullet.y + 1) * self.cell_size - self.cell_size//3,                fill=self.colors['bullet'], outline=''            )        # 绘制游戏结束或暂停文字        if self.game_over:            text = "胜利!" if self.enemy_count == 0 else "游戏结束"            color = "green" if self.enemy_count == 0 else "red"            self.canvas.create_text(                self.game_width // 2,                self.game_height // 2,                text=text,                font=('Arial'30'bold'),                fill=color            )        elif self.paused:            self.canvas.create_text(                self.game_width // 2,                self.game_height // 2,                text="暂停",                font=('Arial'30'bold'),                fill='yellow'            )    def draw_tank(self, tank):        """绘制坦克"""        x = tank.x * self.cell_size        y = tank.y * self.cell_size        size = self.cell_size        # 绘制坦克身体        self.canvas.create_rectangle(            x + 2, y + 2,            x + size - 2, y + size - 2,            fill=tank.color, outline='white', width=2        )        # 绘制炮管        炮管长度 = size // 2        炮管宽度 = size // 6        if tank.direction == 'up':            self.canvas.create_line(                x + size//2, y + size//2,                x + size//2, y - 炮管长度//2,                fill='white', width=炮管宽度            )        elif tank.direction == 'down':            self.canvas.create_line(                x + size//2, y + size//2,                x + size//2, y + size + 炮管长度//2,                fill='white', width=炮管宽度            )        elif tank.direction == 'left':            self.canvas.create_line(                x + size//2, y + size//2,                x - 炮管长度//2, y + size//2,                fill='white', width=炮管宽度            )        elif tank.direction == 'right':            self.canvas.create_line(                x + size//2, y + size//2,                x + size + 炮管长度//2, y + size//2,                fill='white', width=炮管宽度            )    def game_loop(self):        """游戏主循环"""        if not self.game_over and not self.paused:            # 更新移动延迟            if self.move_delay > 0:                self.move_delay -= 1            self.move_enemies()            # 敌方随机射击(无冷却,但降低概率)            if self.enemy_tanks and not self.game_over:                for enemy in self.enemy_tanks:                    if random.random() < 0.02:  # 降低射击概率                        self.enemy_shoot(enemy)            self.update_bullets()            self.draw()            # 游戏循环间隔(控制整体速度)            self.game_loop_id = self.root.after(100self.game_loop)        elif not self.game_over and self.paused:            # 暂停时继续检查,但不更新游戏逻辑            self.game_loop_id = self.root.after(100self.game_loop)        elif self.game_over:            # 游戏结束时不再循环,等待用户操作            passclass Tank:    """坦克类"""    def __init__(self, x, y, type, color):        self.x = x        self.y = y        self.type = type        self.direction = 'up'        self.color = colorclass Wall:    """墙壁类"""    def __init__(self, x, y):        self.x = x        self.y = yclass Bullet:    """子弹类"""    def __init__(self, x, y, direction, type):        self.x = x        self.y = y        self.direction = direction        self.type = typedef main():    root = tk.Tk()    game = TankGame(root)    root.mainloop()if __name__ == "__main__":    main()

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-17 12:18:48 HTTP/2.0 GET : https://f.mffb.com.cn/a/485351.html
  2. 运行时间 : 0.145338s [ 吞吐率:6.88req/s ] 内存消耗:4,639.73kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0125c67f91e9413de5d41b7c4e851731
  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.000515s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000747s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004428s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000311s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000619s ]
  6. SELECT * FROM `set` [ RunTime:0.000197s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000508s ]
  8. SELECT * FROM `article` WHERE `id` = 485351 LIMIT 1 [ RunTime:0.001146s ]
  9. UPDATE `article` SET `lasttime` = 1776399529 WHERE `id` = 485351 [ RunTime:0.002916s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000303s ]
  11. SELECT * FROM `article` WHERE `id` < 485351 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001225s ]
  12. SELECT * FROM `article` WHERE `id` > 485351 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001558s ]
  13. SELECT * FROM `article` WHERE `id` < 485351 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.014024s ]
  14. SELECT * FROM `article` WHERE `id` < 485351 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.016261s ]
  15. SELECT * FROM `article` WHERE `id` < 485351 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.011349s ]
0.146958s