我正在制作一个简单的游戏,其中两个形状使用计时器重复更改颜色,我有多种颜色可供选择,如何确定两个形状的颜色是否不同?
我的代码:
property variant colorArray: ["#008499","#963A65","#01FF97","#FF4140"] //colors to choose from
Timer{
id: color_switch
interval: 1000; running: true; repeat: true
onTriggered: {
shape1.color = colorArray[Math.floor(Math.random()*3)]
shape2.color = colorArray[Math.floor(Math.random()*3)]
}
}
答案 0 :(得分:2)
一种方法是获得第二种颜色索引,而第二种颜色索引却是如此。请注意,理论上随机索引始终可以相同,因此您永远不会越过while循环:)
onTriggered: {
var index1 = Math.floor(Math.random()*3)
var index2 = Math.floor(Math.random()*3)
while (index1 === index2) {
index2 = Math.floor(Math.random()*3)
}
shape1.color = colorArray[index1]
shape2.color = colorArray[index2]
}
更好的方法可能是选择了color1之后,创建了一个没有color1的数组副本,然后从精简数组中获取了color2 ...
答案 1 :(得分:1)
使shape2抓取新颜色,直到它与shape1不同为止
onTriggered: {
shape1.color = colorArray[Math.floor(Math.random()*3)]
do {
shape2.color = colorArray[Math.floor(Math.random()*3)]
} while(shape1.color === shape2.color);
}