2017-03-09 41 views
0

私はアンドロイド開発の初心者で、私のプロジェクトには4Pics1Wordのようなゲームを作成しています。 どのように私は画像を4つランダム化することができますか?私は4つの画像を持っている必要があり、それらの画像はお互いに関連している必要があります。だから私はそれぞれの画像にの説明を入れてランダム化してから、の制御文を使用して、という4つの画像にすることができると考えています。私は、レベルをランダム化するためにランダム化する必要があります(各アプリケーションは同じ連続レベルを持たないでしょう)。何か案は?ありがとう!android studioの画像ビューで画像のグループをランダム化する方法は?

+0

何か試しましたか?あなたが持っている場合は、あなたの質問にそれを言及し、どのステップを失敗したかを教えてください。私たちの多くはあなたを助けたいと思っていますが、[どうすれば良い質問をしますか](http://stackoverflow.com/help/how-to-ask)をお読みください。とにかく、StackOverflowへようこそ:) – koceeng

答えて

1

私はこのような何かをするだろう:

public void start() { 
    MyImage[] images = /* a list of your images */ 
    ImageView[] imageViews = /* a list of your imageViews (in this case, 4)*/ 
    fillImageViews(/* the desc */, imageViews, images); 
} 




private class MyImage() { 
    Drawable image; 
    String desc; 

    public MyImage(Drawable img, String description) { 
     image = img; 
     desc = description; 

    } 

} 

public void fillImageViews(String desc, ImageView[] views, MyImage[] images) { 
    ArrayList<Integer> usedIndexs = new ArrayList(); 
    Random rand = new Random(); 
    for (ImageView v : views) { 
     while (usedIndexs.size() < images.length) { 
      int index = rand.nextInt(images.length); 
      if (images[index].desc.equals(desc) && !usedIndexs.contains(index)) { 
       //description matches 
       v.setImageDrawable(images[index].image); 
       usedIndexs.add(index); 
       break; 
      } 
      usedIndexs.add(index); 
     } 
    } 
} 

それがないすべてが、それはまだとの記述が一致する場合に使用されているかどうかを確認するために、リストやチェックのランダムな画像を見つけることです。それは彼らがそれらを試し、すべてのImageViewsがいっぱいになるまで、ランダムな画像を引っ張り続けるでしょう。自分で試したことはありませんが、コードはうまくいくはずです。

もう1つのアイデア:同じ記述のすべてのイメージを自分のarraylistにする方が良いかもしれません。そうすれば、あなたはただの絵をarraylistから引っ張ることができます。例:

ArrayList<Drawable> catPics = new ArrayList(); 
//add cat pics here 
ArrayList<Drawable> dogPics = new ArrayList(); 
//add dogs pics here 

//And now you could make function to pull the pictures 
public Drawable getRandomPicture(ArrayList<Drawable> imgs) { 
    return imgs.get(new Random.nextInt(imgs.size())); 
} 
+0

Heyy!どうもありがとうございました!私はそれを試してみよう! :D –

1
// In drwable folder your imagename like img_0,img_1,img_2.....img_N 



    String imagename = "img_" + rnd.nextInt(N);// N is Maximum random number 
    imageView.setImageDrawable(
     getResources().getDrawable(getResourceID(imagename, "drawable", 
      getApplicationContext())) 
     ); 
+0

ありがとう。しかし、私はランダム化する4つの関連する画像のグループを持つ必要があります。ですから、私のゲームには5つのアクティビティがあるとしましょう。それぞれの活動は、お互いに関連している4枚の写真で構成されています。だから私は20枚の写真を使用するつもりです。そして、20枚の写真を5で割ります。すべてのグループには、互いに関連する4枚の写真があります。だから私はどのようにそれらの画像のグループを無作為化するつもりですか? –

+0

同じコンセプトですべてのアクティビティを適用しますが、アクティビティのイメージ名を変更します。例:アクティビティAでのみリンゴイメージを表示したい場合は、imagenameはapple_0..apple_5..andom number 5 ... imagename = "apple_ "+ rnd.nextInt(N) – sasikumar

+0

ありがとう!私もそれを試みます! :D –

関連する問題