qt - 如何确保两种随机生成的颜色不相同?
问题描述
我正在制作一个简单的游戏,其中两个形状使用计时器反复改变颜色,我有一系列颜色可供选择,如何确保两个形状的颜色不同?
我的代码:
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)]
}
}
解决方案
一种方法是多次获得第二个颜色索引,它是不同的。请注意,理论上随机索引可能始终相同,因此您永远不会超过 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 ...
推荐阅读
- bash - 如何在匹配关键字后将 bash 变量添加到文本文件?
- javascript - 我尝试按照给出的示例使用 JQuery UI 自动完成创建一个对象,但是它目前不起作用
- python - 熊猫选择 to_datetime 的原始格式
- angularjs - 角度请求问题
- node.js - AWS JavaScript/Nodejs Comprehend PII 客户端不能等待?
- r - 如何将使用多个分隔符的奇怪文件类型读入 R?
- or-tools - 使用 or-tools 的 2d bin 打包:AddNoOverlap2D 和 OnlyEnforceIf 给出 MODEL_INVALID
- arrays - 检查数组 D 中是否存在索引
- excel - 在列中搜索文本(如果找到),然后将单元格粘贴到其他工作表
- javascript - 在 Javascript 中,如何从 HTML 中的“select”元素中选择“option”属性?