Mercurial > public > algo-animator
diff main.c @ 11:aaecc9b7ca9c
testing glutTimerFunc
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Fri, 23 Jun 2023 23:08:34 +0100 |
parents | f4e0c266321a |
children | 9ba546527bc2 |
line wrap: on
line diff
--- a/main.c Fri Jun 23 20:24:37 2023 +0100 +++ b/main.c Fri Jun 23 23:08:34 2023 +0100 @@ -7,6 +7,7 @@ #define WINDOW_HEIGHT 1080 #define WINDOW_WIDTH 1920 +#define FPS 60 #define OFFSET 150 #define RECT_WIDTH 5 #define SPACE 1 @@ -22,18 +23,22 @@ // Algos +int step = 0; +int i = 0; void bubble_sort() { - for (int step = 0; step < arr_size - 1; step++) { + if (i < arr_size - step - 1) { + int current = arr[i]; + int next = arr[i + 1]; - for (int i = 0; i < arr_size - step - 1; i++) { - int current = arr[i]; - int next = arr[i + 1]; + if (current > next) { + arr[i + 1] = current; + arr[i] = next; + } - if (current > next) { - arr[i + 1] = current; - arr[i] = next; - } - } + i++; + } else { + step++; + i = 0; } } @@ -141,12 +146,13 @@ render_text(WINDOW_WIDTH - 500, OFFSET - 100, "Press 'r' to reset array"); glutSwapBuffers(); - glFlush(); } -void idle() { +void timer(int value) { + bubble_sort(); glutPostRedisplay(); + glutTimerFunc(1000 / 800, timer, 0); } @@ -191,7 +197,7 @@ setup(); glutDisplayFunc(display); glutKeyboardFunc(keyboard); - glutIdleFunc(idle); + glutTimerFunc(0, timer, 0); glutMainLoop(); free(arr);