【发布时间】:2016-03-10 00:16:31
【问题描述】:
这个 switch 语句可以缩短吗?这是正确的做法吗?很简单的东西,不知道用switch有没有意义。
这部分代码遍历一个数组以获取颜色的整数值(从 0 到大约 10),并使用 allegro 库用这种颜色绘制一个正方形。因此,对于 7 及以上,它将是黑色,对于更少,它将是灰色,对于 1,它将是非常浅的灰色。
for (int j = 0; j < 50; j++) {
for (int i = 0; i < 50; i++) {
int value = cells[i + j * 50];
if(value > 0) {
unsigned char color;
switch (value) {
case 1 :
color = 200;
break;
case 2 :
color = 180;
break;
case 3 :
color = 140;
break;
case 4 :
color = 100;
break;
case 5 :
color = 60;
break;
case 6 :
color = 40;
break;
case 7 :
color = 20;
break;
default: color = 0;
}
al_draw_filled_rectangle(i * 8, 400 - (j * 8), i * 8 + 8, 400 - (j * 8 + 8),
al_map_rgb(color, color, color));
}
}
}
【问题讨论】:
-
看起来
value和color有一个可以用方程式表示的非常简单的关系。 -
哦,对不起,值 = 5 是我的错误。它们只是随机数,想法只是为较低的值制作更多的颜色
-
为什么不建立一个关系,这样你就可以做一个简单的数学表达式而不是一个开关?
标签: c++ switch-statement allegro allegro5