Appearance
第一部分:迷宫游戏基础——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()设置窗口大小,类比“画纸尺寸”:pythonimport 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() # 更新显示 - 关键规则:
- 坐标原点在窗口左上角(x向右增大,y向下增大);
- 移动速度由
±5控制(数值越大越快,可自定义); - 必须用
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分钟)
- 问题排查:收集典型错误(如“角色不动”——忘记写移动代码;“拖影”——没加
screen.fill()),投屏讲解原因。 - 创意展示:选2名完成进阶任务的学生,展示“彩色角色”“带边界的移动”,讲解“你改了哪些参数?为什么?”。
- 小组互评:用“移动流畅度”“角色创意度”两个维度,每组给邻组打分,最高分组获“游戏先锋”贴纸。
五、总结与作业(5分钟)
课堂总结:
- Pygame开发三步:初始化→主循环(处理事件+更新画面)→退出;
- 角色移动核心:通过
key.get_pressed()检测按键,修改x/y坐标; - 坐标规则:左上角为(0,0),右→x+,下→y+。
课后作业:
- 优化角色移动:让角色碰到窗口边缘时“反弹”(如右边碰到时
x开始减小); - 手绘一张迷宫地图(用网格纸,标注起点、终点、墙壁位置),下次课用代码实现。
教学理论支撑:
- 皮亚杰形式运算阶段理论:通过“纸质迷宫→代码实现”的具象-抽象转换,培养学生对“坐标移动”的逻辑推理能力(理解x/y变化与方向的关系)。
- 维果茨基最近发展区:提供基础代码模板(现有能力),通过进阶任务(潜在能力)引导学生探索参数修改,AI助手作为“脚手架”降低试错成本。
- STEAM教育融合:结合技术(Pygame工具)、工程(游戏逻辑设计)、艺术(角色颜色/图片创意),让编程成为创造性表达的工具。