我真的是处理和编程的菜鸟,我无法弄清楚如何随机显示我的图像。
我正在使用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);
}
但我还没找到。
有什么想法? 谢谢!
答案 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';