2923浏览
查看: 2923|回复: 0

1.变装小游戏(行空板触摸屏、AB键、加速度传感器)

[复制链接]
本帖最后由 小梁老师 于 2022-8-12 02:18 编辑

1.变装小游戏(行空板触摸屏、AB键、加速度传感器)图6
【效果预览】

一、学习内容

运用行空板触摸屏、AB键、加速度传感器设计一款变装小游戏。
1.在触摸屏上,单击头发切换发型、单击衣服切换服装、单击鞋子切换款式
2.在AB键上,单击A键“成套变装”、单击B键“随机变装”3.在加速度传感器上,实现摇一摇恢复初始化状态。

二、学习对象
适合有Python基础五年级以上学生学习

三、学习目标
1.了解pinpong库的加载,熟悉pgzrun(pygame zero)库的使用
2.掌握pgzrun初始化列表、角色和位置的方法
3.学会draw()函数的用法、理解自定义函数格式
4.学会运用if条件语句触发事件

四、学习重难点
1.重点:行空板板载按键和传感器调用自定义函数
2.难点:鼠标事件调用自定义函数

五、学习过程

1.加载第三方库,此项目使用了板载AB按键和加速度传感器,所以需要加载pinpong库;还使用了pygame zero等功能实现互动,需要加载pgzrun、random等相关库。
  1. # 加载第三方库
  2. from pinpong.extension.unihiker import *
  3. from pinpong.board import *
  4. import pygame
  5. import pgzrun
  6. import random
  7. import time
复制代码



2.初始化pinpong库和游戏中的多个角色
  1. # 初始化pinpong库
  2. Board().begin()
  3. # 设置屏幕大小
  4. WIDTH = 240
  5. HEIGHT = 320
  6. # 创建女孩角色并设置角色位置
  7. girl = Actor("co")
  8. girl.pos = 120, 203
  9. # 创建发型列表、发型角色,设置角色位置
  10. hair_style = ['hair_1', 'hair_2', 'hair_3', 'hair_4']
  11. hair = Actor("hair_1")
  12. hair.pos = 126, 176
  13. # 创建服装列表、服装角色,设置角色位置
  14. dress_style = ['dress_1', 'dress_2', 'dress_3', 'dress_4']
  15. dress = Actor("dress_1")
  16. dress.pos = 124, 238
  17. # 创建鞋子列表、鞋子角色,设置角色位置
  18. shoes_style = ['shoes_1', 'shoes_2', 'shoes_3', 'shoes_4']
  19. shoes = Actor("shoes_1")
  20. shoes.pos = 124, 280
  21. # 创建随机换装按钮,设置角色位置
  22. button1 = Actor("rand")
  23. button1.pos = 50, 40
  24. # 创建成套换装按钮,设置角色位置
  25. button2 = Actor("match")
  26. button2.pos = 187, 40
复制代码
1.变装小游戏(行空板触摸屏、AB键、加速度传感器)图2

3.使用draw( )函数显示角色和背景
  1. def draw():
  2.     screen.surface = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN)
  3.     # 设置背景
  4.     screen.blit('background', (0, 0))
  5.     # 显示所有角色
  6.     girl.draw()
  7.     hair.draw()
  8.     dress.draw()
  9.     shoes.draw()
  10.     button1.draw()
  11.     button2.draw()
复制代码
1.变装小游戏(行空板触摸屏、AB键、加速度传感器)图1

4.定义changestyle()实现变装造型函数,利用列表切换造型。
  1. # 变换造型函数
  2. def changestyle(obj, styleList):
  3.     style = styleList.index(obj.image)
  4.     if (style < 3):
  5.         obj.image = styleList[style + 1]
  6.     else:
  7.         obj.image = styleList[0]
复制代码

5.定义change_all()函数,利用random随机库实现成套变装。

  1. # 成套变装函数
  2. def change_all():
  3.     suit = random.randint(0, 3)
  4.     dress.image = dress_style[suit]
  5.     hair.image = hair_style[suit]
  6.     shoes.image = shoes_style[suit]
复制代码


6.定义rand_change()函数,利用random随机库实现随机变装。
  1. # 随机变装函数
  2. def rand_change():
  3.     dress.image = random.choice(dress_style)
  4.     hair.image = random.choice(hair_style)
  5.     shoes.image = random.choice(shoes_style)
复制代码


7.添加鼠标事件,实现单击发型、服装、鞋子进行造型切换,单击屏幕按钮实现随机变装或成套变装。
  1. # 当鼠标按下,让鼠标点击的角色变换造型
  2. def on_mouse_down(pos):
  3.     if dress.collidepoint(pos):
  4.         changestyle(dress, dress_style)
  5.     elif hair.collidepoint(pos):
  6.         changestyle(hair, hair_style)
  7.     elif shoes.collidepoint(pos):
  8.         changestyle(shoes, shoes_style)
  9.     elif button1.collidepoint(pos):
  10.         rand_change()
  11.     elif button2.collidepoint(pos):
  12.         change_all()
复制代码
1.变装小游戏(行空板触摸屏、AB键、加速度传感器)图3

8.使用update()函数更新造型,实现单击板载AB键和摇一摇变装。
  1. def update():
  2.     # 单击行空板A键调用成套变装函数
  3.     if keyboard.a:
  4.         change_all()
  5.         time.sleep(1)
  6.     # 单击行空板B键调用随机变装函数
  7.     if keyboard.b:
  8.         rand_change()
  9.         time.sleep(1)
  10.     # 摇一摇,实现装扮初始化
  11.     if accelerometer.get_strength() > 1.5:
  12.         dress.image = dress_style[0]
  13.         hair.image = hair_style[0]
  14.         shoes.image = shoes_style[0]
  15. pgzrun.go()
复制代码


1.变装小游戏(行空板触摸屏、AB键、加速度传感器)图4
六、总结提升
1.是否可以设计更多玩法,比如结合板载麦克风实现声音控制变装?
2.基于在本项目的思路,设计触屏互动小游戏,比如扫雷、纸牌等。

下载附件变装小游戏源码及素材.zip




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail