Учу Си (наконец-то серьёзно!).
Написал для себя некую программу движения точки к случайным координатам.
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "graphics.h"
int set_pixel(int x, int y, int color) {
//int x2 = x +5, y2 = y +5;
if(getpixel(x,y) != color) {
/*setcolor(color);
rectangle(x,y,x2,y2);
floodfill(x+1, y+1, color);*/
putpixel(x,y,color);
return 1;
}
else { return 0;}
}
int rand(int N) { return random() % N +1; }
int main() {
int a, x_to, y_to, tt = 0, i;
int x = 50, y = 50, x_old = x, y_old = y;
int sl_x = x, sl_y = y;
int gd,gm=VGAMAX; gd=DETECT;
initgraph(&gd,&gm,NULL);
set_pixel(x, y, 15);
x_to = rand(500);
y_to = rand(500);
// отметим точку, куда бежать
set_pixel(x_to,y_to, 4);
delay(100);
for(i=0;tt<=50;i++) {
// получаем новые координаты
if(x > x_to) { x--; sl_x = x +1;}
if(x < x_to) { x++; sl_x = x -1; }
if(y > y_to) { y--; sl_y = y +1; }
if(y < y_to) { y++; sl_y = y -1; }
// затираем старую точку
set_pixel(x_old, y_old, 0);
//сразу рисуем новую
set_pixel(x, y, 15);
putpixel(sl_x,sl_y, 15);
// новые значения становятся старыми
x_old = x;
y_old = y;
delay(10);
// если точка достигнута в обоих случаях, то меняем цель
if(x == x_to && y == y_to) {
tt++;
x_to = rand(500);
y_to = rand(500);
set_pixel(x_to,y_to, 4);
}
}
scanf("%d",&a);
return 0;
}
Функция rand() даёт число в промежутке [0; N-1]. Завязана с random();
Запускаю программу 5 раз подряд и вижу идентичный рисунок. Где же тут случайное число, если они всё время повторяются?