我正在努力想出德州扑克的Java手历史课,并想在这里反弹一个想法.
要求是每个动作都被存储,并且有一种有效的方式来遍历每个HandHistory对象(这将代表一个单独的手牌)来匹配常见的"线",就像标准的持续下注(即翻牌前和翻牌前位置的翻牌前加注者)可能是在翻牌后进行检查,然后做出75%的赌注.)
暂时忽略每条线的定义最多是模糊的.作为第一次尝试,我正在考虑如此组织它:
public class HandHistory {
private Integer handnumber;
//in case we saw things at showdown, put them here
private HashMap<Player,String> playerHands;
private String flopCards;
private String turnCard;
private String riverCard;
private HashMap<BetRound,LinkedHashMap<Integer,ArrayList<PlayerAction>>> actions;
}
Run Code Online (Sandbox Code Playgroud)
因此,对于每个betround,我们存储一个链接的hashmap,其键是整数,它是从第一个位置开始为该betround行动的偏移量,因此翻牌前UTG为0.
我们已经按位置顺序生成了动作,因此使用链接的hashmap,这样我们可以稍后很好地迭代并跳过坐在外面的位置等.
每个arraylist将包含该位置在该betround中的行为.大多数情况下,这个数组将有一个元素,但在像limps然后调用的情况下,它将有两个元素.
任何人都可以看到更好的数据结构用于此吗?