Я не думаю, что ваша проблема связана с типом функции, а со структурой вашей программы.Независимо от того, как вы программируете, одна операция должна предшествовать следующей.Разработчики работают с этим, выполняя каждую операцию объекта (в вашем случае движение лошади) рядом и проверяя позже, чтобы увидеть результат.
Например, давайте воспользуемся сценарием вашей лошади:
while "all horses" are less than "finish"
horse 1 moves
horse 2 moves
horse 3 moves
Я уверен, что вы знакомы с циклами, поэтому мы будем использовать его здесь.Должно существовать определенное расстояние, чтобы определить, когда лошадь закончила.Таким образом, вы захотите продолжить этот цикл, пока все лошади имеют расстояние меньше этого значения.Во время каждой петли значение движения каждой лошади должно изменяться или не изменяться (определяется функцией случайного движения).
Теперь, когда этот цикл закончился, вы можете быть уверены, что хотя бы одна лошадь пересекла финишную черту.Все операции были завершены, и у вас есть набор данных о позициях лошадей.Это тот момент, когда вы проверяете, какие лошади закончили (я говорю лошадей во множественном числе, потому что есть вероятность, что более одной лошади или даже все 3 финишируют одновременно, поэтому обязательно учтите это в конце).
При этом структура вашей программы должна выглядеть примерно так:
while "all horses" are less than "finish"
horse 1 moves
horse 2 moves
horse 3 moves
//movement of horses complete
check and print the horses with a movement value of "finish"