2012-03-04 9 views
1

私は1ヶ月間Javaを学びました。 今回は、ポーカーゲームを作りたいと思います。 私のプログラムについて2つの質問があります。 誰かが私にそれを解決するのを助けてくれることを願っています。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"); 

、私は機能をシャッフルするJava に依存していると思います。

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

これは単なるカードです。あなたはカードの手のように他のものをコード化し、ゲームロジックに来なければならないでしょう。 –

関連する問題