单元五

第18课 简单class——给角色做一张卡片

任务场景:角色卡片聚名字与生命
任务场景:角色卡片聚名字与生命
原理图:class 像角色卡——名字、生命和动作放在一起
原理图:class 像角色卡——名字、生命和动作放在一起

一、任务目标

理解类把同一类角色的数据与动作放在一起,能创建角色对象并读取其生命值或名字。

二、我们要学什么

  • 学习要点:简单class|角色卡片
  • 本课过关:能完成:说出对象是按类创建出来的具体角色;载入体验程序,指出两个角色可以有不同生命值;改其中一个对象的属性,另一个不变。
  • 示例对齐:体验题对应本课「编程体验」;完整代码对应编程题1;补全与独立编写对应编程题2–3。均在 Mixly 图形化积木中完成。

三、本节要点

本课要认识简单的类与对象。重难点是类是模板,对象是具体实例,二者不要混用。要点对齐「简单class|角色卡片」。

1读场景明确真实任务
2对要点简单class|角色卡片
3载入运行图形化积木

四、解题思路

任务:用类做出角色卡片并打印属性。请分清:类是模板,对象是具体角色。

本课主要用到:屏幕输出。

  1. 1明确任务「两张角色卡」:两个对象的属性可以不同。
  2. 2定义类后创建对象,再打印名字与生命值。
  3. 3只改一个对象的属性,确认另一个保持原值。

流程示意(可对照左侧文字)

任务:两张角色卡定义类后创建对象只改一个对象的属性

五、图形块讲解

本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。

六、知识点讲解

类是角色的模板,对象是按模板创建的具体角色。本课给角色做卡片——同一类可以做出多个对象,各自保存自己的名字与生命值。只要求会创建与读取属性,不展开继承等较难内容。

先弄清:模板与实例不同;再进编程练习对照两张卡片。

七、编程练习

用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码判题。

先阅读并运行,感受游戏循环。

参考代码(对照抄写到下方 Mixly)
def make_hero(name, hp):
    return {"name": name, "hp": hp}

def status(hero):
    print(hero["name"], "生命", hero["hp"])

def hurt(hero, dmg):
    hp2 = hero["hp"] - dmg
    if hp2 < 0:
        hp2 = 0
    hero["hp"] = hp2

def heal(hero, n):
    hero["hp"] = hero["hp"] + n

player = make_hero("小飞", 100)
status(player)
hurt(player, 25)
status(player)
heal(player, 10)
status(player)

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:本课只要求会创建与读取属性,不展开继承。

  2. 判断:创建一个英雄对象后,游戏里所有角色的生命值都会变成同一个数。

  3. 按同一模板做出 player 和 monster,它们的生命值?

  4. make_hero 或创建角色对象,主要时机是?

  5. hurt(player, 25) 更接近?

九、本节小结

本课主题是类与对象:类是模板,对象是具体角色。同一类可做出属性不同的多个对象。