问题标签 [playing-cards]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6537 浏览

java - AI算法设计:纸牌游戏

目前我正在开发一款名为 Briscas 或 Briscola 的西班牙纸牌游戏,http ://en.wikipedia.org/wiki/Briscola

简而言之,这是一个纸牌游戏,两队 2 人对战(他们看不到对方的手,甚至连队员都看不到),只在开始时洗牌,然后将三张牌交给每个玩家. 以顺时针的方式,每个人都掷出一张牌来试图赢得这一轮。谁赢了那个回合就拿分。然后,仍然以顺时针方式,最后一轮获胜的玩家从牌堆顶部拿一张牌,然后是他/她左边的玩家,依此类推。然后你将继续玩几轮,直到甲板空了。得分多的队伍获胜。

细节:

牌组大小:40 名
玩家:4(2 支球队,每支 2 支)
卡片具有特定价值。(从 0 到 11)

问题

我知道直接的 MiniMax 会很贵。这类纸牌游戏通常使用哪些算法?此外,您可以指出的任何文献也将是有益的。

谢谢

0 投票
5 回答
2089 浏览

python - Python:“列表中的对象”检查和“__cmp__”溢出

这是我第一次遇到堆栈溢出,所以如果格式不适合该网站,我很抱歉。我最近才开始学习编程,从那时起已经过去了将近 2 周。我正在从http://openbookproject.net/thinkcs/python/english3e/index.html学习 python, 直到现在一切都很好,我只是被困了几个小时。我用谷歌搜索了很多,但找不到合适的解决方案来解决我的问题,所以我在这里。

我试图让 OldMaidGame() 运行没有问题,如 CH17 中所述。http://openbookproject.net/thinkcs/python/english3e/ch17.html - 大部分代码也来自上一章。

我发现我无法让 Deck.remove、Hand.remove_matches 或任何其他类型的移除功能工作。经过一些调试后,我发现当程序检查给定卡是否存在于甲板/手/等中时会出现问题。它永远无法匹配。然后在回顾了这一章之后,(在第 16 章中),我发现 'if card in deck/hand/etc: remove(card)' 等查找 . cmp () 来判断卡片是否真的存在于deck/hand/etc中。这是我在电子书的给定代码上添加 'ace' 后的cmp版本。

cmp本身似乎很好 afaik,我可以使用一些技巧来使其更好(例如使用 ace 检查)。所以我不知道为什么牌组/手牌检查中的牌总是返回假。这是给定的删除功能:

拼命想让它工作,我想出了这个:

似乎工作正常,直到我转向其他非工作删除功能:

我又做了一些调整:

卡的删除工作正常,但是当我尝试删除匹配时它会给出错误(x 不在列表中)。另一个我们的左右,我可能也能做到这一点,但是因为我已经感觉我走错了路,因为我无法修复原来的“卡牌/手牌/等”等,我来这里寻找一些答案/提示。

感谢您的阅读,非常感谢您提供的任何帮助:)

--------------------- 编辑 1 * >

这是我当前的代码: http: //pastebin.com/g77Y4Tjr

--------------------- 编辑 2 * >

我已经尝试了这里建议的每一个cmp,但我仍然无法找到带有“in”的卡。

我也试过 card.py @DSM 已经成功使用,我也有错误,比如在 sort 函数中它说它不能比较两个卡片对象。
所以我想知道,也许是 Python 3.2 的问题,或者语法在某个地方发生了变化?

0 投票
4 回答
1658 浏览

c# - c# 将arraylist复制到数组

我想知道如何将 3 个数组列表中的所有信息发送到一个数组。

我在每个数组列表中获得了 1 到 13 的值,现在我想将三个数组列表的所有值复制到数组 [52]。

0 投票
1 回答
1438 浏览

c# - 纸牌游戏设计

我正在创建一个多人纸牌游戏。我有两个主要课程:

  • Player - 代表游戏中的玩家。

  • 经理- 是游戏的经理。它是一个单身人士,拥有主卡组和所有玩家。

我的问题是什么是经理和球员之间关系的最佳设计。我认为经理应该认识所有玩家,但玩家不应该认识他……那是因为如果有一天我想将玩家类用于其他纸牌游戏,那将是非常通用的。

为了使用我的设计,我应该为 Player 类创建许多事件。例如getCardFromTheDeck

什么是最好的设计?

0 投票
6 回答
1255 浏览

encryption - P2P纸牌游戏的密码学

我正在考虑编写一款半流行纸牌游戏的电脑改编版。我想让它在没有中央服务器的情况下运行,并且我正在尝试提出一个方案,使作弊变得不可能而不必信任客户端。

我看到的基本问题是每个玩家都有几堆牌(抽牌,当前手牌和弃牌)。除非游戏规则允许(即抓牌或弃牌),否则任何玩家都不可能改变这些牌堆的组成,玩家也不应该知道他们或对手的牌堆中有什么。

我觉得应该有某种方法可以使用诸如公钥密码学之类的东西来实现这一点,但我一直在我的方案中发现漏洞。任何人都可以建议一个协议或向我指出有关此主题的一些资源吗?

[编辑] 好的,所以我一直在考虑这个问题,这是我想出的一个想法。如果你能在其中戳任何洞,请告诉我。

在洗牌的时候,玩家有一堆牌,他们知道牌的价值。他们获取这些值,将随机盐连接到每个值,然后对它们进行哈希处理。他们记录盐分,并将哈希值传递给他们的对手。

对手连接自己的盐,再次散列,然后将散列洗牌并将牌组传回给原来的玩家。

我相信在这一点上,套牌是随机的,任何玩家都不知道这些值。但是,当抽到一张牌时,对手可以显示他们的盐,让第一个玩家确定原始值是多少,而当出牌时,玩家会显示自己的盐,让对手验证卡值。

0 投票
3 回答
1594 浏览

class-design - 卡牌游戏设计

我只是有一个与设计模式有关的小问题。

考虑可以容纳 Card 对象的 Player 对象。

玩家可以互相赠送卡片。是否有一种面向对象的方法来设计处理此问题的方法?

player1 可以利用其他玩家的方法似乎是不对的。有什么想法吗?例如,所有玩家都应该有一个名为 getCard 的方法吗?

0 投票
2 回答
6448 浏览

opencv - 使用 OpenCV 进行纸牌检测 - 在移动设备上

我和 OpenCV 库的样本一起玩。现在我想自己开始编码。然而,由于图书馆的巨大可能性,我在这里迷失了。

“设置”:假设一张桌子上放着扑克牌。卡片会排成两排,每排的卡片数量不是固定的,但有一定数量的最大值。卡片的大小和形状都一样,但上面的图片不同(不过,并不太复杂)。该代码应该能够检测到每张卡片(图片)和卡片的行。

问题:什么是最好的解决方案?哈尔?...等等。根据运行时,我根本不知道最快的方法是什么。额外的问题:如果我想在移动设备上做这些事情,还有另一种更快的方法吗?

此致

0 投票
2 回答
1910 浏览

javascript - 设计一款可收藏的纸牌游戏

我正在尝试学习如何用 Javascript 编写(虚拟)集换式卡牌游戏(类似于 Magic the Gathering)。我已经阅读了一些关于 MVC 架构和控制器的内容,但这完全是我的头绪(我没有接受过任何正规的 CS 教育),我想知道是否有人有任何好的链接或提示我可以如何了解更多关于代码的信息初学者水平的建筑学。

每张“卡片”会被表示为一个对象,卡片规则的所有逻辑都包含在一个大型游戏引擎函数中,还是许多相互连接的小函数中?

这是一个示例问题:想象有一张牌说:“当这张牌进场时,抓一张牌。” 我应该如何构建游戏来为这种情况做准备,它是如何触发的(最有效的)?卡片会触发游戏引擎,还是游戏引擎会解析每张播放的卡片?

再举一个例子:想象有一张牌,上面写着“你所有的牌都少花 1”。它会永久发挥作用。游戏如何理解在这种情况下它需要改变它的规则?这是一个侦听要播放的卡片并中断成本的功能吗?随着每一轮的结算,这条规则存储在哪里?是否有变量存储游戏的基本规则(全局卡牌成本修正:0;你的卡牌成本修正:0)和其他变量存储卡引入的新规则(你的卡牌成本修正:-1),或者这些由游戏引擎动态创建的变量作为卡片改变规则(你的精灵成本修正:-2)?当一张牌被破坏时,规则如何知道改变,从而消除了这张牌的规则修改?

我需要关于听众和事件的入门吗?(我对它们一无所知,但我不时看到对它们的引用。)你能指出一个好的资源的方向吗?

需要说明的是,我并不是要冗长地要求人们为我手动谷歌;我在黑暗中盲目地摸索,并询问是否有人会指出我要搜索的正确单词或短语。谢谢!

0 投票
2 回答
160442 浏览

java - 如何初始化一个静态数组?

我已经看到了在 Java 中定义静态数组的不同方法。任何一个:

...或仅

或作为List

有区别吗(当然列表定义除外)?

什么是更好的方法(性能方面)?

0 投票
0 回答
525 浏览

erlang - 纸牌游戏的erlang设计

我想和你讨论一个在 erlang 中纸牌游戏的可能实现。我在网上找到的唯一完整示例是OpenPoker

我想自己创建一个,所以这是我想到的实现:

  1. 一个 gen_server 代表一副牌:当开始时创建一副牌(洗牌)。并将其存储在其状态中。提供handle_call (draw_card)

  2. 代表聊天室的 gen_server。在其状态中存储播放器进程的注册名称(例如 player1、player2、luke 等)。导出 handle_cast 加入聊天(默认情况下,当有人成功加入游戏时执行)和一个通过调用代表玩家的 gen_server 上的 handle_cast 向所有用户广播聊天消息。

  3. 一个 gen_fsm 来表示一个游戏实例。有两种状态(wait_join 和 turn)。导出 join/1 加入游戏,play_card/2 和 send_msg/2。一个参数是播放器进程的 pid。

  4. 一个 gen_server 来代表玩家。仅导出 start_link/1 ,其中参数是用于注册进程的名称(在 init 中我调用 gen_fsm 的 join 方法)。有不同的handle_calls(例如get_hand、draw_card)和handle_casts(例如play_card、deliver_msg和send_msg)

  5. 一个 gen_server 来表示主进程。导出(join_game/1 调用 player:start_link/1,send_msg/2 调用玩家的 send_msg,play_card/3 调用玩家的 play_card)。

你觉得这个架构怎么样?

提前致谢