PDA

Просмотр полной версии : [Вопрос] Позиция в гонке



BonBon
13.08.2015, 16:18
Ребят, всем привет)
Пишу систему гонок, тут встал вопрос о позициях гонщиков в гонке.
Подскажите как примерно ее можно осуществить?

- Гонка проходит по чекпоинтам

Smile
14.08.2015, 15:58
По мере прохождения чекпоинтов, увеличивай переменную игрока и потом уже узнавай у кого значение переменной больше, тот и первый в позиции.

Daniel_Cortez
14.08.2015, 17:12
Создать 3 массива: в одном будет записываться пройденное кол-во чекпоинтов для каждого игрока, в другом - ID участников гонки, в третьем - время прохождения последнего чекпоинта. При старте гонки в массиве с кол-вом чекпоинтов инициализировать все ячейки нулями, в массиве с временем прохождения чекпоинтов также записать нули (0.00) и в оставшемся массиве записать ID участников. Дальше, когда какой-нибудь игрок пройдёт через чекпоинт, увеличить у этого игрока пройденное кол-во чекпоинтов и отсортировать массив с ID участников по кол-ву чекпоинтов, если у двух игроков кол-во одинаковое - сортировать по времени прохождения чекпоинта.
Сложно, но можно.

NewGreen
14.08.2015, 20:01
Еще вариант:
Создадим:


#define MAX_TOP_PLAYERS 3 // Количество призовых мест
new listOfTopPlayers[MAX_TOP_PLAYERS]; // Массив для хранения ID победителей
new listOfTopPlayersCounter; // Счетчик для массива

Теперь нам понадобится лишь последний (финишный) чекпоинт, там мы запишем трех финалистов
в проверке на последний чекпоинт пишем код:


//...
if(listOfTopPlayersCounter < MAX_TOP_PLAYERS)
{
listOfTopPlayers[listOfTopPlayersCounter] = playerid;
listOfTopPlayersCounter++;
}
//...

Теперь у нас в массиве listOfTopPlayers, хранятся ID первых трех игроков, которые пересекли финиш.

BonBon
14.08.2015, 20:31
Еще вариант:
Создадим:
PHP код:
#define MAX_TOP_PLAYERS 3 // Количество призовых мест
new listOfTopPlayers[MAX_TOP_PLAYERS]; // Массив для хранения ID победителей
new listOfTopPlayersCounter; // Счетчик для массива
Теперь нам понадобится лишь последний (финишный) чекпоинт, там мы запишем трех финалистов
в проверке на последний чекпоинт пишем код:
PHP код:
//...
if(listOfTopPlayersCounter < MAX_TOP_PLAYERS)
{
listOfTopPlayers[listOfTopPlayersCounter] = playerid;
listOfTopPlayersCounter++;
}
//...
Теперь у нас в массиве listOfTopPlayers, хранятся ID первых трех игроков, которые пересекли финиш.

Чуть чуть не то)
Меня интересовал ТОП игроков во время гонки, когда они еще гоняются)

$continue$
15.08.2015, 13:45
Чуть чуть не то)
Меня интересовал ТОП игроков во время гонки, когда они еще гоняются)

Не забывайтесь Вы все таки в SA-MP

Daniel_Cortez
15.08.2015, 14:12
Не забывайтесь Вы все таки в SA-MP
Задача вполне решаема и без изменения её условий. Одно из таких решений я уже описал выше.