问题是,有没有一种简单的机制方法来知道在不使用条件逻辑的情况下绘制哪些星星(金色,1/2金色,灰色),例如使用指向正确恒星的指针基于简单的数学函数的结果在五星显示中生成星级。
这个问题的重点不是评级系统,而是图形显示
我的评级值为 0-100,浮点数。
例如,在伪代码中:
bitmap1="http://myserver.com/goldstar.png"
bitmap2="http://myserver.com/halfstar.png"
bitmap3="http://myserver.com/greystar.png"
rating=89.003
possible=100
quantized=int(rating/possible)
imagearray=[bitmap1,bitmap2,bitmap3]
for i=0 to 4
selector=<compute which star to draw based on available data>
drawstars(25*i,100,imagearray[selector])
end for
希望这会让你了解我正在尝试做什么。
将显示视为一个刻度,但以整数表示,因此以半星为单位。例如,如果我们有 5 颗星,并且可以显示半颗星,那么我们的实际比例是从 0 到 10。所以,我们需要做的是将原始比例(0 到 100)除以得到 0 到 10。然后我们做整数除以 2。它的商将给我们绘制的完整星星的数量,其余的将给出要绘制的半星的数量(0 或 1)。
不过,您可能想先进行一些四舍五入 - 否则,基本上不可能获得 5 星的评级(例如,即使是 99 的输入分数也只能给出 4.5 星)。
嗯,如果我要试一试...
在 for 循环中,从 i=1 转到 5。
if (rating > i*20){ draw a gold star }
else{
if (rating > (i-1)*20 +10) {draw a half star }
else {draw a grey star}
}
这当然会给你底价