Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Неработает прога на Processing

KiberDan ) Ученик (95), на голосовании 1 год назад
 float rou = 20; 
float n = 0.01;
float z = 0;
if (z >= 0 && z <= 20) {
z = (rou - n);
}
else{
z = (rou + n);
}
void setup() {
frameRate(120);
size(500, 500);
}
void draw() {
circle( mouseX, mouseY, z);
}
Помогите кто шарит.
Голосование за лучший ответ
Роман Бугаев Ученик (212) 1 год назад
  1. Переменная "z" должна быть инициализирована перед тем, как она будет использоваться в условии if-else. В противном случае, если z < 0, программа попытается выполнить оператор if и произойдет ошибка.
  2. Переменная "z" должна быть обновлена на каждой итерации функции draw(). В настоящее время она обновляется только один раз в начале программы.
  3. Операторы if-else, которые обновляют переменную "z", должны быть частью функции draw(), а не глобальными операторами.
  4. При задании радиуса окружности с помощью переменной "z" следует использовать функцию constrain(), чтобы ограничить его диапазон до [0, 20].

Исправленный код:

float rou = 20;
float n = 0.01;
float z;

void setup() {
frameRate(120);
size(500, 500);
}

void draw() {
if (z >= 0 && z <= 20) {
z = rou - n;
}
else {
z = rou + n;
}
z = constrain(z, 0, 20);
circle(mouseX, mouseY, z);
}
KiberDan )Ученик (95) 1 год назад
Ответ хороший но мне нужно чтоб круг уменьшался потом увеличивался потом уменьшался и так бесконечно, а твоя прога так неробит:

Роман Бугаев Ученик (212) KiberDan ), для того чтобы круг менял свой размер по циклу "уменьшение-увеличение-уменьшение-...", необходимо добавить переменную, которая будет отслеживать направление изменения размера круга. Когда размер достигнет определенных пределов, направление изменения должно измениться. Можно использовать условие if-else для смены направления изменения. Кроме того, можно использовать функцию map() для сопоставления значений переменной "z" с диапазоном [10, 30], где значение 10 соответствует минимальному размеру, а значение 30 - максимальному.
KiberDan )Ученик (95) 1 год назад
float z = rou;
int direction = 1;

void setup() {
frameRate(120);
size(500, 500);
}

void draw() {
z += n * direction;
if (z <= 0 || z >= rou * 2) {
direction *= -1;
}
circle(mouseX, mouseY, z);
}

Вот это работает
Похожие вопросы