在处理

时间:2018-04-22 22:10:41

标签: image random processing show

我真的是处理和编程的菜鸟,我无法弄清楚如何随机显示我的图像。

我正在使用PImage名称img0,img1,img2加载设置中的图像,然后

image("img" + random(3), 0, 0); 

但它不起作用,因为处理等待PImage参数,而字符串加上数字则不然。

我知道,因为必须有一些更好的方式:

int randomNumber = random(3);

if(randomNumber == 0 ){ 
   image(img0,0,0);
} 
if(randomNumber == 1 ){ 
    image(img1,0,0);
} 
if(randomNumber == 2 ){
    image(img2,0,0);
} 

但我还没找到。

有什么想法? 谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用HashMap创建从String键到PImage值的地图。像这样:

HashMap<String, PImage> imageMap = new HashMap<String, PImage>();
imageMap.put("image1", image1);
imageMap.put("image2", image2);

然后从PImage键获取String,您就可以调用get()函数:

PImage image1 = imageMap.get("image1");

您可以在the reference找到更多信息。

顺便说一下,这条线不会编译:

int randomNumber = random(3);

random()函数返回float值。您无法在float变量中存储int值。您必须使用int()函数转换它:

int randomNumber = int(random(3));

如果仍然无法正常使用,请发布一个显示问题的MCVE。祝你好运。

答案 1 :(得分:2)

除了Kevin的好答案,你还可以使用一个数组来存储加载的PImages。

这是一个粗略的例子(当然,你需要调整图像的路径):

const std::vector<const std::string> zodiac {"Monkey", "Rooster", "Dog", "Pig", "Rat", "Ox", "Tiger", "Rabbit", "Dragon"< "Snake", "Horse", "Goat"};
cin >> year;
cout << "The year " << year << " is the year of the " << zodiac[year % zodiac.size()] << '\n';