int size = 50;
int x = size / 2;
int y = size / 2;
// 0:right 1:down 2:left 3:up
int direction = 0;
void setup(){
size(400,400);
}
void draw() {
background(0);
fill(255,255,0);
switch (direction) {
case 0:
right();
break;
case 1:
down();
break;
case 2:
left();
break;
case 3:
up();
break;
}
}
void right() {
arc(x,y,size,size,radians(30), radians(330));
// 右に動かす
x ++;
// 右端に来た → 次回からは下に動かす
if (x >= width - size / 2) {
direction = 1;
}
}
void down() {
arc(x,y,size,size,radians(-240), radians(60));
// 下に動かす
y ++;
// 下端に来た → 次回からは左に動かす
if (y >= height - size / 2) {
direction = 2;
}
}
void left() {
arc(x,y,size,size,radians(-150), radians(150));
// 左に動かす
x --;
// 左端に来た → 次回からは上に動かす
if (x <= size / 2) {
direction = 3;
}
}
void up() {
arc(x,y,size,size,radians(-60), radians(240));
// 上に動かす
y --;
// 上端に来た → 次回からは右に動かす
if (y <= size / 2) {
direction = 0;
}
}
CmludCBzaXplID0gNTA7CgppbnQgeCA9IHNpemUgLyAyOwppbnQgeSA9IHNpemUgLyAyOwoKLy8gMDpyaWdodCAxOmRvd24gMjpsZWZ0IDM6dXAKaW50IGRpcmVjdGlvbiA9IDA7Cgp2b2lkIHNldHVwKCl7CgogIHNpemUoNDAwLDQwMCk7Cn0KCgp2b2lkIGRyYXcoKSB7CgogIGJhY2tncm91bmQoMCk7CiAgZmlsbCgyNTUsMjU1LDApOwoKICBzd2l0Y2ggKGRpcmVjdGlvbikgewoKICAgIGNhc2UgMDoKICAgICAgcmlnaHQoKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSAxOgogICAgICBkb3duKCk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgMjoKICAgICAgbGVmdCgpOwogICAgICBicmVhazsKCiAgICBjYXNlIDM6CiAgICAgIHVwKCk7CiAgICAgIGJyZWFrOwogIH0KfQoKdm9pZCByaWdodCgpIHsKCiAgYXJjKHgseSxzaXplLHNpemUscmFkaWFucygzMCksIHJhZGlhbnMoMzMwKSk7CgogIC8vIOWPs+OBq+WLleOBi+OBmQogIHggKys7CgogIC8vIOWPs+err+OBq+adpeOBnyDihpIg5qyh5Zue44GL44KJ44Gv5LiL44Gr5YuV44GL44GZCiAgaWYgKHggPj0gd2lkdGggLSBzaXplIC8gMikgewogICAgZGlyZWN0aW9uID0gMTsKICB9Cn0KCnZvaWQgZG93bigpIHsKCiAgYXJjKHgseSxzaXplLHNpemUscmFkaWFucygtMjQwKSwgcmFkaWFucyg2MCkpOwoKICAvLyDkuIvjgavli5XjgYvjgZkKICB5ICsrOwoKICAvLyDkuIvnq6/jgavmnaXjgZ8g4oaSIOasoeWbnuOBi+OCieOBr+W3puOBq+WLleOBi+OBmQogIGlmICh5ID49IGhlaWdodCAtIHNpemUgLyAyKSB7CiAgICBkaXJlY3Rpb24gPSAyOwogIH0KfQoKdm9pZCBsZWZ0KCkgewoKICBhcmMoeCx5LHNpemUsc2l6ZSxyYWRpYW5zKC0xNTApLCByYWRpYW5zKDE1MCkpOwoKICAvLyDlt6bjgavli5XjgYvjgZkKICB4IC0tOwoKICAvLyDlt6bnq6/jgavmnaXjgZ8g4oaSIOasoeWbnuOBi+OCieOBr+S4iuOBq+WLleOBi+OBmQogIGlmICh4IDw9IHNpemUgLyAyKSB7CiAgICBkaXJlY3Rpb24gPSAzOwogIH0KfQoKdm9pZCB1cCgpIHsKCiAgYXJjKHgseSxzaXplLHNpemUscmFkaWFucygtNjApLCByYWRpYW5zKDI0MCkpOwoKICAvLyDkuIrjgavli5XjgYvjgZkKICB5IC0tOwoKICAvLyDkuIrnq6/jgavmnaXjgZ8g4oaSIOasoeWbnuOBi+OCieOBr+WPs+OBq+WLleOBi+OBmQogIGlmICh5IDw9IHNpemUgLyAyKSB7CiAgICBkaXJlY3Rpb24gPSAwOwogIH0KfQo=