Расчет таблицы рекордов игры - PullRequest
2 голосов
/ 04 сентября 2011

Мне нужно создать функцию / метод (в Python), который вычисляет «таблицу лидеров» высокого балла. Каждый игрок будет играть любое количество раундов игры, получая очки за каждый раунд. Я хочу знать, каков наилучший способ сортировки игроков с самым высоким рейтингом (учитывая счет И количество сыгранных раундов). Возможные оценки для каждого раунда: F, D-, D, D +, C-, C, C +, B-, B, B +, A- и A.

Очевидно, что простое среднее не сработает, потому что не учитывает количество сыгранных раундов. Каков наилучший способ настроить функцию честной сортировки?

РЕДАКТИРОВАТЬ: Я читал некоторые из действительно хороших ответов здесь, и я хочу попытаться прояснить свой вопрос немного. Я хочу, чтобы оба игрока набрали очки И количество раундов, которые они сыграли, учитывались при расчете рейтинга. Это означает, что игрок с 20 B должен иметь более высокий ранг, чем игрок с 5 A. Обычно высокий балл должен отражать общие усилия и умение , «количество сыгранных раундов плюс их счет» означает, что их рейтинг должен быть выше.

РЕДАКТИРОВАТЬ 2: Прочитав ответы, я думаю, что лучший способ сделать это - простая общая сумма очков игроков за все раунды. Я не уверен, какому ответу назначить зеленый чек, потому что вы все были правы.

Ответы [ 2 ]

2 голосов
/ 04 сентября 2011

Есть много способов сделать это. Попробуйте это, например, позвольте F-A быть 0-11 (вы можете сделать свой собственный, однако постарайтесь учесть трудности), так что каждый результат на один выше предыдущего. За каждую игру, в которую вы играете, вы получаете счет (от 0 до 11). Создайте общий счет и добавляйте счет игры каждый раз к общему счету. Таким образом, если человек получает 7 баллов, то есть 77, а человек, получивший 7 баллов, получает 70 баллов, просто сортируйте их соответствующим образом. Конечно, у каждой функции есть свои недостатки. Эта функция не является «лучшей», учитывая, что получение 20 баллов превысит 7 баллов, даже если 7 баллов намного лучше. если вы сможете дать мне более подробную информацию о том, как вы хотите их ранжировать, тогда будет намного проще разобрать алгоритм.

2 голосов
/ 04 сентября 2011

По сути, вы спрашиваете, как мы определяем «хороших» игроков, и это не простая проблема. Как вы упомянули, простая средняя оценка или выбор самой высокой оценки не будет идеальным ответом в зависимости от вашего игрового дизайна.

Я бы рекомендовал вам прочитать о системе рейтинга ELO для шахмат и других ее модифицированных версиях, прежде чем создавать собственную систему рейтинга игроков.

Один простой и возможный способ - вы можете установить окно (например, 10 самых последних игр) и использовать средний счет из окна. Игроки, которые играют меньше игр, чем это окно, находились бы в состоянии размещения. Опять же, это не простая проблема, и она сильно зависит от того, какая у вас игра. Удачи!

[UPDATE]

Я предположил, что ваша игра - игрок против игрока. Если нет, это другая история. Большинство игр просто сохраняют рекорд, независимо от того, сколько раз вы играете в игру, и это будет вашей записью в таблице лидеров. Поскольку вы ничего не говорите о своей игре, я понятия не имею, почему она не будет честной. Как я упоминал ранее, вы можете установить окно для avg. оценка или самый высокий балл. Вы даже можете сбросить таблицу лидеров каждый месяц или удалить игроков, которые не играли в течение недели. Все зависит от вашей игры и от того, что вы хотите. Пожалуйста, помните, что независимо от того, что вы делаете, убедитесь, что правила предельно ясны для игроков, иначе они будут легко расстроены и разочарованы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...