【问题标题】:How to generate a random image in Java如何在 Java 中生成随机图像
【发布时间】:2016-01-19 15:54:10
【问题描述】:

我正在创建一个骰子游戏,但是我不确定如何随机生成图像,因此结果是随机的。最好的方法是什么,我听说一个数组会很好,但是如果我有一个数组,我是否需要 case 语句。

/When pause completed message sent to callback
class Roll extends TimerTask {
    public void run() {
        handler.sendEmptyMessage(0);
    }
}

//Receives message from timer to start dice roll
Callback callback = new Callback() {
    public boolean handleMessage(Message msg) {
        //Get roll result
        //Remember nextInt returns 0 to 5 for argument of 6
        //hence + 1
        switch(rng.nextInt(6)+1) {
        case 1:
            dice_picture.setImageResource(R.drawable.one);
            dice_picture2.setImageResource(R.drawable.five);
            break;
        case 2:
            dice_picture.setImageResource(R.drawable.two);
            dice_picture2.setImageResource(R.drawable.four);
            break;
        case 3:
            dice_picture.setImageResource(R.drawable.three);
            dice_picture2.setImageResource(R.drawable.five);
            break;
        case 4:
            dice_picture.setImageResource(R.drawable.four);
            dice_picture2.setImageResource(R.drawable.three);
            break;
        case 5:
            dice_picture.setImageResource(R.drawable.five);
            dice_picture2.setImageResource(R.drawable.two);
            break;
        case 6:
            dice_picture.setImageResource(R.drawable.six);
            dice_picture2.setImageResource(R.drawable.one);
            break;
        default:
        }
        rolling=false;  //user can press again
        return true;
    }
};

【问题讨论】:

  • 如果我有一个数组,我是否需要 case 语句 - 不,你只需得到一个介于 0 和数组大小之间的随机数并对其进行索引跨度>
  • 你可以将你的drawables存储在一个数组中,生成一个随机整数,然后获取你的图像索引数组:array[random]

标签: java arrays random


【解决方案1】:

如果您声明一个(或两个)可绘制图像数组(假设 R.drawable 是正确的类型),则不需要 case 语句:

R.drawable[] dice= {R.drawable.one, R.drawable.two, R.drawable.three, R.drawable.four, R.drawable.five, R.drawable.six};
R.drawable[] dice2= {R.drawable.five, R.drawable.four,...};

那么你可以写:

int randomNumber = rng.nextInt(6);
dice_picture.setImageResource(dice[randomNumber]);
dice_picture2.setImageResource(dice2[randomNumber]);

而不是你的开关代码。

根据要求提供返回随机文本的完整工作示例:

import java.util.Random;

public class RandomText {

    String[] texts={"Hello", "World", "Cafe-Babe"};

    public static void main(String[] args){
        RandomText randText = new RandomText();
        randText.performRandom();
    }

    void performRandom(){
        Random rand = new Random();
        printText(texts[rand.nextInt(texts.length)]);
    }

    static void printText(String text){
        System.out.println(text);
    }
}

【讨论】:

  • 是的,你是对的,我没有意识到。我的解决方案是错误的
  • 我可以看一个例子吗?
  • R.drawable 看起来像安卓,如果我是对的,那么R.drawable.xxx 是 int 类型的常量变量。这只是旁注,请随意忽略它。
  • 查看编辑。这不是很好,但你会看到它是如何工作的。而不是 printText 你使用你的方法 setImage
  • 看,我要和这里的每个人打成平手,我还有 8 小时的时间,不知道如何制作这个游戏,谁能帮我解决这个问题,将不胜感激!
猜你喜欢
  • 2020-03-10
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
相关资源
最近更新 更多