2016-11-08 5 views
0

デッキの画像からカードを取り出したい。どのように私はそれを個別にすべての単一のカードをダウンロードせずに行うことができますか?私はクラス内の52枚のカードをすべて初期化したくありません。デッキの画像から特定のカードを取り出すにはどうすればよいですか?

今、色と値をランダム化して、ソースフォルダ内の画像を見つけます。しかし、1枚のデッキ画像から1枚のカードを取り出すことは可能ですか?

bild = ImageIO.read(new File("source folder/" + colour + value + ".png"));  
+1

あなたが望むものについての例がなければ助けがありません – ItamarG3

+1

質問は非常に不明です。読んでいる人があなたがしていることを知らないと想像してみてください。これら2つのリンクを読んでから、質問を編集して詳細を入力してください。 http://stackoverflow.com/tourおよびhttp://stackoverflow.com/help/how-to-ask – Tom

+0

アプリケーションを起動するときは、カードイメージをすべて読んでください。こうすることで、カードの画像がすべてメモリに保存されます。必要に応じてアクセスできます。 –

答えて

0

これらはすべて初期化する必要がありますが、手作業で行う必要はありません。

すべての単一のカードを含むイメージを1つ作成して読み込む必要があります。 BufferedImageクラスはあなたにgetSubImage(int x, int y, int w, int h);を提供し、あなたの作品(カード)を返していますBufferedImage.

あなたのデッキの画像をループしながらカードの配列を入力できます。

for(int i = 0; i<4; i++){ 
     for(int j = 0; j < 13; j++){ 
      deckArray[13 * i + j] == image.getSubImage(i * cardWidth, 
                 j * cardHeight, 
                 cardWidth, 
                 cardHeight); 
     } 
    } 

このようなものです。私は4枚×13枚の画像を想定しており、それらの間にスペースはないことに注意してください。 カードを追跡する方法を見つけなければなりません。カードをどのように保管していても、アレイ内のどのカードが使用されているかはわかりません。

これはテストされておらず、100%確信していません。私はすべての数学を正確に行いました。

0

は、あなたはまだ全体のイメージをロードする必要がありますが、あなたが描いているとき、ちょうど

g.drawImage(Image img, int dstx1, int dsty1, int dstx2, int dsty2, int srcx1, int srcy1, int srcx2, int srcy2, ImageObserver observer); 

SRCを使用する(=ソース)の値は、あなたのイメージ内の左上ウント右下の座標になります描画する部分を定義するdst(= destination)値が描画される場所を決定します。

関連する問題