我正在研究扑克程序。它应该发5张卡,允许用户最多更换3张卡。然后它将评估该手牌并给出不同手牌的分数,例如:一对= 1点,两对= 2点,依此类推。

我已经写出了我认为应该如何进行的基本概述,但是我真的很难将其真正放入代码中。我有几个问题可以帮助我入门

我是否需要做多个班级,例如:甲板班级,纸牌班级,手牌班级?还是我可以只参加一个扑克课程并拥有单独的方法?

这是我到目前为止所拥有的。

接下来我想我可以做

public class Poker
{
    private int rank, suit;

    private static String[] suits = { "hearts", "spades", "diamonds", "clubs" };
    private static String[] ranks  = { "Ace", "2", "3", "4", "5", "6", "7",
                   "8", "9", "10", "Jack", "Queen", "King" };


我不太确定从这儿去哪里,或者这是否是一个好的开始?有什么建议么?

最佳答案

您绝对应该使用多个类。

将代码分成不同的类的想法并不是要编写多少代码,而是有意义的。在像Java这样的面向对象的语言中,您希望将属于纸牌评估的逻辑与属于将牌堆改组的逻辑与属于常规游戏流程的逻辑等分开。

我不会为您概述如何编写该程序,因为这会花费很长时间,此外,它实际上取决于编写样式时编写的选择的编码方式,但首先,这里有一些想法:


我将用枚举替换您创建的String数组,并同时给定“两个,三个,...”枚举数值,以便更轻松地评估手的力量。
我将创建一个同时包含值和适合枚举的卡片类
我将创建一个包含卡片列表的甲板枚举,并且知道如何将其洗牌
我将创建一个手工评估器,该评估器接受一个列表,其中列表中的每个项目包含5张卡片,然后从最强的牌到最弱的牌对它们进行排序。


我过去曾数次创建扑克游戏(德克萨斯扑克)。这不是一个简单的编码练习,可以通过编写一些方法轻松完成,这绝对是一个挑战,您应该很好地构造代码以使开发更加直观。

编辑:

我还将使Card类实现可比较。能够从最弱的牌到最强的牌对牌进行排序,将使评估整体牌的强度变得容易得多。

10-07 20:12