Skip to content

第一部分:迷宫游戏基础——Pygame入门与角色移动

课题

从“玩游戏”到“做游戏”:Pygame世界的角色与移动

教学时间

2课时(90分钟)

课前准备

  • 教师端:电脑(Python 3.10+、Pygame库)、投影仪、多媒体课件(含经典迷宫游戏视频:如《吃豆人》《迷宫大侦探》)、迷宫地图实物(纸质网格迷宫)、“游戏元素卡片”(角色、墙壁、终点、方向键图标)。
  • 学生端:电脑(预装Pygame,命令:pip install pygame)、笔记本、彩色笔(设计角色形象)、迷宫草稿纸(手绘地图)。
  • 教学素材:Pygame基础代码模板、角色图片素材(简化版:正方形/圆形角色,避免复杂图形)、AI代码小助手(预设“移动逻辑”“窗口设置”等问题的解答模板)。

一、导入活动:拆解“迷宫游戏”的核心元素(15分钟)

活动1:“迷宫大冒险”体验——感知游戏构成

  • 教师展示纸质网格迷宫:“要从起点走到终点,需要避开墙壁,控制角色移动——这就是迷宫游戏的核心”。
  • 分组体验在线简易迷宫游戏(如4399小游戏),记录“玩游戏时你需要控制什么?”(角色位置、移动方向)、“游戏里有哪些必须的元素?”(角色、地图、墙壁、终点)。

活动2:“游戏元素拼图”——明确开发目标

  • 发放“游戏元素卡片”(角色、墙壁、终点、方向键),小组合作排列卡片,说明“开发一个迷宫游戏需要先实现哪些功能”。
  • 教师总结:“今天我们要用Pygame库,先实现‘创建窗口→加载角色→用键盘控制移动’这三步,就像搭积木一样一步步造游戏”。

二、知识点讲解:Pygame基础与角色移动逻辑(35分钟)

模块1:认识Pygame——游戏开发的“工具箱”(10分钟)

  • 核心概念:Pygame是Python的游戏开发库,包含“画图形、响应用户操作、播放声音”等工具,就像“游戏开发的乐高套装”。
  • 应用场景:展示用Pygame开发的简易游戏(如贪吃蛇、打砖块),强调“我们今天的迷宫游戏,就是这些复杂游戏的基础版”。
  • 基础框架:用“做饭”类比Pygame程序结构:
    python
    import pygame  # 准备工具(买菜)
    pygame.init()  # 初始化工具(洗菜)
    # 游戏主循环(炒菜:一直翻炒直到完成)
    running = True
    while running:
        for event in pygame.event.get():  # 处理事件(如关火指令)
            if event.type == pygame.QUIT:
                running = False
    pygame.quit()  # 结束程序(洗碗)

模块2:创建游戏窗口与角色——游戏世界的“舞台”(15分钟)

  • 创建窗口:用pygame.display.set_mode()设置窗口大小,类比“画纸尺寸”:
    python
    import pygame
    pygame.init()
    # 设置窗口:宽600像素,高400像素(像素=屏幕上的小格子)
    screen = pygame.display.set_mode((600, 400))
    pygame.display.set_caption("我的迷宫游戏")  # 窗口标题
  • 加载角色:用矩形/图片表示角色,设置初始位置(x,y坐标),类比“演员站在舞台的哪个位置”:
    python
    # 方法1:用矩形表示角色(简易版)
    player = pygame.Rect(50, 50, 30, 30)  # (x=50, y=50, 宽=30, 高=30)
    # 方法2:用图片表示角色(进阶版)
    # player_img = pygame.image.load("player.png")  # 加载图片
    # player_rect = player_img.get_rect(topleft=(50, 50))  # 获取图片位置

模块3:键盘控制角色移动——让角色“听指挥”(10分钟)

  • 事件监听:Pygame通过pygame.key.get_pressed()检测键盘按键,就像“游戏的耳朵”:
    python
    # 在游戏主循环中添加移动逻辑
    while running:
        keys = pygame.key.get_pressed()  # 获取所有按键状态
        # 按上键:y坐标减小(向上移动)
        if keys[pygame.K_UP]:
            player.y -= 5  # 每次移动5像素
        # 按下键:y坐标增大
        if keys[pygame.K_DOWN]:
            player.y += 5
        # 按左键:x坐标减小
        if keys[pygame.K_LEFT]:
            player.x -= 5
        # 按右键:x坐标增大
        if keys[pygame.K_RIGHT]:
            player.x += 5
        
        # 刷新屏幕(必须步骤,否则看不到移动)
        screen.fill((255, 255, 255))  # 白色背景(用RGB颜色值)
        pygame.draw.rect(screen, (0, 255, 0), player)  # 画绿色角色
        pygame.display.flip()  # 更新显示
  • 关键规则
    1. 坐标原点在窗口左上角(x向右增大,y向下增大);
    2. 移动速度由±5控制(数值越大越快,可自定义);
    3. 必须用screen.fill()pygame.display.flip()刷新画面,否则角色会“拖影”。

三、练习题设计:分层任务+创意优化(25分钟)

基础任务(全员完成):“会动的角色”

  • 要求:基于模板实现“绿色正方形角色”,能用方向键控制上下左右移动,窗口标题设为自己的名字(如“小明的迷宫角色”)。
  • 模板框架(提前发放,标红需修改部分):
    python
    import pygame
    pygame.init()
    screen = pygame.display.set_mode((600, 400))
    pygame.display.set_caption("______的迷宫角色")  # 填自己的名字
    player = pygame.Rect(50, 50, 30, 30)  # 角色初始位置
    running = True
    
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
        
        # 补充移动逻辑(复制课堂代码,修改速度为3)
        keys = pygame.key.get_pressed()
        if keys[pygame.K_UP]:
            player.y -= 3
        # (补充下、左、右移动代码)
        
        # 刷新画面
        screen.fill((255, 255, 255))
        pygame.draw.rect(screen, (0, 255, 0), player)  # 绿色角色
        pygame.display.flip()
    
    pygame.quit()

进阶任务(选做):“个性化角色”

  • 选项1:修改角色颜色(如(255,0,0)为红色)、大小(Rect的宽高改为40);
  • 选项2:添加移动边界(角色不能移出窗口,提示:if player.x < 0: player.x = 0);
  • 选项3:用图片作为角色(教师提供简易图片素材,如“小机器人.png”)。

教师支持:

  • 打开AI代码小助手,学生可提问“怎么让角色变慢?”“颜色值怎么改?”,AI返回带注释的修改建议(如“把player.y -= 5改成-2即可变慢”)。

四、讲解与互评:从“会动”到“懂原理”(10分钟)

  1. 问题排查:收集典型错误(如“角色不动”——忘记写移动代码;“拖影”——没加screen.fill()),投屏讲解原因。
  2. 创意展示:选2名完成进阶任务的学生,展示“彩色角色”“带边界的移动”,讲解“你改了哪些参数?为什么?”。
  3. 小组互评:用“移动流畅度”“角色创意度”两个维度,每组给邻组打分,最高分组获“游戏先锋”贴纸。

五、总结与作业(5分钟)

课堂总结:

  • Pygame开发三步:初始化→主循环(处理事件+更新画面)→退出;
  • 角色移动核心:通过key.get_pressed()检测按键,修改x/y坐标;
  • 坐标规则:左上角为(0,0),右→x+,下→y+。

课后作业:

  1. 优化角色移动:让角色碰到窗口边缘时“反弹”(如右边碰到时x开始减小);
  2. 手绘一张迷宫地图(用网格纸,标注起点、终点、墙壁位置),下次课用代码实现。

教学理论支撑:

  1. 皮亚杰形式运算阶段理论:通过“纸质迷宫→代码实现”的具象-抽象转换,培养学生对“坐标移动”的逻辑推理能力(理解x/y变化与方向的关系)。
  2. 维果茨基最近发展区:提供基础代码模板(现有能力),通过进阶任务(潜在能力)引导学生探索参数修改,AI助手作为“脚手架”降低试错成本。
  3. STEAM教育融合:结合技术(Pygame工具)、工程(游戏逻辑设计)、艺术(角色颜色/图片创意),让编程成为创造性表达的工具。