Показать сообщение отдельно
  #8 (permalink)  
Старый 18.12.2013, 19:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,120

Zemsky,
Вариант...
Сообщение от Zemsky
Чтобы значение угла поворота квадрата не повторялось подряд
<!DOCTYPE html>

<html>
<head>
  <title></title>
  <meta charset="utf-8">
</head>

<body>
  <canvas id="myCanvas" width="400" height="400"></canvas> <script>
  var a = 0;

  // Первое объявление переменных для проверки неповторения значения q
  var q = 0;
  var qold = 0;
  var b = setInterval(function () {
    var canvas = document.getElementById("myCanvas");
    var context = canvas.getContext("2d");
    // Размеры квадрата.
    var rectWidth = 40;
    var rectHeight = 40;
    // Сохранение
    context.save();
    // Очистка холста
    context.clearRect(0, 0, canvas.width, canvas.height);
    // Смещение начала осей координат в центр фигуры
    context.translate(canvas.width / 2 + Math.round((Math.random() * 100) - 50), canvas.height / 2 + Math.round((Math.random() * 100) - 50));


    // Алгоритм поворота квадрата с проверкой неповторения значения q

    // Расчет угла поворота по часовой стрелке

    do {
        q = Math.floor((Math.random() * 10) / 3) * 0.5
    } while (q == qold)

    // Поворот
    context.rotate(Math.PI * q);
    qold = q;

    // Рисование квадрата
    context.fillStyle = "#ff0000";
    context.fillRect(0, 0, rectWidth, rectHeight);
    // Вставка символа
    context.font = "30pt Calibri";
    context.textAlign = "center";
    context.fillStyle = "#0000ff";
    context.fillText("\u2603", 20, 33);
    a++;
    if (a == 50) {
        clearInterval(b)
    };
    // Восстановление
    context.restore();
  }, 1000);
  </script>
</body>
</html>
Ответить с цитированием