ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-(如何操作)使用ENUM进行扑克定位

2019-12-08 03:03:01  阅读:240  来源: 互联网

标签:poker enums java


假设我创建了以下类:

public enum Position {

   Dealer(1), //1
   SB(2),     //2
   BB(3),     //3
   UTG(4),    //4
   UTG1(5),   //5
   UTG2(6),   //6
   UTG3(7),   //7
   HJ(8),     //8
   CO(9);     //9

   //Constructor
   int code;

   Position(int code) {
     this.code = code;
   }
}

如何使用括号中的数字操作ENUM?
例如,在我的扑克桌课程中,我发起了新玩家.每个玩家都通过位置参数.
所以最初

player[1].getPosition() = Dealer  
player[2].getPosition() = SB  
player[3].getPosition() = BB   
etc etc etc 

移交结束后,所有位置都需要移一.
    因此玩家[1]需要拥有CO(9)位置.
    玩家[2]需要拥有Dealer(1)的位置.
    玩家[3]需要拥有SB(2)位置.
    等

我知道我可以使用一个循环遍历数字1到9的for循环,但是如何基于PositionENUM中的整数访问位置?

编辑:
我已经有了吸气剂和吸气剂.

    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }

然而,接球手和接球手并不能为我提供每轮比赛中正确改变球员位置的机会.

在每个下注回合之后,我需要更改每个玩家的位置,因此我需要弄清楚如何在每个下注回合之后移动每个玩家的ENUM位置.

解决方法:

可以根据其代码值选择一个枚举实例.您可以使用静态Map< Integer,Position>去做这个.唯一的陷阱是必须将其容纳在静态内部类中:

public enum Position {

    ...

    Position(int code) {
        this.code = code;
        MapHolder.BY_CODE.put(code, this);
    }

    private static class MapHolder {
        private static final Map<Integer, Position> BY_CODE = new HashMap<Integer, Position>();
    }

    public static Position findByCode(int code) {
        return MapHolder.BY_CODE.get(code);
    }

我还建议委派将下一个职位枚举到枚举本身的逻辑.只需将此方法添加到Position枚举即可:

public Position nextPosition() {
     return findByCode((this.code + 1) % Position.values().length);
}

然后,您的客户端代码可以简单地运行:

for (Player player : players) {
    player.setPosition(player.getPosition().nextPosition());
}

标签:poker,enums,java
来源: https://codeday.me/bug/20191208/2088503.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有