Попробовал сделать цикл. Чтобы значение угла поворота квадрата не повторялось подряд. В чем я ошибся?
a=0;
// Первое объявление переменных для проверки неповторения значения q
var q=0;
var qold=0;
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
// Расчет угла поворота по часовой стрелке
if (q==qold) {
q = Math.floor((Math.random()*10)/3)*0.5;}
// Поворот
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("W",20,33);
a++;
if(a==50){clearInterval(b)};
// Восстановление
context.restore();
}, 1000);