×

纸牌游戏经销商开源分享

消耗积分:0 | 格式:zip | 大小:4.09 MB | 2022-12-12

分享资料个

描述

抽象的

你玩纸牌游戏的时候想要有人帮你发牌吗?EV3发牌员可以根据玩家人数和游戏类型发牌。如果你玩二十一点,它会给你每人两张牌。可以通过在颜色传感器前面显示颜色块来添加玩家的数量。每个玩家将按颜色名称分配。玩家只需说“给黄色一张”就可以询问更多卡片。所有控制都可以通过 Alexa 使用语音命令完成。

纸牌游戏经销商功能和命令摘要

直立字符表示 alexa 命令。斜体字符表示可供选择的选项

  • move ( forward,backward) 向前或向后移动庄家。
  • {start, play}(拉米纸牌、二十一点、扑克牌)开始发牌。
  • add ( user, player ) 通过在传感器上显示乐高积木的颜色来添加玩家。
  • {give, deal} ( All , Black, Red, Green, Yellow, Blue, White ) (Numbers) 给玩家一些牌。
  • {start, play, activate} ( reset, replay ) 重置游戏,清除所有玩家设置为默认值(两个玩家)

玩家数量的默认值是两个。球员的颜色是红色和黄色。

手术

要开始游戏,我们发出命令“打开或开始玩纸牌”。默认的用户数是两个。如果我们想改变,我们可以发出命令“添加{玩家或用户}”并将方形乐高积木放在前面的颜色传感器前面。这种颜色将代表您和玩家的顺序。发牌者会记住您的位置,以便以后发牌。如果您使用“添加玩家”,您需要添加所有用户,因为默认用户将被清除。感知到的颜色将通过 _send_event 函数发送给 Alexa。Alexa 将通过用户说话的颜色来响应事件。添加所有用户后,发出命令“start {poker, blackjack, rummy}” 机器将计算牌数并发牌给每个玩家。因为 Alexa 不能永远等待命令。特定时间后,它将超时并退出。如果要下达命令,则需要再次说“打开或开始打牌”。要获得更多卡片,只需说“给 {colorname} {number of cards}”,例如。“给黄二”是指给黄玩家两张牌。如果你想给所有玩家。只需说“Give all one” 如果你想重新启动游戏只需说“开始重置”,所有默认值将被恢复。请注意,玩家人数将重置为两人。如果你想重新开始游戏,只需说“开始重置”,所有默认值将被恢复。请注意,玩家人数将重置为两人。如果你想重新开始游戏,只需说“开始重置”,所有默认值将被恢复。请注意,玩家人数将重置为两人。

 

项目建设

乐高 EV3 构造

对于这个项目,我们使用两个电机。一个用于发牌,另一个用于移动底座。使用了两个传感器,一个用于颜色传感器,用于添加每个玩家。推动传感器用于寻找左右移动的边界。这些值将用于计算每个玩家的角度。我们可以将纸牌游戏庄家的各个部分的创建总结如下。

卡座底座

我们使用一个带齿轮的大型电机来驱动卡座的底座。卡座只是一个简单的矩形盒子,上面附有大齿轮。

poYBAGOSwOWAfAXCAAQhTiQkTrA329.png
卡盒的装备
 

发卡机电机和齿轮

我们使用带齿轮箱的中型电机来驱动发牌轮。发牌轮由两个中型橡胶轮制成。顶部还有一个大橡胶轮推卡。

pYYBAGOSwPiAYhznAAPjQnnlPD0023.png
发卡机电机和齿轮
 
pYYBAGOSwR6Aa_yjAAh7F_AeowQ722.png
顶部用于驱动卡和压卡的轮子
 

剪线钳

在实验中,我们发现很多问题都是电机的线材撞到了后面的推力传感器。所以我们需要一个剪线器来保护刺入传感器的电线。

poYBAGOSwSKAekLhAAGjTqp75LA368.png
 

卡柜

很多时候卡片会出现不止一张。为了解决这个问题,我们推出了如图所示的卡柜,可以调节间隙。这把锁将防止卡出来一张以上。

pYYBAGOSwS6AOjUOAARHLXNDCRE378.png
带调节装置和锁的卡柜
 

限位传感器

我们使用触摸传感器来限制左右移动的边界。这些值将用于计算每个用户的发牌角度。角度等于(左右边界)/玩家人数。在这个项目中,我们只使用一个传感器。由于电机的运动,我们可以确定它是左还是右。卡片托盘侧边加立杆,中间安装触摸感应器。

pYYBAGOSwUGAP2GyAARK1UxAqyw015.png
推压传感器
 
pYYBAGOSwVqAMt8EAAXk8QrN7xM623.png
限制每边的极点
 

EV3控制箱

我们将控制盒分开是因为我们可以将控制盒取出来方便地与其他项目一起使用。控制盒与发牌器只需用简单的接头连接,即可轻松取出。电池耗尽非常快,它会影响电机的功率。然后我们决定添加适配器 9V 插件,接线连接到电池盒。这将节省您的电池费用和电池充电时间。

poYBAGOSwXuAdTk8AARS1YAH-nw963.png
带有附加 9 V 适配器的 EV3 控制箱
 

软件

所有源代码都在https://github.com/wtos03/CardsDealer源代码分为两部分。alexa 技能集的源代码和 ev3 的 python 源代码。要设置 alexa 技能集,忽略创建乐高积木部分,只关注创建 alexa 技能集以及如何将程序加载到 ev3。

我们使用任务 3 和任务 4 作为骨架程序与 alexa 进行双向通信(指令和事件处理程序)。然而,已经添加了许多 pythons 函数来控制电机和读取传感器值。

_init_reset(自我)

将所有参数重置为默认值。玩家数量 = 2 从红色、黄色开始。默认游戏是二十一点,牌数 = 2

_addUser(自己)

通过检查颜色传感器前面的砖块颜色来添加游戏中的玩家。如果颜色传感器被阻挡,您可以发出命令“move {forward, backward) 将托盘从传感器上移开。

_findboundary(自我)

向右移动托盘直到触摸传感器,然后开始向左移动直到再次触摸传感器。这将计算从右到左的度数。该值将用于计算每个玩家移动的程度。

_calcDegree(自己,玩家)

计算每次移动的度数 = (玩家的顺序 x degreeStep) + left margin degreeStep = ( Left margin - Right margin) / 玩家数量的绝对值

_gameinit(自我,游戏)

开始为每位玩家发牌。卡的数量将根据游戏计算。只有拉米纸牌会计算玩家数量的基数(玩家 =2 张牌 = 10,其他牌 = 7),然后再为每个人发牌。这个函数会在开始之前调用_findboundary()。

_dealcard (self, num, player)

发给玩家的牌数。播放器将是我们使用添加用户命令时添加的播放器从0开始的顺序

故障排除和经验教训

  • 无线菜单下没有蓝牙。只需重新启动 ev3,大部分时间它都能正常工作
  • 无法将 Ev3 与 Alexa 配对。在蓝牙菜单下打开显示公共标志。
  • 因为我不是以英语为母语的人,所以 alexa 有时不理解命令。我总是使用谷歌翻译与 Alexa 对话。大多数时候,它比我好。:-)
  • 如果用浮动值移动电机。得到不确定的响应,使用转换为整数将解决这个问题。
  • 对于电机运动,请确保您的电缆足够长且足够高,不会与其他部件碰撞。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !