当前位置:首页>python>第三十五期:Python小游戏开发 --- 比C++简单10倍!

第三十五期:Python小游戏开发 --- 比C++简单10倍!

  • 2026-06-25 15:39:42
第三十五期:Python小游戏开发 --- 比C++简单10倍!
文章合集

第三十五期:Python小游戏开发 --- 比C++简单10倍!

亲爱的家长朋友:

还记得孩子用C++写的第一个游戏吗?可能是猜数字、井字棋,或者是第31期的智能动物园。现在我要告诉您一个激动人心的消息:用Python开发游戏,比C++简单10倍!

如果说C++游戏开发像用机床加工零件,需要精确到毫米,那么Python游戏开发就像用3D打印机制作模型——设计好,一键打印,快速成型!

🎮 Python游戏开发的"魔法工具箱":Pygame

孩子可能会问:“Python也能做游戏吗?像手机游戏那样?”

答案是:能!而且效果很棒!

Pygame是什么?

  • • Python最受欢迎的游戏开发库
  • • 简单易学,功能强大
  • • 适合初学者制作2D游戏
  • • 很多知名游戏都是用Pygame开发的

安装Pygame:一键安装的"魔法"

# 打开命令行,输入:
pip install pygame

孩子可以这样理解:就像在手机上安装一个新APP,点一下"安装"按钮,等一会儿就能用了。

第一个Pygame程序:创建游戏窗口

import pygame
import sys

# 初始化Pygame
pygame.init()

# 创建游戏窗口(800x600像素)
screen = pygame.display.set_mode((800600))
pygame.display.set_caption("我的第一个Python游戏")

# 游戏主循环
running = True
while running:
# 处理事件(如关闭窗口)
for event in pygame.event.get():
if event.type == pygame.QUIT:
            running = False

# 填充背景色(RGB:红色=255, 绿色=0, 蓝色=0)
    screen.fill((25500))  # 红色背景

# 更新屏幕显示
    pygame.display.flip()

# 退出游戏
pygame.quit()
sys.exit()

孩子可以这样理解

  1. 1. pygame.init():打开游戏机的电源
  2. 2. set_mode((800, 600)):设定游戏屏幕大小
  3. 3. while running:游戏一直运行,直到玩家退出
  4. 4. screen.fill((255, 0, 0)):把屏幕涂成红色
  5. 5. pygame.display.flip():把画好的内容显示出来

🐍 游戏1:Python贪吃蛇——经典重制版

从零开始:贪吃蛇的"身体部件"

贪吃蛇游戏有三个核心部分:

  1. 1. :由多个方块组成的"火车"
  2. 2. 食物:蛇要吃的"糖果"
  3. 3. 游戏规则:吃到食物变长,撞到边界或自己游戏结束
import pygame
import random
import sys

# 初始化
pygame.init()

# 游戏设置
WIDTH, HEIGHT = 800600
GRID_SIZE = 20
GRID_WIDTH = WIDTH // GRID_SIZE
GRID_HEIGHT = HEIGHT // GRID_SIZE

# 颜色定义(RGB)
BLACK = (000)
WHITE = (255255255)
GREEN = (02550)
RED = (25500)
BLUE = (0120255)

classSnake:
"""贪吃蛇类"""
def__init__(self):
self.reset()

defreset(self):
"""重置蛇的状态"""
self.length = 3
self.positions = [(GRID_WIDTH // 2, GRID_HEIGHT // 2)]
self.direction = random.choice([(10), (01)])  # 随机初始方向
self.score = 0

# 初始化蛇身
for i inrange(1self.length):
            x, y = self.positions[0]
            dx, dy = self.direction
self.positions.append((x - dx * i, y - dy * i))

defget_head_position(self):
"""获取蛇头位置"""
returnself.positions[0]

defturn(self, point):
"""改变蛇的方向"""
# 防止直接反向(比如不能从向右直接变成向左)
ifself.length > 1and (point[0] * -1, point[1] * -1) == self.direction:
return
self.direction = point

defmove(self):
"""蛇移动一步"""
        head = self.get_head_position()
        x, y = self.direction
        new_head = ((head[0] + x) % GRID_WIDTH, (head[1] + y) % GRID_HEIGHT)

# 检查是否撞到自己
if new_head inself.positions[1:]:
self.reset()
returnFalse

self.positions.insert(0, new_head)
iflen(self.positions) > self.length:
self.positions.pop()

returnTrue

defdraw(self, surface):
"""绘制蛇"""
for i, p inenumerate(self.positions):
# 蛇头用不同颜色
            color = BLUE if i == 0else GREEN
            rect = pygame.Rect(p[0] * GRID_SIZE, p[1] * GRID_SIZE, GRID_SIZE, GRID_SIZE)
            pygame.draw.rect(surface, color, rect)
            pygame.draw.rect(surface, BLACK, rect, 1)

defgrow(self):
"""蛇吃到食物后变长"""
self.length += 1
self.score += 10

classFood:
"""食物类"""
def__init__(self):
self.position = (00)
self.randomize_position()

defrandomize_position(self):
"""随机生成食物位置"""
self.position = (random.randint(0, GRID_WIDTH - 1), random.randint(0, GRID_HEIGHT - 1))

defdraw(self, surface):
"""绘制食物"""
        rect = pygame.Rect(self.position[0] * GRID_SIZE, self.position[1] * GRID_SIZE, GRID_SIZE, GRID_SIZE)
        pygame.draw.rect(surface, RED, rect)
        pygame.draw.rect(surface, BLACK, rect, 1)

defdraw_grid(surface):
"""绘制网格"""
for x inrange(0, WIDTH, GRID_SIZE):
        pygame.draw.line(surface, (404040), (x, 0), (x, HEIGHT))
for y inrange(0, HEIGHT, GRID_SIZE):
        pygame.draw.line(surface, (404040), (0, y), (WIDTH, y))

defmain():
"""游戏主函数"""
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Python贪吃蛇")
    clock = pygame.time.Clock()

    snake = Snake()
    food = Food()
    font = pygame.font.SysFont('simhei'25)

    running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
                running = False
elif event.type == pygame.KEYDOWN:
# 键盘控制
if event.key == pygame.K_UP:
                    snake.turn((0, -1))
elif event.key == pygame.K_DOWN:
                    snake.turn((01))
elif event.key == pygame.K_LEFT:
                    snake.turn((-10))
elif event.key == pygame.K_RIGHT:
                    snake.turn((10))
elif event.key == pygame.K_r:
                    snake.reset()  # 按R键重置游戏

# 蛇移动
ifnot snake.move():
continue

# 检查是否吃到食物
if snake.get_head_position() == food.position:
            snake.grow()
            food.randomize_position()
# 确保食物不出现在蛇身上
while food.position in snake.positions:
                food.randomize_position()

# 绘制
        screen.fill(BLACK)
        draw_grid(screen)
        snake.draw(screen)
        food.draw(screen)

# 显示分数
        score_text = font.render(f'分数: {snake.score}'True, WHITE)
        screen.blit(score_text, (1010))

# 显示操作提示
        tips_text = font.render('方向键控制移动 | R键重置游戏'True, WHITE)
        screen.blit(tips_text, (WIDTH - 35010))

        pygame.display.flip()
        clock.tick(10)  # 控制游戏速度

    pygame.quit()
    sys.exit()

if __name__ == "__main__":
    main()

贪吃蛇游戏的核心概念

孩子可以这样理解

  1. 1. 蛇的身体:就像一列火车,车头(蛇头)带路,车厢(蛇身)跟着
  2. 2. 食物:路上的"加油站",吃了就能加一节车厢
  3. 3. 网格系统:就像棋盘,蛇只能在格子上移动
  4. 4. 方向控制:用键盘的上下左右键控制"火车头"的方向

代码量对比:Python vs C++

  • • Python版本:约120行代码
  • • C++版本:约300-400行代码(需要处理图形库、事件循环等)
  • • 开发时间:Python 2小时 vs C++ 1-2天

✈️ 游戏2:Python飞机大战——空中的冒险

更复杂的游戏:三个核心类

飞机大战游戏需要:

  1. 1. 玩家飞机:由玩家控制
  2. 2. 敌机:自动生成和移动
  3. 3. 子弹:玩家发射的攻击
import pygame
import random
import sys

# 初始化
pygame.init()

# 游戏设置
WIDTH, HEIGHT = 800600
FPS = 60

# 颜色
BLACK = (000)
WHITE = (255255255)
RED = (2555050)
BLUE = (50150255)
GREEN = (50255100)

classPlayer:
"""玩家飞机类"""
def__init__(self):
self.width = 50
self.height = 40
self.x = WIDTH // 2 - self.width // 2
self.y = HEIGHT - 100
self.speed = 5
self.color = BLUE
self.health = 100
self.score = 0

defmove(self, keys):
"""根据按键移动飞机"""
if keys[pygame.K_LEFT] andself.x > 0:
self.x -= self.speed
if keys[pygame.K_RIGHT] andself.x < WIDTH - self.width:
self.x += self.speed
if keys[pygame.K_UP] andself.y > 0:
self.y -= self.speed
if keys[pygame.K_DOWN] andself.y < HEIGHT - self.height:
self.y += self.speed

defdraw(self, surface):
"""绘制玩家飞机"""
# 飞机主体
        pygame.draw.rect(surface, self.color, (self.x, self.y, self.width, self.height))

# 飞机头部
        pygame.draw.polygon(surface, WHITE, [
            (self.x + self.width // 2self.y - 10),
            (self.x + 10self.y + 10),
            (self.x + self.width - 10self.y + 10)
        ])

# 飞机机翼
        pygame.draw.rect(surface, WHITE, (self.x - 5self.y + 101015))
        pygame.draw.rect(surface, WHITE, (self.x + self.width - 5self.y + 101015))

# 显示血量
        health_width = int((self.health / 100) * self.width)
        pygame.draw.rect(surface, GREEN, (self.x, self.y - 15, health_width, 5))
        pygame.draw.rect(surface, RED, (self.x + health_width, self.y - 15self.width - health_width, 5))

defget_rect(self):
"""获取飞机的碰撞矩形"""
return pygame.Rect(self.x, self.y, self.width, self.height)

classEnemy:
"""敌机类"""
def__init__(self):
self.width = 40
self.height = 40
self.x = random.randint(0, WIDTH - self.width)
self.y = random.randint(-100, -40)
self.speed = random.randint(25)
self.color = RED
self.value = 10# 击落得分

defmove(self):
"""敌机向下移动"""
self.y += self.speed
returnself.y > HEIGHT  # 返回是否飞出屏幕

defdraw(self, surface):
"""绘制敌机"""
# 敌机主体
        pygame.draw.rect(surface, self.color, (self.x, self.y, self.width, self.height))

# 敌机装饰
        pygame.draw.circle(surface, WHITE, (self.x + self.width // 2self.y + self.height // 2), 8)
        pygame.draw.rect(surface, BLACK, (self.x + 5self.y + 153010))

defget_rect(self):
"""获取敌机的碰撞矩形"""
return pygame.Rect(self.x, self.y, self.width, self.height)

classBullet:
"""子弹类"""
def__init__(self, x, y):
self.width = 5
self.height = 15
self.x = x
self.y = y
self.speed = 10
self.color = GREEN

defmove(self):
"""子弹向上移动"""
self.y -= self.speed
returnself.y < 0# 返回是否飞出屏幕

defdraw(self, surface):
"""绘制子弹"""
        pygame.draw.rect(surface, self.color, (self.x, self.y, self.width, self.height))

defget_rect(self):
"""获取子弹的碰撞矩形"""
return pygame.Rect(self.x, self.y, self.width, self.height)

defsimple_plane_game():
"""简化版飞机大战游戏"""
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Python飞机大战")
    clock = pygame.time.Clock()

    player = Player()
    enemies = []
    bullets = []

    enemy_timer = 0
    bullet_timer = 0
    font = pygame.font.SysFont('simhei'24)

    running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
                running = False

# 获取按键状态
        keys = pygame.key.get_pressed()

# 玩家移动
        player.move(keys)

# 自动发射子弹(空格键或自动)
        bullet_timer += 1
if bullet_timer >= 10:  # 每10帧发射一次
            bullets.append(Bullet(player.x + player.width // 2 - 2, player.y))
            bullet_timer = 0

# 生成敌机
        enemy_timer += 1
if enemy_timer >= 30:  # 每30帧生成一个敌机
            enemies.append(Enemy())
            enemy_timer = 0

# 移动子弹并检查是否飞出屏幕
        bullets = [bullet for bullet in bullets ifnot bullet.move()]

# 移动敌机并检查是否飞出屏幕
        enemies = [enemy for enemy in enemies ifnot enemy.move()]

# 检测碰撞:子弹 vs 敌机
for bullet in bullets[:]:  # 使用副本遍历,因为要删除元素
for enemy in enemies[:]:
if bullet.get_rect().colliderect(enemy.get_rect()):
                    player.score += enemy.value
if bullet in bullets:
                        bullets.remove(bullet)
if enemy in enemies:
                        enemies.remove(enemy)
break

# 检测碰撞:玩家 vs 敌机
for enemy in enemies[:]:
if player.get_rect().colliderect(enemy.get_rect()):
                player.health -= 20
                enemies.remove(enemy)
if player.health <= 0:
                    running = False

# 绘制
        screen.fill(BLACK)

# 绘制星空背景
for _ inrange(50):
            x = random.randint(0, WIDTH)
            y = random.randint(0, HEIGHT)
            pygame.draw.circle(screen, WHITE, (x, y), 1)

# 绘制游戏对象
        player.draw(screen)
for bullet in bullets:
            bullet.draw(screen)
for enemy in enemies:
            enemy.draw(screen)

# 显示分数和血量
        score_text = font.render(f'分数: {player.score}'True, WHITE)
        health_text = font.render(f'血量: {player.health}'True, GREEN)
        screen.blit(score_text, (1010))
        screen.blit(health_text, (1040))

# 显示操作提示
        tips_text = font.render('方向键移动 | 自动射击'True, WHITE)
        screen.blit(tips_text, (WIDTH - 20010))

        pygame.display.flip()
        clock.tick(FPS)

# 游戏结束
    screen.fill(BLACK)
    game_over_font = pygame.font.SysFont('simhei'48)
    game_over_text = game_over_font.render('游戏结束!'True, RED)
    score_text = font.render(f'最终分数: {player.score}'True, WHITE)

    screen.blit(game_over_text, (WIDTH // 2 - 100, HEIGHT // 2 - 50))
    screen.blit(score_text, (WIDTH // 2 - 80, HEIGHT // 2 + 20))
    pygame.display.flip()

# 等待3秒后退出
    pygame.time.wait(3000)
    pygame.quit()
    sys.exit()

if __name__ == "__main__":
    simple_plane_game()

飞机大战游戏的教学重点

孩子可以这样理解

  1. 1. 游戏循环:就像动画片的每一帧,快速连续播放就成动画
  2. 2. 碰撞检测:检查两个物体是否"碰到一起"
  3. 3. 对象管理:管理多个敌机、多个子弹
  4. 4. 游戏状态:血量、分数、游戏结束判断

🎯 游戏3:自定义挑战——创建你的游戏

基础模板:快速开始你的游戏创意

import pygame
import sys

pygame.init()

WIDTH, HEIGHT = 800600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()

classGameObject:
"""游戏对象基类"""
def__init__(self, x, y, width, height, color):
self.x = x
self.y = y
self.width = width
self.height = height
self.color = color

defdraw(self, surface):
        pygame.draw.rect(surface, self.color, (self.x, self.y, self.width, self.height))

defget_rect(self):
return pygame.Rect(self.x, self.y, self.width, self.height)

deftemplate_game():
"""游戏模板,可以在此基础上修改"""
    player = GameObject(4005005050, (0100255))

    running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
                running = False

# 控制玩家移动
        keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
            player.x -= 5
if keys[pygame.K_RIGHT]:
            player.x += 5
if keys[pygame.K_UP]:
            player.y -= 5
if keys[pygame.K_DOWN]:
            player.y += 5

# 绘制
        screen.fill((000))
        player.draw(screen)

# 显示提示
        font = pygame.font.SysFont('simhei'24)
        text = font.render('用方向键移动方块 | 这是你的游戏起点!'True, (255255255))
        screen.blit(text, (1010))

        pygame.display.flip()
        clock.tick(60)

    pygame.quit()
    sys.exit()

# 修改这个模板,创建你自己的游戏!
# 可以添加:敌人、子弹、分数、关卡等

三个创意挑战

  1. 1. 挑战1:收集星星游戏
    • ◦ 玩家控制角色收集随机出现的星星
    • ◦ 每收集一颗星得10分
    • ◦ 60秒内看能得多少分
  2. 2. 挑战2:迷宫冒险
    • ◦ 设计一个迷宫地图
    • ◦ 玩家控制角色从起点走到终点
    • ◦ 添加障碍物和敌人
  3. 3. 挑战3:打地鼠游戏
    • ◦ 地鼠从不同洞口随机出现
    • ◦ 玩家点击地鼠得分
    • ◦ 地鼠出现时间越来越短

📊 Python vs C++:游戏开发对比表

对比项
Python (Pygame)
C++ (SDL/OpenGL)
孩子可以这样理解
安装配置pip install pygame
 一行命令
需要配置编译器、库文件、头文件
Python:下载APP;C++:组装电脑
代码量
贪吃蛇:120行,飞机大战:200行
同样游戏:300-500行
Python:写一篇作文;C++:写一本小说
开发速度
几小时做出可玩原型
几天到几周
Python:快餐;C++:满汉全席
学习曲线
平缓,适合初学者
陡峭,需要较强基础
Python:滑梯;C++:攀岩
性能
足够制作2D游戏
可以制作3A级大作
Python:家用轿车;C++:F1赛车
适合项目
学习、原型、2D游戏
商业游戏、3D游戏、引擎开发
Python:学校项目;C++:公司产品

为什么Python适合孩子学习游戏开发?

  1. 1. 快速反馈:几行代码就能看到效果
  2. 2. 成就感强:很快就能做出可玩的游戏
  3. 3. 专注创意:不用纠结语法细节,专注游戏设计
  4. 4. 分享容易:一个.py文件就能分享给朋友

🤔 常见问题解答

Q1:Python游戏能做成手机APP吗?

A:可以,但需要额外工具:

  • • Pygame游戏:可以用Kivy或BeeWare打包成手机APP
  • • 简单的方法:把游戏做成网页版,手机浏览器就能玩
  • • 建议:先学会做电脑游戏,再学移动端开发

Q2:Python游戏能卖钱吗?

A:可以,但有限制:

  • • 简单游戏:适合作为学习作品展示
  • • 商业游戏:Python适合原型开发,正式版可能用C++重写
  • • 真正价值:孩子学会的游戏设计思维、编程能力,比游戏本身更值钱

Q3:孩子应该先学Python游戏还是C++游戏?

A:建议路线:

  1. 1. 先学Python游戏:快速建立兴趣,理解游戏原理
  2. 2. 再学C++游戏:深入理解底层,优化性能
  3. 3. 对比学习:用Python实现想法,用C++优化实现

Q4:Pygame能做什么样的游戏?

A:Pygame适合:

  • • 2D游戏:贪吃蛇、俄罗斯方块、平台跳跃、射击游戏
  • • 教育游戏:数学练习、单词记忆、科学模拟
  • • 互动艺术:动态视觉效果、音乐可视化
  • • 不适合:复杂的3D游戏、需要极致性能的游戏

👨‍👩‍👧‍👦 给家长的5个辅导建议

1. 从"玩家"到"创造者"的心态转变

  • • 问孩子:“你最喜欢玩什么游戏?”
  • • “如果让你改进这个游戏,你会改什么?”
  • • “能不能用Python做一个简化版?”
  • • 培养"我不只是玩游戏,我还能创造游戏"的思维

2. 游戏设计的"纸上谈兵"

  • • 先画再写:让孩子在纸上画出游戏界面
  • • 设计角色:给每个角色起名字、设定能力
  • • 规划关卡:设计简单→中等→困难的关卡
  • • 编写故事:给游戏添加背景故事
  • • 这些设计工作比写代码更重要!

3. 分解复杂问题

当孩子想做复杂游戏时:

  1. 1. 先做核心功能:比如先让角色能移动
  2. 2. 再添加次要功能:比如添加敌人
  3. 3. 然后完善细节:比如添加音效、分数
  4. 4. 最后优化体验:比如调整难度、美化界面

4. 鼓励"山寨"和改编

  • • 山寨经典:让孩子用Python重做经典游戏(贪吃蛇、打砖块)
  • • 改编创新:在经典基础上添加新功能
  • • 融合创意:把两个游戏的特点结合起来
  • • 重要原则:只要用于学习,改编经典游戏是很好的练习

5. 组织"家庭游戏展"

  • • 展示时间:每周六晚上是"游戏展示会"
  • • 互相试玩:家人试玩孩子做的游戏
  • • 收集反馈:“哪里好玩?哪里可以改进?”
  • • 设立奖项:“最佳创意奖”、“最美观奖”、“最有趣奖”
  • • 制作海报:为游戏制作宣传海报

🔧 技术小贴士

Pygame常用功能速查表

# 1. 初始化
pygame.init()
screen = pygame.display.set_mode((宽度, 高度))

# 2. 游戏循环
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
            running = False

# 3. 绘制
    screen.fill(颜色)
# 绘制图形...
    pygame.display.flip()

# 4. 控制帧率
    clock.tick(60)  # 60帧/秒

# 5. 退出
pygame.quit()

常用图形绘制

# 矩形
pygame.draw.rect(屏幕, 颜色, (x, y, 宽, 高))
# 圆形
pygame.draw.circle(屏幕, 颜色, (圆心x, 圆心y), 半径)
# 线条
pygame.draw.line(屏幕, 颜色, (起点x, 起点y), (终点x, 终点y), 宽度)
# 文字
font = pygame.font.SysFont('字体', 大小)
text = font.render('文字内容'True, 颜色)
屏幕.blit(text, (x, y))

碰撞检测的三种方法

# 方法1:矩形碰撞
rect1.colliderect(rect2)

# 方法2:圆形碰撞(计算距离)
distance = ((x1 - x2)**2 + (y1 - y2)**2)**0.5
if distance < 半径1 + 半径2:
print("碰撞了!")

# 方法3:像素级碰撞(更精确但更慢)
# 使用pygame.mask模块

🔮 下期预告

第三十六期:Python数据分析入门——用数据讲故事!

预告内容:

  1. 1. 数据分析是什么?为什么重要?
  2. 2. 安装数据分析三剑客:NumPy、Pandas、Matplotlib
  3. 3. 第一个数据分析项目:分析班级成绩
  4. 4. 数据可视化:制作漂亮的图表
  5. 5. 实战项目:分析天气数据、游戏数据
  6. 6. 数据分析在生活中的应用

为什么重要:数据分析是21世纪最重要的技能之一!从学习成绩到购物习惯,从天气预测到游戏设计,数据无处不在。学会数据分析,孩子就能从数据中发现规律、做出预测、讲述故事!


💌 写给家长的话

亲爱的家长朋友:

当孩子用Python开发出第一个可玩的游戏时,那种成就感是难以言喻的。他们不再只是游戏的消费者,而是成为了创造者。这种身份转变,对孩子的自信心和创造力培养有着深远的影响。

Python游戏开发的美妙之处在于:它让孩子专注于创意逻辑,而不是繁琐的语法细节。孩子可以很快看到自己的想法变成可互动的现实,这种即时反馈是保持学习动力的关键。

如果您看到孩子沉迷于调试游戏bug,请不要担心——这其实是最高效的学习过程。每一个bug的解决,都是一次逻辑思维和问题解决能力的锻炼。

鼓励孩子把游戏分享给朋友、家人,甚至发布到网上(在您的监督下)。他人的反馈和建议,会让孩子学会接受批评、改进作品,这是非常重要的社会技能。

游戏开发不只是"玩游戏",它是数学(坐标、速度、碰撞)、物理(运动、重力)、艺术(色彩、布局)、文学(故事、对话)的完美结合。孩子在不知不觉中,就在进行跨学科的学习。

让我们下期再见,一起进入Python数据分析的奇妙世界!

如果您觉得这篇文章有帮助,欢迎点赞、转发,让更多家长看到! 有问题想交流?欢迎在评论区留言! 关注我们,一起陪伴孩子走进编程的世界!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 12:28:44 HTTP/2.0 GET : https://f.mffb.com.cn/a/488188.html
  2. 运行时间 : 0.252740s [ 吞吐率:3.96req/s ] 内存消耗:4,919.38kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ccd74c354a8ff4e2d37d351429cce6d9
  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.000637s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000947s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000463s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000497s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000897s ]
  6. SELECT * FROM `set` [ RunTime:0.014729s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001105s ]
  8. SELECT * FROM `article` WHERE `id` = 488188 LIMIT 1 [ RunTime:0.007403s ]
  9. UPDATE `article` SET `lasttime` = 1783139324 WHERE `id` = 488188 [ RunTime:0.014863s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000455s ]
  11. SELECT * FROM `article` WHERE `id` < 488188 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.006123s ]
  12. SELECT * FROM `article` WHERE `id` > 488188 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.021927s ]
  13. SELECT * FROM `article` WHERE `id` < 488188 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.039099s ]
  14. SELECT * FROM `article` WHERE `id` < 488188 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.025376s ]
  15. SELECT * FROM `article` WHERE `id` < 488188 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.022354s ]
0.254296s