- 締切済み
6枚の画像をランダムに表示させる方法を教えてください
現在do-jaでJavaのアプリケーションを作成しているのですが 6枚の画像をあるエリア内にランダムに配置して表示させたいのですがどういう風にソースを書けば良いか教えてください。 イメージ的にはオセロの盤面に6種類の画像を升目にランダムに配置するものです。 public void start(){ Display.setCurrent(new IAppliCanvas()); } } class IAppliCanvas extends Canvas{ int d1=20; int d2=20; int k1=1; int k2=1; int flgk=1; int flg1=0; int flg2=0; Image img; public static Random rand=new Random(); public IAppliCanvas() { int s=rand.nextInt(6); try { MediaImage mimage; switch(s) { case 1: mimage = MediaManager.getImage("resource:///z-blue.gif"); break; case 2: mimage = MediaManager.getImage("resource:///z-green.gif"); break; case 3: mimage = MediaManager.getImage("resource:///z-orange.gif"); break; case 4: mimage = MediaManager.getImage("resource:///z-prum(1).gif"); break; case 5: mimage = MediaManager.getImage("resource:///z-prum.gif"); break; default: mimage = MediaManager.getImage("resource:///z-red.gif"); break; } mimage.use(); img = mimage.getImage(); } catch(Exception e) { e.printStackTrace(); } } 上記のように記述したのですが同じ画像が全部の升目に表示されてしまいます・・・ ご指南お願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- d-mme
- ベストアンサー率100% (2/2)
一番考えられるのは、リソースファイルから画像を取得するのが、起動時の1回のみで、imgデータに同じデータが入っている可能性があります。 リソースファイルから画像を取得するのが起動時の1回のみでしたら、配列に格納してはいかがでしょうか? Image[] img = new Image[6]; String[] pass = { z-blue.gif, z-green.gif, z-orange.gif, z-prum(1).gif, z-prum.gif, z-red.gif }; for(int i = 0; i < 6; i++){ try { MediaImage mimage; // リソースファイルから取得 mimage = MediaManager.getImage("resource:///"+pass[i]"); mimage.use(); img[i] = mimage.getImage(); } catch(Exception e){} finally{ // メモリー確保 mimage = null; } } 上記の方法で格納したimgの配列を升目の位置にランダムで配置していけばいけると、思います。
- _ranco_
- ベストアンサー率58% (126/214)
升目に表示する部分のコードを見ないと…。 しかし、非標準のクラスばっかしなので、当方には何もわかんないかも。