javascript - 扑克牌生成器和评估器

标签 javascript node.js algorithm shuffle poker

我确信这个主题已经被覆盖了一些,但我花了几个小时试图解决一些问题,但我找不到足够的资源来解释这个过程。 请注意,我是 JS 新手,仍然依赖教程和代码片段来编写代码。我仍然没有足够的信心从头开始编写代码。

目标:

  1. 在 JavaScript 中,“抽”5 张随机牌

  2. 评估所有可能手牌中的牌的等级

  3. 根据卡片的等级从变量最小/最大返回分数,除非它少于一对。

  4. 最后,能够根据排名(小于、大于或恰好)EG 随机抽取一手牌。返回等级为 100 或更小的手牌。 (可以带回100只不同的手)

例如。最小-最大分数为 10-30。如果出现皇家同花顺,则返回 30(最好的牌意味着最好的分数)。如果输出低两对 (6H 6D 2C 2H 5S),则返回 13。如果输出高两对 (AH AD QC QH 5S),则返回 14。等等。 [这些可能不是准确的分数,但你会明白]

我的研究结果:

  1. 随机抽取:许多应用程序都实现了这一点。到目前为止我最喜欢的是这个教程: http://www.informit.com/library/content.aspx?b=STY_JavaScript_24_hours&seqNum=229 它非常简单并得到结果,但是不提供完整的评估,仅按类别(对、两对、三对等)进行评估。我需要一个评估,能够为拥有两对的两只手的上级给出更高的分数。

  2. 评估者:这有点令人困惑。我找到了一个非常基本的评估器,它使用 javascript:http://jsfiddle.net/subskybox/r4mSF/但这太基础了。没有给我一个完整的排名。我也找到了这个:https://github.com/chenosaurus/poker-evaluator它使用二加二算法和查找表。现在,听起来确实不错,但我对如何将其安装到我的网站或如何使用它感到非常困惑。它说:安装:npm install poker-evaluator,我以前从未听说过。

  3. 将评分转换为分数:应该是相当简单的数学运算。也许:thisRank/maxRank*(MaxScore-MinScore)+MinScore

  4. 按排名抽牌:在任何地方都没有看到任何这样做的方法。不介意看到一些例子或想法。我不确定这可以用二加二扑克评估器来完成。这更像是相反的过程。

现在,感觉我已经接近这一切了,但我并不是 100% 确定如何完全编译它。我觉得我可以使用第 1 节中找到的代码和二加二扑克评估器来实现我所需要的。如果您能阐明'npm install',如果我朝着正确的方向前进,或者如果您知道我可以实现相同目标的其他方法,我会很高兴。

请不要告诉我我必须先尝试自己做这件事,因为如果没有一点指导,我真的不知道如何从头开始做这件事。

最佳答案

我将发布另一个初学者的建议:

  • 用伪代码编写您想要实现的算法(例如,易于阅读的单词)。如果在开始编码之前算法在你的头脑中不清楚,那么它本身就不会变得更清晰。
    你无法编写代码:没关系;
    您希望编写一个程序,而无需详细了解其每一个步骤的低级愿景: 事实并非如此。
    至少我是这么认为的事情。

    我为此案例编写的伪代码示例:

    1-
    create card deck 
      loop on number of cards to be drawn
          -generate random integer and remove corresponding card from card deck
          -add drawn card to hand
      end loop
    
    2-
    check if hand is highest figure and associate rating
         else check if hand is 2nd highest and associate rating
                    else...
    
    OR
    
    get data with all possible hands and search for this hand to retrieve score... 
    (see github repo)
    
    3-
    I did not get 3-
    
    4- If you have data with all hands and their value, you just have 
    to search this data by value instead of searching by hand like in 2-
    

  • 其次,在 github 上寻找代码片段是个好主意;阅读您感兴趣的项目中的 javascript 文件并了解它们的作用。我认为您需要为该特定项目安装node.js,因为它用于导入查找表。只需下载 javascript 文件并将它们包含在您的项目中...不要忘记感谢/感谢作者。

  • 第三,你的问题不是关于精确的难度:这是一个关于如何在你以前从未做过编程的情况下开始编程的问题。我认为 stackoverflow 不是一个合适的地方,但我仍然回答了你的问题,因为毕竟这也是一个帮助论坛。
    我最后的建议是找到一本好书/教程;每本好书中都有一个示例项目可供遵循,您可以在其中开发一个完整的程序并教您基础知识。

    P.S.:如果你真的感兴趣,不要放弃,因为编程可能很困难,但看到东西工作也是非常有值(value)的......

  • 关于javascript - 扑克牌生成器和评估器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24571923/

    相关文章:

    javascript - react native : Attempted to assign to readonly property

    javascript - 如何使用 javascript 显示视觉效果

    node.js - 使用 fluent-ffmpeg 和 NodeJS 来加速转换的视频

    arrays - 在排序数组中找到两个整数,使得 a - b = k

    algorithm - 对于我的数据集,我的模糊搜索方法会比使用 Lucene 更好吗?

    javascript - Mongoose 多重表达错误?

    javascript - 将 classList.toggle 添加到代码片段

    node.js - 在 typescript 中使用带有 Angular 6 的 Node 短 ID 模块

    Node.js 短语法或错误 : Class = new(require (‘./class.js’ ))();

    algorithm - 适合空间的最大图案数