本帖最后由 想你课堂 于 2022-8-28 10:25 编辑
一、任务目标
1.给出一副图片,做背景;2.心中想一个1-60的数字;
3.在给出6张数字卡片中,通过每张卡片选择你想的数字是否在卡片中,在选择按键A,不在选择按键B,直到6张卡片选完;
4.最后给出你想的数字,看是否与你想的数字一致。
二、创意起源
二进制原理;猜数字
三、作品展示
对应的电脑端显示过程如下:
四、知识点
1.学习使用unihiker库显示图片、文字的方法
Unihiker库GUI类draw_image()方法显示图片
GUI类中的draw_image()方法可以实现在行空板屏幕上显示图片,在编程时,通过“对象.方法名()”的形式来实现功能,同时,此方法会返回一个图片对象,使用变量存储起来方便后续进行对象更新操作。
2.二进制知识;以十进制数52为例,二进制应该是:110100B,对应位换算成十进制为:
0乘2的0次方=0
0乘2的1次方=0
1乘2的2次方=4
0乘2的3次方=0
1乘2的4次方=16
1乘2的5次方=32
52=32+16+0+4+0+0
3.列表的应用
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
list1 = [1, 2, 3, 4, 5 ]
list.reverse()
反向列表中元素
五、背景图片
六、动手实践
1、硬件搭建
通过USB连接线将行空板连接到计算机
2、程序编写
把图片放到同一个文件夹中。
- # -*- coding: utf-8 -*-
- from pinpong.board import *
- from pinpong.extension.unihiker import *
-
- card= ["""Card 1:
- 1 11 21 31 41 51
- 3 13 23 33 43 53
- 5 15 25 35 45 55
- 7 17 27 37 47 57
- 9 19 29 39 49 59""",
- """Card 2:
- 2 11 22 31 42 51
- 3 14 23 34 43 54
- 6 15 26 35 46 55
- 7 18 27 38 47 58
- 10 19 30 39 50 59""",
- """Card 3:
- 4 13 22 31 44 53
- 5 14 23 36 45 54
- 6 15 28 37 46 55
- 7 20 29 38 47 60
- 12 21 30 39 52 *""",
- """Card 4:
- 8 13 26 31 44 57
- 9 14 27 40 45 58
- 10 15 28 41 46 59
- 11 24 29 42 47 60
- 12 25 30 43 56 *""",
- """Card 5:
- 16 21 26 31 52 57
- 17 22 27 48 53 58
- 18 23 28 49 54 59
- 19 24 29 50 55 60
- 20 25 30 51 56 *""",
- """Card 6:
- 32 37 42 47 52 57
- 33 38 43 48 53 58
- 34 39 44 49 54 59
- 35 40 45 50 55 60
- 36 41 46 51 56 *"""]
-
- import time
- from unihiker import GUI #导入包
- gui=GUI() #实例化GUI类
-
-
- img = gui.draw_image(image='猜一猜.png')# 显示初始背景图为猜一猜
- b=[1,2,3,4,5,6]
- i=0
- s=0 #最后显示你猜的数字
- info_text = gui.draw_text(x=20, y=20, text=card[i])
-
- info_text1 = gui.draw_text(x=20, y=180, text='''你心中想的数字,
- 在卡片中吗?
- 在选A,不在选B,
- 见证奇迹,
- 我知道你所想!''')
-
- Board().begin() #初始化
-
- while i<=5:
-
-
- if button_a.is_pressed() == True: #判断按钮是否被按下
- print("按钮A按下")
- b[i]=1
- print(b[i])
- info_text1.config(text='''有这个数字?
- 有选A,没有选B''')
-
- time.sleep(1)
- print(b)
- i=i+1
- print(i)
- if(i==6):
- break;
- info_text.config(text=card[i])
-
-
-
- if button_b.is_pressed() == True: #判断按钮是否被按下
- print("按钮B按下")
- b[i]=0
- print(b[i])
- info_text1.config(text='''有这个数字?
- 有选A,没有选B''')
- time.sleep(1)
- print(b)
- i=i+1
- print(i)
- if(i==6):
- break;
- info_text.config(text=card[i])
-
- s=b[5]*32 + b[4]*16 + b[3]*8 + b[2]*4 + b[1]*2 + b[0]*1
-
- b.reverse() #列表逆序输出二进制顺序数字;
- print("Binary answer:",b)#你想的数字的二进制形式;
- print("The number is:", s)
- info_text1.config(text='''你心中想的数字,
- 是:''')
- info_text3 = gui.draw_text(x=20, y=240, text=s)
- while True: # 循环
- time.sleep(10) # delay1秒
复制代码
3、程序运行
STEP1:远程连接行空板
(1) 确认板子处于连接且开机状态
(2) 开启远程连接终端
(3) 连接行空板
[size=0.83em]WedAugust-202208244269..png (31.43 KB, 下载次数: 0) [color=rgb(153, 153, 153) !important]4 天前 上传
(4)运行程序观察效果
每出现一次卡片,按A,B键选择自己想的数字是否在卡片中。
总结:
感谢官方交流群的热心朋友的帮助,基础知识在具体应用中非常重要,中间很多基础知识的细节,需要进一步的练习和熟悉。否则具体应用中,会遇到各种问题,影响项目实施进度。
|