查看: 1513|回复: 0

当M5StickC遇上UIFLOW系列(八)列表用法(续)—荷官发牌

[复制链接]

该用户从未签到

发表于 2019-9-4 16:23 | 显示全部楼层 |阅读模式
本帖最后由 vany5921 于 2019-9-4 16:42 编辑

上一节介绍了如何进行洗牌或者说随机生成一副扑克牌的操作,本节M5StickC将扮演荷官,从一副card[]中按照序号取出,以便进行后续操作。将牌面以字符串的形式打印在屏幕上显然不够直观,因此我们需要想办法绘制一下屏幕。UIFLOW没法实现过于复杂的交互设计,通过简单的变通,我们可以另想办法。

POKER.jpg POKER的副本.jpg
(1)       (2)
从网上找了一张含有四个花色的图片,假如能将画面切割为图2的形式,需要哪一部分显示哪一部分就可以了,UIFLOW没有提供window的模块,那么我们就将这幅图看做四副图片,哪一部分要显示以哪个图形的左上角坐标为图像坐标去显示,多余部分通过图形遮盖来达到目的。屏幕的刷新率只要够快是看不出来的。(实际测试会有看到的一瞬间)
因此我对画面进行了处理,用两个长方形覆盖多余的显示部分。当然,一般扑克都是显示在两个对角,位置你可以自己调整。

截屏2019-09-0416.41.43.png
通过上一节的验证,确定程序没有问题,因此我将打印部分进行了删除,直接通过屏幕显示牌的花色和数字,这里用到了python里的pop和remove操作,当发完所有的牌操作就结束了。
截屏2019-09-0416.01.18.png

用一个变量post来标记发牌操作,如何触发这个变量的值呢?使用M5StickC的Home(A)按键进行回调。

截屏2019-09-0416.04.12.png

下面具体说一下显示牌面的部分,当按下Home按键时post赋值为真,开始进入判断。先来回忆一下,card[]中存的是52张牌即poker[],每张poker[]又由suit和num组成,所以先从card[]中取出第一个元素poker[],再从poker[]中取出第一个元素suit得到花色,根据花色显示对应的图案,具体图案的绘制就要涉及到坐标的计算,很简单,这不再赘述。接着再从poker[]中取出第二个元素num。至此,我们已经获得了一张牌,由于此牌已经发出,因此要从card[]中移除,同时将post标记为假,等待下次发牌。重复这个过程,直到52张牌全部发出。
截屏2019-09-0416.22.52.png

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

本版积分规则

热门推荐

blinker物联网教程——11、自动灌溉
blinker物联网教程——11
简介[hr] 农业是用水大户,近年来农业用水量约占经济社会用水总量的62%,部分地区高达
求助,st7735显示图片扭曲
求助,st7735显示图片扭曲
前段时间买了个st7735s驱动的0.96tft屏,这两天研究了一下st7735的驱动,在网上找了些
朱雀 是基于ESP32的开源焊台控制器
朱雀 是基于ESP32的开源焊
朱雀 是基于ESP32的开源焊台控制器 本控制器除了控制普通焊台以外,只需通过稍作修改
16度双足机器人舵机驱动板pca9685连接舵机,舵机没反应
16度双足机器人舵机驱动板
各位同为arduino爱好者的大佬们大家好!想请教一下大家有关舵机驱动板pca9685
Arduino IDE 2.0.0 RC3开发STM32遇到的问题
Arduino IDE 2.0.0 RC3开
问题求助: 安装了Arduino IDE 2.0.0 rc3,下载安装了来自stm32duino的库,截图1。然
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表