2017-11-22 18 views
1

私はオブジェクト配列を持っています。配列内の各オブジェクトには、文字列とバッファされたイメージコンポーネントと共に整数コンポーネントがあります。私のコードでは、一意の整数でそれぞれ50枚のカードのデッキを作成します。私は整数値に基づいてカードを見つけるプログラムを作りたいと思う。Java-オブジェクト配列の整数部分を呼び出す

たとえば、整数10がスペードのキングに対応する場合、ユーザーは数字10を入力することができ、プログラムはスペードのキングを見つけてデッキの上部に移動します。その整数値だけに基づいてカードを見つける方法はありますか?ここで

public class Card_Class { 
    private String suit, face; 
    private int value; 
    public BufferedImage cardImage; 

public Card_Class(String suit, String face, int value, BufferedImage card) { 
    this.suit = suit; 
    this.face = face; 
    this.value = value; 
    cardImage = card; 

} 

public static void main(String[] args) throws IOException { 

    Card_Class HeartKing = new Card_Class("Hearts", "King", 13, ImageIO.read(new File("HeartKing.jpg"))); 
    } 
} 

はデッキのコンストラクタです:

public class Deck { 

public static Card_Class[] deckOfCards; 
private int currentCard; 

public Deck() throws IOException { 

    String[] faces = {"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"}; 
    String[] suits = {"Diamonds", "Clubs", "Hearts", "Spades"}; 
    deckOfCards = new Card_Class[52]; 
    currentCard = 0; 

    final int width = 88; 
    final int height = 133; 
    final int rows =4; 
    final int columns = 13; 

    BufferedImage bigImage = ImageIO.read(new File("AllCards.png")); 
    BufferedImage tempCardImage; 

    for(int suit=0;suit <4; suit++){ 

     for(int face=0;face<13;face++){ 
      tempCardImage = bigImage.getSubimage(
        face*width+(face*10)+8, 
        suit*height+(suit*10)+38, 
        width, 
        height); 
      deckOfCards[(face+(suit*13))] = new Card_Class(suits[suit],faces[face],(13*suit+face),tempCardImage); 
     } 
    }  
    } 
+0

あなたの質問は何ですか? – luk2302

+0

整数値に基づいてカードを呼び出す方法を教えてください。 – user8735495

+1

deckOfCardsを配列からHashMapに変更することができます。ここで、カード番号はキー値です。 – OldProgrammer

答えて

1

あなたはこのような何か行うことができます:あなたの述語は、この場合は、与えられたと一致する値であることに、マッチング基準である

private Card_Class find(int number){ 
    Predicate<Card_Class> p1 = c -> c.value == number; 
    return Arrays.stream(deckOfCards).anyMatch(p1); 
} 

を数。

+0

私は述語に慣れていません。私はいくつかの研究を行い、これが私の問題を解決できるかどうかを見ていきます。 – user8735495

+0

述語はJava 8で導入されました、あなたのために働くはずです;) – Stefan

+0

ありがとう@Stefan!ユーザがカードの画像をクリックしてプログラムがそのカードの整数値を見つけるGUIでこれが動作するかどうか知っていますか? – user8735495

関連する問題