2012-03-04 2 views
1

나는 1 개월 동안 Java를 배웠다. 이번에는 포커 게임을 만들고 싶습니다. 내 프로그램에 대해 두 가지 질문이 있습니다. 누군가가 나를 고칠 수 있기를 바랍니다.Java로 포커 게임을 조작하는 방법은 무엇입니까?

  1. 각 카드의 값은 A가 1 인 경우 왕이 10이지만, 이것이 문자열 배열이라는 것을 알았습니다. 어떻게하면 각 "문자열 값"을 "int 값"으로 제공하여 작업을 수행 할 수 있습니까? (52 카드가 있습니다)

    String[] suits = { "hearts", "spades", "diamonds", "clubs" }; 
    String[] number = {"A","2","3"......}; 
    
  2. 나는이 시스템이 처음 카드를 선택하는 임의의 숫자를 사용할 수 있기를 바랍니다, 그리고 실행 두 번째는, 그것은 이전의 수를 무효화 할 수 있습니다. 이 문제를 파악하기 위해 할 수있는 일이 있습니까? 첫 번째 질문에 대한

답변

2

당신이 분류의이 종류를 위해 고려되어야한다 무엇 열거 형입니다 :

public enum Suit { 
    Hearts, Spades, Diamonds, Clubs; 
} 
public enum Card { 
    A, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K; 
} 

enum에는 원하는 값으로 쉽게 값을 할당 할 수 있으므로이 값을 기반으로 비교할 수 있으므로 상황에 이익이됩니다. 사실, Java 설명서는 introduction to enums에 대한 카드 게임을 제공합니다.

+0

며칠 전, 수업에서 이것을 배웠지 만이 방법에 대한 비디오를 볼 수 있습니다. 나는 그것을 사용하는 방법을 이해하려고 노력할 것이다. 당신의 답변에 감사드립니다 :) . –

1

, 당신은 지도 그 가치에 카드 이름 수 : 두 번째를 들어

Map<String, Integer> values = new HashMap<String, Integer>(); 
values.put("A", 11); 
values.put("2", 2); 
// ... 
values.put("King", 10); 

// lookup a value: 
int kingValue = values.get("King"); 

, 나는 기능 셔플 자바에 의존하는 것입니다.

for (Card card:deck) { 
    System.out.println(card); 
} 
: 단순히 지금

Collections.shuffle(deck); 

당신이 갑판을 반복 할 수있는 데크를 셔플하고 무작위로 카드를 볼 수 있습니다 모든 카드 다음

ArrayList<Card> deck = someMagicMethodToPopulateTheList(); 

와의 목록을 작성

참고 : Card 클래스는 아직 존재하지 않습니다. 나는 간단하게 이름을 고안했다.)

+0

, 나는이 개념을 배운 적이 없다하더라도, 나는이 방법을 알고하려고합니다. 답장을 보내 주셔서 감사합니다 :). –

0

이 당신이 필요로하는 것보다 아마도 더 많은,하지만 당신은 열거와 함께 많은 작업을 수행 할 수 있습니다 사실

package sample; 
import java.util.*; 
enum Rank { 
    joker(new Character('*'),"Joker"),aceLow(new Character('a'),"Ace(low)"),deuce(new Character('2'),"Deuce"),trey(new Character('3'),"Trey"),four(new Character('4'),"Four"),five(new Character('5'),"Five"),six(new Character('6'),"Six"),seven(new Character('7'),"Seven"),eight(new Character('8'),"Eight"),nine(new Character('9'),"Nine"),ten(new Character('T'),"Ten"),jack(new Character('J'),"Jack"),queen(new Character('Q'),"Queen"),king(new Character('K'),"King"),aceHigh(new Character('A'),"Ace"); 
    Rank(final Character c,final String s) { 
     this.c=c; 
     this.s=s; 
    } 
    public static Rank fromInt(int n) { 
     for(Rank r:Rank.values()) 
      if(r.ordinal()==n) 
       return r; 
     return null; 
    } 
    public static Rank fromCharacter(char c) { 
     for(Rank r:Rank.values()) 
      if(r.c==c) 
       return r; 
     return null; 
    } 
    public static Rank[] fromCharacters(final String cards) { 
     final Rank[] rank=new Rank[5]; 
     for(int i=0;i<5;i++) 
      rank[i]=Rank.fromCharacter(cards.charAt(i)); 
     return rank; 
    } 
    public Character toCharacter() { 
     return c; 
    } 
    public String toString() { 
     return s; 
    } 
    public static String toString(final Rank[] rank) { 
     String s=""; 
     for(Rank r:rank) 
      s+=r.toCharacter(); 
     return s; 
    } 
    final Character c; 
    final String s; 
} 
enum Suit { 
    joker(new Character('*'),"Joker"),clubs(new Character('c'/* try character for a real dimond? */),"Club"),diamonds(new Character('d'),"Diamond"),hearts(new Character('h'),"Heart"),spades(new Character('s'),"Spade"); 
    Suit(final Character c,final String s) { 
     this.c=c; 
     this.s=s; 
    } 
    public static Suit fromCharacter(char c) { 
     for(Suit s:Suit.values()) 
      if(s.c==c) 
       return s; 
     return null; 
    } 
    public Character toCharacter() { 
     return c; 
    } 

    public String toString() { 
     return s; 
    } 
    public static String toString(final Suit[] suit) { 
     String s_=""; 
     for(Suit s:suit) 
      s_+=s.toCharacter(); 
     return s_; 
    } 
    public static boolean areSuited(final Suit[] suit) { 
     final int n=suit.length; 
     for(int i=0;i<n-1;i++) 
      if(suit[i]!=suit[i+1]) 
       return false; 
     return true; 
    } 
    final Character c; 
    final String s; 
} 
enum Card { 
    joker(Rank.joker,Suit.joker), 
    aceLowOfClubs(Rank.aceLow,Suit.clubs), 
    aceLowOfDiamonds(Rank.aceLow,Suit.diamonds), 
    aceLowOfHearts(Rank.aceLow,Suit.hearts), 
    aceLowOfSpades(Rank.aceLow,Suit.spades), 
    dueceOfClubs(Rank.deuce,Suit.clubs), 
    dueceOfDiamonds(Rank.deuce,Suit.diamonds), 
    dueceOfHearts(Rank.deuce,Suit.hearts), 
    dueceOfSpades(Rank.deuce,Suit.spades), 
    treyOfClubs(Rank.trey,Suit.clubs), 
    treyOfDiamonds(Rank.trey,Suit.diamonds), 
    treyOfHearts(Rank.trey,Suit.hearts), 
    treyOfSpades(Rank.trey,Suit.spades), 
    fourOfClubs(Rank.four,Suit.clubs), 
    fourOfDiamonds(Rank.four,Suit.diamonds), 
    fourOfHearts(Rank.four,Suit.hearts), 
    fourOfSpades(Rank.four,Suit.spades), 
    fiveOfClubs(Rank.five,Suit.clubs), 
    fiveOfDiamonds(Rank.five,Suit.diamonds), 
    fiveOfHearts(Rank.five,Suit.hearts), 
    fiveOfSpades(Rank.five,Suit.spades), 
    sixOfClubs(Rank.six,Suit.clubs), 
    sixOfDiamonds(Rank.six,Suit.diamonds), 
    sixOfHearts(Rank.six,Suit.hearts), 
    sixOfSpades(Rank.six,Suit.spades), 
    sevenOfClubs(Rank.seven,Suit.clubs), 
    sevenOfDiamonds(Rank.seven,Suit.diamonds), 
    sevenOfHearts(Rank.seven,Suit.hearts), 
    sevenOfSpades(Rank.seven,Suit.spades), 
    eightOfClubs(Rank.eight,Suit.clubs), 
    eightOfDiamonds(Rank.eight,Suit.diamonds), 
    eightOfHearts(Rank.eight,Suit.hearts), 
    eightOfSpades(Rank.eight,Suit.spades), 
    nineOfClubs(Rank.nine,Suit.clubs), 
    nineOfDiamonds(Rank.nine,Suit.diamonds), 
    nineOfHearts(Rank.nine,Suit.hearts), 
    nineOfSpades(Rank.nine,Suit.spades), 
    tenOfClubs(Rank.ten,Suit.clubs), 
    tenOfDiamonds(Rank.ten,Suit.diamonds), 
    tenOfHearts(Rank.ten,Suit.hearts), 
    tenOfSpades(Rank.ten,Suit.spades), 
    jackOfClubs(Rank.jack,Suit.clubs), 
    jackOfDiamonds(Rank.jack,Suit.diamonds), 
    jackOfHearts(Rank.jack,Suit.hearts), 
    jackOfSpades(Rank.jack,Suit.spades), 
    queenOfClubs(Rank.queen,Suit.clubs), 
    queenOfDiamonds(Rank.queen,Suit.diamonds), 
    queenOfHearts(Rank.queen,Suit.hearts), 
    queenOfSpades(Rank.queen,Suit.spades), 
    kingOfClubs(Rank.king,Suit.clubs), 
    kingOfDiamonds(Rank.king,Suit.diamonds), 
    kingOfHearts(Rank.king,Suit.hearts), 
    kingOfSpades(Rank.king,Suit.spades), 
    aceOfClubs(Rank.aceHigh,Suit.clubs), 
    aceOfDiamonds(Rank.aceHigh,Suit.diamonds), 
    aceOfHearts(Rank.aceHigh,Suit.hearts), 
    aceOfSpades(Rank.aceHigh,Suit.spades); 
    private Card(Rank rank,Suit suit) { 
     this.rank=rank; 
     this.suit=suit; 
    } 

    public Rank rank() { 
     return rank; 
    } 
    public Suit suit() { 
     return suit; 
    } 
    public String toString() { 
     if(rank.equals(Rank.joker)||suit.equals(Suit.joker)) 
      return "Joker"; 
     else return rank+" of "+suit+'s'; 
    } 
    public static String toString(final Card[] card) { 
     String s=new String(); 
     for(int i=0;i<card.length;i++) { 
      if(i>0) 
       s+=", "; 
      s+=card[i].toCharacters(); 
     } 
     return s; 
    } 
    public String toCharacters() { 
     return ""+rank().toCharacter()+suit().toCharacter(); 
    } 
    public static Card instance(Rank rank,Suit suit) { // some hack for speed 
     final int n=4*rank.ordinal()+suit.ordinal(); 
     //System.out.println(rank+" "+suit+" "+n); 
     return element[4*rank.ordinal()+suit.ordinal()]; 
    } 
    static Card[] create(int standards,int jokers) { 
     int cards=0; 
     Card card[]=new Card[standards*52+jokers]; 
     for(int i=0;i<standards;i++) 
      for(Suit suit:EnumSet.range(Suit.clubs,Suit.spades)) 
       for(Rank rank:EnumSet.range(Rank.deuce,Rank.aceHigh)) 
        card[cards++]=instance(rank,suit); 
     for(int i=0;i<jokers;i++) 
      card[cards++]=instance(Rank.joker,Suit.joker); 
     return card; 
    } 
    private final Rank rank; 
    private final Suit suit; 
    private static final Card element[]={joker,joker,joker,joker,joker,aceLowOfClubs,aceLowOfDiamonds,aceLowOfHearts,aceLowOfSpades,dueceOfClubs,dueceOfDiamonds,dueceOfHearts,dueceOfSpades,treyOfClubs,treyOfDiamonds,treyOfHearts,treyOfSpades,fourOfClubs,fourOfDiamonds,fourOfHearts,fourOfSpades,fiveOfClubs,fiveOfDiamonds,fiveOfHearts,fiveOfSpades,sixOfClubs,sixOfDiamonds,sixOfHearts,sixOfSpades,sevenOfClubs,sevenOfDiamonds,sevenOfHearts,sevenOfSpades,eightOfClubs,eightOfDiamonds,eightOfHearts,eightOfSpades,nineOfClubs,nineOfDiamonds,nineOfHearts,nineOfSpades,tenOfClubs,tenOfDiamonds,tenOfHearts,tenOfSpades,jackOfClubs,jackOfDiamonds,jackOfHearts,jackOfSpades,queenOfClubs,queenOfDiamonds,queenOfHearts,queenOfSpades,kingOfClubs,kingOfDiamonds,kingOfHearts,kingOfSpades,aceOfClubs, 
     aceOfDiamonds,aceOfHearts,aceOfSpades}; 
} 
+0

죄송합니다. 어디에서이 프로그램에 액세스 할 수 있는지 혼란 스럽습니다. 당신은 말해 줄 수? –

+0

이들은 단지 카드입니다.당신은 카드의 손과 같은 다른 것들을 코딩하고 게임 논리를 찾아야 할 것입니다. –