PDA

Просмотр полной версии : Программа жеребьевки для сетевой Civ5



alxtskv
04.09.2013, 14:46
2 Rid (http://www.civfanatics.ru/threads/9743-Анализатор-сейвов-Civ5-(Analyzer-saves-civ5)?p=429207&viewfull=1#post429207)
Программа жеребьевки:

6822

6824

Версия 1.01 (http://www.civfanatics.ru/threads/10897-Программа-жеребьевки-для-сетевой-Civ5?p=429489&viewfull=1#post429489)

Версия 1.02 (http://www.civfanatics.ru/threads/10897-Программа-жеребьевки-для-сетевой-Civ5?p=431234&viewfull=1#post431234)

Snake_B
04.09.2013, 15:21
2 Rid
Программа жеребьевки:

ну... сделай скриншотик то.... прикрепи...

AFro
04.09.2013, 15:54
2 Rid
Программа жеребьевки:
Предложение по "оптимизации" программы (от стороннего наблюдателя) - воткнуть в интерфейс чекбокс "Одинаковые нации".

Пояснение: По умолчанию программа генерирует для каждого игрока игровую нацию, при этом (если я правильно понял) одна и та же нация не достанется разным игрокам. Игра позволяет проводить партию, в которой несколько игроков могут играть одинаковыми нациями. Предлагаю обеспечить опциональную возможность реализации этого программой жеребьевки.

alxtskv
04.09.2013, 21:03
Предложение по "оптимизации" программы (от стороннего наблюдателя) - воткнуть в интерфейс чекбокс "Одинаковые нации".
Сделано.
6784

Гость
04.09.2013, 22:16
насколько "честен" алгоритм генерации случайных чисел :bayan:

pioner
04.09.2013, 22:24
насколько "честен" алгоритм генерации случайных чисел :bayan:
После фразы знак вопроса или иронии?

Гость
04.09.2013, 23:38
это типовой взмык на защите лабы по rnd :bayan: автор поймет, полагаю

alxtskv
05.09.2013, 07:26
насколько "честен" алгоритм генерации случайных чисел :bayan:

Чем слушать оценки автора, лучше самостоятельно оценить насколько честен алгоритм этой программы.

Алгоритм распределения наций:


СписокНаций = ПолучитьСписокПомеченныхНаций();

RND.Init();

Для НомерИгрока = 1 По КоличествоИгроков Цикл

Если СписокНаций.Количество > 0 Тогда

НомерНацииВСписке = RND.GetCode(СписокНаций.Количество);
СтрокаРезультатаЖеребьевки = ИмяИгрокаПоНомеру(НомерИгрока) + " - " + ИмяНацииПоНомеру(НомерНацииВСписке);
Если НЕ РазрешеныОдинаковыеНации Тогда

СписокНаций.УдалитьЗначениеПоНомеру(НомерНацииВСписке);
КонецЕсли;
КонецЕсли;
КонецЦикла;


Код класса генератора случайных чисел:


class TRandom {

float StartCode;

public:

void Init(void);
int GetCode(int Zone);
float GetStartCode(void);
};

void TRandom::Init(void) {

SYSTEMTIME t;
GetLocalTime(&t);
StartCode=t.wMilliseconds*0.001;
}

int TRandom::GetCode(int Zone) {

StartCode=StartCode*37+1;
StartCode=StartCode-(int)StartCode;
return (int)(1+StartCode*Zone);
}

float TRandom::GetStartCode(void) {

return StartCode;
}

p.s.:

это типовой взмык на защите лабы по rnd :bayan: автор поймет, полагаю
Честно говоря не знаком с таким взмыком.
:(
Лабы по rnd никогда не защищал.

Rid
09.09.2013, 14:05
Отлично, спасибо, понравилось!:good:

И очень понравилось, что у программки есть память (запоминает, что было выключено из жеребьевки ранее - посл. сеанс).

Решил еще пару возможных улучшений для программки сказать:

Предложил бы все-таки использовать 2 списка/раздела, которые импортируются из тхт файла.
Где 1-ый раздел автоматом включен длягенерации, а второй (например, идущий в тхт файле к программке через пустую строку) сразу отключен из генерации.
чтобы во второй список игрок самостоятельно мог выносить нации (а список отключенных сразу бросался в глаза).
Я бы сразу во второй список (который без галочки) внес: Испанию, Гуннов, Шошонов, Византию, Полинезию (также, возможно, добавить туда: Карфаген, Швецию, Францию, Бразилию).

Думаю, в случае разделения на 2 раздела/подсписка (участв. и не участв. в жеребьевке) было бы удобнее, да и тогда список наций, наверное, на экране еще стоит и пронумеровать. При этом можно всегда добавить или убрать из 1ого или 2ого списка можно вручную нацию - поставив галочку.

2.Также, еще мне кажется, было бы интересно, если бы была возможность сделать возможность каждому из 2х игроков иметь свой список наций (т.е 2 списка для 2-х игроков). Т.е. один игрок, себе выбрал один список напр. из 8 наций из генерации, а другой игрок себе из 3 наций список составил, которые он будет играть. Функция будет реже использоваться, но я к примеру, со своим пост. партнерам всеми нациями переиграл, при этом учет (кем уже было сыграно) вел в excel'e.

p.s. Но опять же, если есть время на эту правку/и (и она стоит этого времени). Но мне кажется было бы еще удобнее...

В любом случае, огромное спасибо! Жаль, что раньше такой программки не было...

Rid
11.09.2013, 09:00
Кстати, уже вчера программа помогла.
Сперва сделали три рестарта (были Византия, Шошоны и Зулусы, которые договорились заранее если попадут - не играть), потом вспомнили про прогу, сгенерили и сыграли.

alxtskv
13.09.2013, 23:49
Предложил бы все-таки использовать 2 списка/раздела, которые импортируются из тхт файла.
Где 1-ый раздел автоматом включен длягенерации, а второй (например, идущий в тхт файле к программке через пустую строку) сразу отключен из генерации.
чтобы во второй список игрок самостоятельно мог выносить нации (а список отключенных сразу бросался в глаза).
Я бы сразу во второй список (который без галочки) внес: Испанию, Гуннов, Шошонов, Византию, Полинезию (также, возможно, добавить туда: Карфаген, Швецию, Францию, Бразилию).

Думаю, в случае разделения на 2 раздела/подсписка (участв. и не участв. в жеребьевке) было бы удобнее, да и тогда список наций, наверное, на экране еще стоит и пронумеровать. При этом можно всегда добавить или убрать из 1ого или 2ого списка можно вручную нацию - поставив галочку.

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

С дополнительными файлами не очень понятно.
Один раз настроенный список "Вкл/Выкл" сохраняется в файле и сейчас, а потом читается.

А для чего нужно нумеровать нации в списках?


2.Также, еще мне кажется, было бы интересно, если бы была возможность сделать возможность каждому из 2х игроков иметь свой список наций (т.е 2 списка для 2-х игроков). Т.е. один игрок, себе выбрал один список напр. из 8 наций из генерации, а другой игрок себе из 3 наций список составил, которые он будет играть. Функция будет реже использоваться, но я к примеру, со своим пост. партнерам всеми нациями переиграл, при этом учет (кем уже было сыграно) вел в excel'e.

Мне кажется, что так имело бы смысл делать, если число игроков, участвующих в жеребьевке, всегда ограничивалось двумя.
Поскольку число игроков между которыми распределяются нации неограничено, то расположить для каждого по два раздела с нациями на форме не получится,
а делать динамическое обновление списков в зависимости от выбранного игрока - это уже скрывать часть информации и тогда демонстрацию экрана будет сделать затруднительно.

Может для этого случая просто сделать две копии программы, каждую в своей папке и запускать для каждого игрока свою копию? Тем более, что настройки хранятся в папке, где лежит файл программы.

Rid
16.09.2013, 10:18
>Т.е. список наций нужно разбить на две части, каждую из которых на форме отображать в отдельном окошке и добавить кнопки для переноса наций между разделами (окошками)?
Не обязательно 2 окна, можно через пустую строку в одном окне.
Просто когда все вперемешку не очень удобно. А так все отключенные сразу выделены отдельно и бросаются в глаза.

>С дополнительными файлами не очень понятно.
Нет, я думаю файл правильнее один, как и сейчас.
Просто хотелось бы чтобы правки в нем вручную запоминались, там можно задавать список включенных и не включенных наций
(те, что будут или в разных окнах или просто разделены пустой строкой в одной форме).

>Один раз настроенный список "Вкл/Выкл" сохраняется в файле и сейчас, а потом читается.
Не заметил, что уже есть возможность держать настроенный шаблон.
Я думаю, если делать усовершенствования, то что-то экспресс-справки надо сделать.

>А для чего нужно нумеровать нации в списках?
Когда список из 20-30 позиций и плюс не отсортирован, то с ними удобнее (типо: «и 21 номер» и т д)

>Поскольку число игроков между которыми распределяются нации неограничено, то расположить для каждого по два раздела с нациями на форме не получится, а делать динамическое обновление списков в зависимости от выбранного игрока - это уже скрывать часть информации и тогда демонстрацию экрана будет сделать затруднительно.

Может для этого случая просто сделать две копии программы, каждую в своей папке и запускать для каждого игрока свою копию?
Тем более, что настройки хранятся в папке, где лежит файл программы.
Не смысла делать 2 списка, если это сложно. Согласен, что проще сделать 2 или 3 жеребьевки последовательно (всяко это быстрее, чем делать рестарт).

Rid
16.09.2013, 13:46
Да, кстати, думаю было бы здорово в виде опций сделать рандомность параметров:
- типа карты (из списка!)
- варваров (без, обычные, агрессив)
- количество ГГ (от 0/2/4/... до 12).

Eddy
23.09.2013, 16:08
Очень хорошая программка.

alxtskv
25.09.2013, 23:04
Версия 1.02

Доработки:
- Добавлен список "Карты";
- Добавлена возможность произвольного редактирования любого из списков на форме;
- Добавлена автоматическая группировка элементов списков "Карты" и "Нации" по наличию отметки и автоматическая сортировка элементов по алфавиту в пределах группы. Группировка/сортировка обновляется при любом изменении списков;
- Добавлена жеребьевка параметров: "Тип карты", "Варвары", "Количество ГГ";
- Добавлена возможность сохранения содержимого списков "Карты", "Нации" в качестве шаблона, который можно использовать в любой момент для приведения списков в предопределенное состояние.

Snake_B
25.09.2013, 23:22
Версия 1.02

ввиду отсутствия группы для создателей утилит... + http://www.redforce.civfanatics.ru/images/medalki_small/Civ5_great_engineer.png
можешь заливать файлы программы и скриншоты в хранилище файлов (http://www.civfanatics.ru/content/498-%D0%9C%D0%B5%D1%81%D1%82%D0%BE-%D0%B4%D0%BB%D1%8F-%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BC%D0%BE%D0%B4%D0%BE%D0%B2)..
скриншот в первом посте тоже бы обновить...

Rid
26.09.2013, 16:11
да, теперь это Программа !
единственное с ГГ можно чуть получше было сделать (например задать галочками возможные четные варианты), так как
иногда генерируются 12, а карту договорились играть крошечную,
а иногда 0, а хотелось бы выбрать вариант от 6 до 12....
ну это мелочи (так как в этом случае просто можно сделать еще генерацию и взять новое кол-во ГГ из нее)... а так СУПЕР!