矢印がバラバラに
int[] x = new int[9]; int[] y = new int[9]; float[]speedX = new float[9]; float[]speedY = new float[9]; color[]c=new color[9]; int a=5; int b=5; void setup() { size(700, 800); colorMode(HSB, 360, 100, 100); background(0, 0, 0); x[0] = 0; y[0] = 0; x[1] = 20; y[1] = 20; x[2] = 40; y[2] = 40; x[3] = 60; y[3] = 60; x[4] = 80; y[4] = 80; x[5] = 60; y[5] = 80; x[6] = 40; y[6] = 80; x[7] = 80; y[7] = 60; x[8] = 80; y[8] = 40; speedX[0]=a; speedY[0]=b; speedX[1]=a; speedY[1]=b; speedX[2]=a; speedY[2]=b; speedX[3]=a; speedY[3]=b; speedX[4]=a; speedY[4]=b; speedX[5]=a; speedY[5]=b; speedX[6]=a; speedY[6]=b; speedX[7]=a; speedY[7]=b; speedX[8]=a; speedY[8]=b; c[0]=color(random(360), 100, 100); c[1]=color(random(360), 100, 100); c[2]=color(random(360), 100, 100); c[3]=color(random(360), 100, 100); c[4]=color(random(360), 100, 100); c[5]=color(random(360), 100, 100); c[6]=color(random(360), 100, 100); c[7]=color(random(360), 100, 100); c[8]=color(random(360), 100, 100); stroke(0, 0, 100); } void draw() { int i; //background(0, 0, 0); //fill(0, 0, 0, 5); //rect(0, 0, width, height); for (i = 0; i < 9; ++i) { x[i] += speedX[i]; y[i] += speedY[i]; if (x[i] <= 0 || x[i] >= width) { speedX[i] *= -1; //speedX[i] *= random(0.3, 1.1); speedX[i]=random(-5, 5); //speedY[i] *= speedY[i]+random(0.9, 1); } if (y[i] <= 0 || y[i] >= height) { speedY[i] *= -1; //speedX[i] =speedX[i]+random(0.9, 1); speedY[i]=random(-5, 5); //speedY[i]*=random(0.3, 1.1); } //if (x[i] > width) { // x[i]=width; // speedX[i]=speedX[i]+1; //} //if (x[i] <0) { // x[i]=0; // speedY[i]=speedY[i]+1; //} //if (y[i] > height) { // y[i]=height; // speedX[i]=speedX[i]+1; //} //if (y[i] < 0) { // y[i]=0; // speedX[i]=speedX[i]+1; //} fill(c[i]); ellipse(x[i], y[i], 20, 20); } }
昨日は矢印がそのまま動いていったが、今回は矢印で動いていくけどぶつかるとバラバラになる。あと、矢印の方向に進ませることにもした。しかし、size(a,a)の正方形になると、左端から右端から移動するだけなので長方形にしてます。
また、昨日からの改善点はifの条件分岐に=を足した。他はアンコメントしてたところをコメント化したり。ずっとx=0の一直線やy=0の一直線の所をうろうろしていて改善したいと思っていたらこうなった。ちょっとしたことで変わるんだなぁ。シンプルだけどしばらく悩んでたところだから、ちょっと悔しい。