0
でアニメーション処理を用いたので、その私の最初の日、私はこれを開始するために、ヘルプのビットを必要とするが、私のコードであるイムは、選択ソートを行う:処理ループ
int[] numbers; // Declare array
int currentmin;
int exchange=0;
void setup() {
frameRate(0.1);
size(500,500);
numbers = new int[10]; // Create array with 10 cells
background(105);
for (int i = 0; i < numbers.length; i++) { // random numbers from 1 to 100
int r = int(random(1,100)); // create random numbers
for (int j=0; j<numbers.length; j++) { //make sure not duplications
if(numbers[j]==r)
{r=r+1;}
}
numbers[i]=r; //fill array with random numbers
println(r);
}
fill(255,0,0);
for (int i = 0; i < numbers.length; i++) { //draw rectangles
rect(i*40+10,400 ,35, -numbers[i]);
}
for (int j=0; j < numbers.length; j++){ //set pivot number
currentmin=numbers[j];
for (int i=j+1; i < numbers.length; i++){ //find lowest number in array
if (numbers[i] < currentmin) {
currentmin = numbers[i];
}
}
for (int i=j; i<numbers.length;i++){ //swap pivot with lowest number
if (numbers[i]==currentmin){
exchange=numbers[j];
numbers[j]=numbers[i];
numbers[i]=exchange;
//here
}
}
}
}
void draw() {
background(105);
for (int z = 0; z < numbers.length; z++) {
rect(z*40+10,400 ,35, -numbers[z]);
}
}
あなたはどこで見ることができるように物事をアニメ化させ、最初のループの各繰り返しで長方形の場所が変わるのを見て、ここでコメントしていますが、うまくいきません。私はdraw()を呼び出しました。絶望的にしかしそれは仕事をしなかった...とにかく私は助けを得ることができますか?
私は自分のコードを修正できる単純な編集ではないことを理解しています。私はコンセプトを変える必要があります。 – Rida
@Ridaかなり。基本的に、 'for'ループの中でアルゴリズムを実行する代わりに、' draw() 'の各呼び出しをフレームとして扱う必要があります。これは、時間の経過とともに更新するスケッチレベル変数を使用して行うことができます。基本的に 'for'ループが何をしているのかを再作成しますが、' draw() '関数で再作成します。 –
神はそれが働いていない:/私はそれを理解することができるように私にそれを書くことができますか? – Rida