#processing
#обработка
Вопрос:
int x = 31;
int y = 31;
int x_dir = 4;
int y_dir = 0;
void setup ()
{
size (800, 800);
}
void draw ()
{
background (150);
ellipse (x,y,60, 60);
if (x 30>=width)
{
x_dir =-4;
y_dir = 4;
}
if (y 30>=height)
{
x_dir=4;
y_dir = 0;
}
if (x 30>=width)
{
x_dir = -4;
}
x =x_dir;
y =y_dir;
println(x,y);
}
Привет,
Я должен создать эту программу в processing, которая создает анимацию шара, движущегося по шаблону Z (сверху слева направо, по диагонали сверху справа налево, а затем прямо снизу слева направо), который затем возвращается назад по тому же пути, по которому он пришел. Хотя у меня есть код, написанный для прямого направления, я не знаю, какие 2 оператора if или else мне нужно написать для программы, чтобы на основе одного условия она продвигалась вперед, а на основе другого условия она возвращалась назад, и это будет продолжаться до тех пор, пока не завершится. Если я смогу определить, какие два оператора if мне нужно написать, все, что мне нужно сделать, это скопировать и поменять местами знаки x_dir и y_dir в прямом цикле.
Ответ №1:
Существует множество различных способов, которыми вы можете это сделать.
Один из подходов заключается в отслеживании того, в каком «режиме» вы находитесь. Вы могли бы сделать это, используя int
переменную, которая 0
используется, когда вы находитесь на первой части пути, 1
когда вы находитесь на второй части пути и т.д. Затем просто используйте if
оператор, чтобы решить, что делать, как переместить мяч и т.д.
Вот пример:
int x = 31;
int y = 31;
int mode = 0;
void setup ()
{
size (800, 800);
}
void draw ()
{
background (150);
ellipse (x, y, 60, 60);
if (mode == 0) {
x = x 4;
if (x 30>=width) {
mode = 1;
}
} else if (mode == 1) {
x = x - 4;
y = y 4;
if (y 30>=height) {
mode = 2;
}
} else if (mode == 2) {
x = x 4;
if (x 30>=width) {
mode = 3;
}
} else if (mode == 3) {
x = x - 4;
y = y - 4;
if (y-30 < 0) {
mode = 2;
}
}
}
Как я уже сказал, это только один из способов решения проблемы, и есть некоторые очевидные улучшения, которые вы могли бы внести. Например, вы могли бы сохранить скорости перемещения и условия, которые изменяют режим, в массиве (или, что еще лучше, в объектах) и избавиться от всех if
операторов.