[竖版]第1讲 - 卡牌翻翻乐(上)

  • 格式:pdf
  • 大小:519.20 KB
  • 文档页数:8

L5-1 卡牌翻翻乐(上)
1. 项目描述
•设计卡牌翻转游戏,点击卡牌使它翻到带有人物图案的正面,如果两张卡牌的图案相同,翻牌正确。

否则,翻牌错误。

2. 项目拆解
•本节课完成游戏中的两个功能:初始化卡牌和控制
3.知识探索
(1)初始化卡牌
•在窗口中显示多张卡牌,多张卡牌就是创建多个角色。

知识点
•角色的属性——pos 格式:角色名.pos = [x 坐标值, y 坐标值]中括号
例子:card = Actor('禾木')
card.person = '禾木'
card.pos = [60, 130]
card1 = Actor('乌拉乎')
card1.person = '乌拉乎'
card1.pos = [180, 130]
运行效果:用途:设置角色在窗口中的位置。

将卡牌的人物存储在person 属性中
(2)控制卡牌翻转
•鼠标点击到卡牌的时候,就将卡牌翻转。

知识点
•collidepoint()函数
作用:检测角色和鼠标是否碰到。

格式:def
on_mouse_down(pos):
角色名.collidepoint(pos)
鼠标所在的位置
返回值:执行collidepoint()函数后,会返回True / False。

例子:def on_mouse_down(pos):
if card.collidepoint(pos):
print('点中卡片')
else:
print('未点中卡片')
点中卡片
按下鼠标按键后
未点中卡片
知识点
•自定义属性及其使用
属性:角色的标签,用来记录角色的各种信息。

•pygame 中有系统约定好的属性,比如:image 。

我们也可以自己定义属性,比如:person 。

格式:角色名.属性名= 值示例:card.image = '背面'
card.person = '乌拉乎'
属性名
按下鼠标按键后
import pgzrun card = Actor('禾木')
card.image = '背面'
card.person = '禾木'
card.pos = [100, 130]
def draw():
card.draw()
def on_mouse_down(pos):
if card.collidepoint(pos):
card.image = card.person
pgzrun.go()例子:按下鼠标时,点击到卡牌后,collidepoint()函数返回结
果True ,表达式成立,把card.person 的值赋值给image
属性,将卡牌的造型更换成人物面。

点击卡牌后
1
1
•实现卡牌来回翻转
例子:
def on_mouse_down(pos):
if card.collidepoint(pos):
if card.image== '背面':
card.image= card.person
else:
card.image= '背面'
•使用collidepoint()函数检测鼠标是否点击了卡牌,卡牌被点击后,判断卡牌的造型是什么,如果是背面那么就将card.person的值
赋值给image属性,否则,就将角色的造型切换成背面。

3. 练习
(1)下面哪个选项,可以将角色hetao设置在窗口(100,200)
的位置?
( )
A. hetao.pos= 100,200
B. hetao.pos[100,200]
C. hetao.pos= [100,200]
D. hetao.pos= '100,200'
(2)运行下图代码后,鼠标点击角色hetao时,输出选项中
的哪一个?
( )
A. True
B. False
C. hetao.collidepoint(pos)
D. 角色hetao的坐标
•答案
C
(1)下面哪个选项,可以将角色hetao 设置在窗口(100,200)的位置?
( )A. hetao.pos = 100,200 B. hetao.pos[100,200]
C. hetao.pos = [100,200]
D. hetao.pos = '100,200'
(2)运行下图代码后,鼠标点击角色hetao 时,输出选项中的哪一个?A. True B. False
C. hetao.collidepoint(pos)
D. 角色hetao 的坐标
A
( )。