×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: Java
Posted by: Shamir Yona
Added: Nov 23, 2015 1:19 PM
Views: 10
Tags: no tags
Implementation of a playing card.
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package c2java;
  7.  
  8. import java.util.HashMap;
  9. import java.util.Locale;
  10.  
  11. /**
  12.  *
  13.  * @author shayzukerman
  14.  */
  15. public class Card
  16. {
  17.     public enum SUIT
  18.     {
  19.         CLUB(1, 'C'),
  20.         DIAMOND(2, 'D'),
  21.         HEART(3, 'H'),
  22.         SPADE(4, 'S');
  23.        
  24.         int numId;
  25.         char charId;
  26.        
  27.        
  28.         SUIT(int id, char charId)
  29.         {
  30.             this.numId = id;
  31.             this.charId = charId;
  32.            
  33.         }
  34.  
  35.         public int getNumId()
  36.         {
  37.             return numId;
  38.         }
  39.  
  40.         public char getCharId()
  41.         {
  42.             return charId;
  43.         }
  44.        
  45.         public static final HashMap<Character, SUIT> ch2kind = new HashMap<>();
  46.         public static final HashMap<Integer, SUIT> numId2kind = new HashMap<>();
  47.        
  48.         static
  49.         {
  50.             for (SUIT k : SUIT.values())
  51.             {
  52.                 ch2kind.put(k.getCharId(), k);
  53.                 numId2kind.put(k.getNumId(), k);
  54.             }
  55.         }
  56.        
  57.         public static SUIT charId2Suit(char charId)
  58.         {
  59.             return(ch2kind.get(charId));
  60.         }
  61.        
  62.         public static SUIT numId2Suit(int numId)
  63.         {
  64.             return(numId2kind.get(numId));
  65.         }
  66.     };
  67.  
  68.     public static final int CARD_NA = 0;
  69.     public static final String ROYAL_FLUSH_CHARS = "TJQKA";
  70.    
  71.     // Memebers of a card:
  72.     int value;      
  73.     SUIT kind;
  74.  
  75.     public Card(int value, SUIT kind)
  76.     {
  77.         this.value = value;
  78.         this.kind = kind;
  79.     }
  80.    
  81.     public Card(String cardIdStr)
  82.     {
  83.         this(cardCh2val(cardIdStr.charAt(0)), SUIT.charId2Suit(cardIdStr.charAt(1)));
  84.     }
  85.  
  86.     @Override
  87.     public String toString()
  88.     {
  89.         return "{" + value + ", " + kind + '}';
  90.     }
  91.    
  92.    
  93.    
  94.     /*************************************************************************/
  95.     /* Statics:                                                              */    
  96.     /*************************************************************************/
  97.    
  98.     /**
  99.      *
  100.      * @param cardCh
  101.      * @return
  102.      */
  103.     public static int cardCh2val(char cardCh)
  104.     {
  105.         int cardValue = CARD_NA;
  106.         int cardIdx;
  107.        
  108.         if (cardCh >= '1' && cardCh <= '9')
  109.             cardValue = cardCh - '0';
  110.         else
  111.         {
  112.             if ((cardIdx = ROYAL_FLUSH_CHARS.indexOf(Character.toUpperCase(cardCh))) >= 0)
  113.                 cardValue = 10 + cardIdx;
  114.         }
  115.         return(cardValue);
  116.     }
  117.    
  118.     public static char cardVal2Ch(int cardValue)
  119.     {
  120.         char cardCh;
  121.        
  122.         if (cardValue >= 1 && cardValue <= 9)
  123.             cardCh = Character.forDigit(cardValue, 10);
  124.         else
  125.             cardCh = ROYAL_FLUSH_CHARS.charAt(cardValue - 10);
  126.         return(cardCh);
  127.     }
  128.    
  129.     public static void main(String[] args)
  130.     {
  131.         Card card = new Card("TD");
  132.         System.out.format("Card: %s\n", card);
  133.        
  134.     }
  135. }
  136.