Advertisement
MARSHAL327

Untitled

Sep 23rd, 2024
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function getColorForScore(score) {
  2.     const red = [255, 0, 0];    // Красный
  3.     const yellow = [255, 255, 0]; // Желтый
  4.     const green = [0, 255, 0];  // Зеленый
  5.  
  6.     let startColor, endColor, factor;
  7.  
  8.     if (score <= 3) {
  9.         // От 0 до 3 — красный
  10.         startColor = red;
  11.         endColor = yellow;
  12.         factor = score / 3; // Интерполяция от красного к желтому
  13.     } else if (score <= 6) {
  14.         // От 4 до 6 — желтый
  15.         startColor = yellow;
  16.         endColor = green;
  17.         factor = (score - 4) / 2; // Интерполяция от желтого к зеленому
  18.     } else if (score <= 10) {
  19.         // От 7 до 10 — зеленый
  20.         startColor = green;
  21.         endColor = green; // Зеленый остаётся зелёным
  22.         factor = (score - 7) / 3; // Плавное достижение максимума
  23.     }
  24.  
  25.     return interpolateColor(startColor, endColor, factor);
  26. }
  27.  
  28. function interpolateColor(startColor, endColor, factor) {
  29.     if (factor > 1) factor = 1;
  30.     if (factor < 0) factor = 0;
  31.  
  32.     const result = startColor.slice();
  33.  
  34.     for (let i = 0; i < 3; i++) {
  35.         result[i] = Math.round(result[i] + factor * (endColor[i] - startColor[i]));
  36.     }
  37.  
  38.     return `rgb(${result[0]}, ${result[1]}, ${result[2]})`;
  39. }
  40.  
  41. // Пример использования:
  42. const score = 5; // Текущие баллы
  43. const currentColor = getColorForScore(score);
  44. console.log(currentColor); // Выведет цвет для текущего балла
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement