Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
26.03.2008 12:46

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Виртуальные игральные кубики

Недавно написал маленькую, но полезную прогу, называется "Игральные кубики". Смысл программы, в следующем: вы выбираете кол-во кубиков от 1 по 20. И бросаете кубики.

Данная версия основана на рандоме, но усчетом факторов реального броска кубиков.

Данную прогу остается улучшить применив еще эврестический подход, для наиболее точно имитации броска игральных кубиков.

Скачать можно на этой странице: http://lasoftgame.ru/downloads.php?cat_id=5

З.Ы.
Знаю, что вы можете сказать: "Нечего страдать фигней" и т.д. Но лучше использовать электронную версию кубиков, чем постоянно искать реальные.

Неактивен

0    0    #2
27.03.2008 10:07

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

Вы все правы, когда говорите про RND, но предлагаемые варианты не удобны. Hind, а где ты увидешь на кубиках дубль, если у тебя только одна цифра будет?

.Net Framework 2.0, эта вещь с появлением Vist-ы скоро станет нормальным явлением, поэтому не вижу смысла писать на чем-нибудь другом для Windows. Прошу для обсуждения .Net Framework заводить другую тему, а не сорить здесь. smile

Korwin, эту херотен можно скачать с сайта MS или найти в журнале "Игромания" выпуск март 2007 (я покупал с двумя DVD), короче, там есть .Net Framework 3, вот его и ставь. Только работать он будет под Windows XP/Vista, ну а вторая включет в себя все предыдущие версии ОС и XP.

Смотрите на скриншот:http://lasoftgame.ru/images/GameCubes.JPG





Код алгоритма:

Код:

            //Очистка от устаревших сообщений
            panel.Text = "";
            //определяет случайное кол-во раз 
            //переворачивания игрального кубика
            Random rnd1 = new Random();
            //определеяет случайную грань игрального кубика
            Random rnd2 = new Random();
            //----------
            //кубик или несколько кубиков перед выдачей случайной грани
            //всегда переворачиваются в среднем от 10 до 30 раз. Номер грани 
            //соответствует выпавшему случайному числу.
            //Каждый кубик имеет шесть граней, поэтому произведение кол-ва 
            //на 6 и использование рандома от такого максимума не может дать
            //точно иммитации броска кубика
            //Т.к. кубиков может быть несколько, то у каждого может выпасть число 
            //принадлежащее отрезку [1,6], поэтому нужно бросать каждый кубик отдельно.
            //Также каждый кубик падая вместе с остальными, поворачивается разное кол-во раз
            //Учитывая все эти факторы можно в достаточной мере смоделировать реальный бросок кубика.
            //Что и делает данный алгоритм.
            //----------
            //массив кол-в переворотов кубиков до выпадения случ. числа
            int[] KolvoPerev = new int[(int)Cub.Value];
            //Т.о. обеспечиваем имитацию разного падения кубиков, 
            //т.е. каждый кубик переворачивается разное кол-во раз
            for (int i = 0; i < (int)Cub.Value; i++)
                  KolvoPerev[i] = 10 + rnd1.Next(20);
            //массив случ. чисел кубиков
            //Cub.Value - это выбранное кол-во кубиков
            int[] RandomChislo = new int[(int)Cub.Value];
            //сумма случ. чисел
            int SummRandomChislo = 0;
            //бросание кубиков
            //бросает каждый кубик по очереди и прибавляет его число
            //к сумме остальных.
            for (int i = 0; i < (int)Cub.Value; i++)
            {
                //бросаем кубик
                for (int j = 0; j <= KolvoPerev[i]; j++)
                    RandomChislo[i] = rnd2.Next(6) + 1;
                //суммируем случ. числа
                SummRandomChislo += RandomChislo[i];
            }
            //Вывод на экран информации о результате броска кубиков
            if (Cub.Value == 1)//если один кубик, то выводим только число
                panel.Text = SummRandomChislo.ToString();
            else
            {//иначе выводим числа всех кубиков и общее число.
                for (int g = 0; g < (int)Cub.Value; g++)
                    if (g == (int)Cub.Value - 1)
                        panel.Text += RandomChislo[g].ToString();
                    else
                        panel.Text += RandomChislo[g].ToString() + " + ";
                panel.Text += " = " + SummRandomChislo.ToString();
            }

Чего здесь явно не хватает, так это эвристического подхода. Т.е. учитывать еще и тот фактор, что на кубике цифры случ. образом на гранях определяются только перед броском. Дальше идет расчет случ. поворот в разных направлениях и учет на каких гранях стоят цифры 1, 2, 3, 4, 5, 6.
Если у меня будет учитан и этот фактор, только тогда можно сказать с уверенностью на 90%, все таки есть факторы в реальном броске зависящие только от самого человека и другие, которыми обычно пренебрегают, например сила броска и прочие ухишрения (такое имеет смысл учитывать в игре "Кости"), что данный алгоритм полностью моделирует рельный бросок, как одного кубика, так и нескольких сразу.

З.Ы.
Так, что с интересом посмотрю на проги, которые смогут это все реализовать и как минимум будут работать на PC.tongue

Неактивен

0    0    #3
27.03.2008 10:19

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

Korwin, грубо округляя она весит 30 Кб. Программа реально малехонькая, это видно по ее алгоритму.\

А теперь ко всем, кому не лень парить мозги дискретным распз....(тьфу), ну в общем поняли чем. Не страдайте ребята фигней, а взгляните на приведенный выше алгоритм, как говорится все гениальное просто, но не простое гениально!
З.Ы.
Не обижайтесь на мой пост, но читая ваши посты в теме и глядя на приведенный алгоритм, действительно приходишь к выше описанной фразе (читайте жирно выделенное).wink

Неактивен

0    0    #4
28.03.2008 12:52

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

Hind, ТЗ здесь простое - это написать программу, которая сможет иммитировать бросок кубиков почти не отличимый от реального, к тому же показывать выпавшее число каждого кубика.

Да, алгоритм у вас проще и у меня такой же был, но где вы видели, чтобы куб падал и переворачивался один раз постоянно? Каждый куб при падении переворачивается разное кол-во раз. У меня это учтено и именно поэтому, ваш алгоритм больше похож на генератор случайных чисел, чем на иммитацию.

Для реального кубика - дискретное равномерное распределение.

Заумными словечками и я могу говорить так, что говори проще, не усложняй понимание простых вещей.

Так, что, Hind, ТЗ здесь следующее: требуется сделать наиболее точную иммитацию броска кубиков, выдать выпавшее число на каждом кубике, число на кубиках не может выпадать хаотичным образом.

Говоря проще, если числа расположились при повороте куба 3,5,6, то не может вслед за 3 вылетить 2. Тут нужно учесть расположения чисел на  реальном игральном кубе. Вот тогда иммитация будет почти не отличимо от реального броска кубика. Некоторыми факторыми, а это: куб упал на ребро, сила броска и прочее, можно пренебречь, т.к. это сильно не повлияет на точность иммитации.

З.Ы.
Я уже в принципе додумал не достающую часть, но в выложенном мною алгоритме учтено много факторов потому, что мне нафиг не нужен тривиальный генератор случ. чисел, мне нужен нормальный иммитатор броска игрального кубика. big_smile

Отредактировано Eten (28.03.2008 12:53)

Неактивен

0    0    #5
28.03.2008 20:44

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

Eten, у вас очень большая проблема - вы считаете "заумные слова" ничего не значащими, а между тем это часть терминологии теории вероятностей, имеющая точные и четкие определения и совершенно обоснованно здесь мной используемая.

Когда выложишь нормальный код, тогда и приму твои заверения.

Народ не забывайте, что выложенная версия кубиков, всего лишь предложенный вариант. Мной он видится проще тем, что он учитывает все, что происходит во время броска и полностью моделирует его. Этого достаточно, чтобы нормально иммитировать. Раз уж вы считаете мой алгоритм бредом, то приложите к своим словам аргументы по надежнее пустых слов, а пока обсуждать нечего.

Таким образом, классический игральный кубик о шести гранях - это в идеале простейшее устройство для получения случайного числа из ряда 1..6 с одинаковой вероятностью.

А как ты рандомизируешь момент, когда кубик может катиться или поварачиваться в одном направлении определенное время? В таком случае числа могут быть явно не точными и этим пренебрегать нельзя. А с использованием RND можно учесть этот момент, даже если его немножко идеализировать, но только с его помощью, а не напрямую.

Так, что народ, если хотите поспорить, приводите свой код или просто алгоритм, вот тогда и поговорим. Лично мне, больше интересно обсуждение разных вариантов алгоритмов в данной теме, а не препирательства по типу ты рылом не вышел вот и молчи.mad

Отредактировано Eten (28.03.2008 20:47)

Неактивен

0    0    #6
29.03.2008 19:48

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

(специально частотные диаграммы построил)

(Смотрит на тему) А где ты их выложил? Уж очень интересно посмотреть

А я вот поддержу Eten'а. Согласен, что если требуется получить просто случайное число, то изобретать велосипед не следует. Но если задачей ставится именно достоверная имитация броска набора кубиков, то обычным рандомом не обойдешься.

Каждый игрок имеет право использовать нормальный иммитатор, а не обижаться на слабые места рандома.

К тому же брать физический движок нужен для игры в "Кости", а здесь задача проще, но требования к иммитации теже.

Eten, если уже несколько человек сказали, что ваш алгоритм - бред, может стоит им уже поверить? Если свою платформу вы пишете с таким же подхдом, то я боюсь за ее работоспособность.

1) ТО что, ты находишься в большинстве - это еще не значит, что ты прав.
2) Можно и дом на даче по десять раз переделывать, даже из-за какой-то мелкой не точности. И не важно, что другие крутят у виска - главное конечный результат.

З.Ы.
В общем, позже, выложу последний вариант алгоритма для тех, кому это интересно.

Неактивен

0    0    #7
30.03.2008 19:04

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

Спасибо, Hind. С интересом изучу. Но мне все-таки интересно будет сопоставить свой вариант и твой. Посмотрим как говорится, но за код все равно спасибо. tongue

Неактивен

0    0    #8
30.10.2008 21:12

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

Это немношко оффтоп, но полезно знать для всех.

Во-первых съехидничаю, хоть прога на ваш взгляд бред, но ее все равно продолжают скачиивать, вопрос только почему?!

Во-вторых эта тема реальный пример, пробуждения форумчан к активному действию. Все сидят и думают, как же народ расшевелить, вот и пример. Нашелся дотошный умник написал и выложил, все сразу зашевелились. Учись, Korwin!
З.Ы.
Приношу извенение администрации, но этот пост считаю поучительным для всех нас (и меня в том числе).

Неактивен

0    0    #9
31.10.2008 07:54

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

А чего тут не понятного, у нас в русском сообществе леятельность не такая уж и кипучая. И есть товарищи, которые все думает, как народ расшевелить (например использование платформы, написание новых квестов). А вы посмотрите, какая бурная реакция в теме, так и напрашивается вопрос: "Ребята, а вы чего всполошились то?"
З.Ы.
В общем, кто разбирается в психологии, тот и поймет мой предыдущий пост, тут и объяснять нечего. (итак уже не в тему)

что эта тема делает в разделе "Новости из мира иф"?

А почему бы не новость, я лично не видел нигде на ИЛ информацию о подобного рода программах на ПК, чем тебе не новость.

Уж если человек считает, что это была не новость, то и аргументы должны прилагаться к этому.

Я со своей стороны могу сказать, что никто еще не выкладывал подобной темы и не занимался подобным вопросом! К тому же не смотря на бесмысленность программы для кого-то, она имеет свой маленький смысл: показывать макс.20 кубиков после броска в числовом виде (больше и не нужно, а как она это делает дело десятое). А совать прогу в КПК или телефон, зачем париться?

Еще одним аргументом будет программа Bred3, она является аналагом блокнота, что тоже может быть бесмысленной затеей (название об этом тоже говорит), но она в многократ лучше обычного блокнота, как по возможностям, так и по работе с текстом. Вот тебе и пример бесмысленного, но полезного действия!

А уж если загнуть и по филосовски, то можно явно сказать, что наши с тобой действия в ИЛ - маеться дурью.

З.Ы.
Интересно, а где есть еще программы ПК для броска кубиков без требования к библиотекам?

Неактивен

0    0    #10
31.10.2008 16:58

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Виртуальные игральные кубики

Ну я пока тоже не видел нигде на ИЛ фотографий сисек, результатов последних матчей по крикету и кодов на квейк-3. Надо разместить?

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

Я уже 9 лет пользуюсь консольной программкой под дос которая вообще ничего не требует.

Хм, а как ты ее запускаешь? До сих пор в досе сидишь? Да, а как в инет выходишь. Не-е, скорее всего у тебя стоит виртуальная машина, а она тоже чего-то требует. Да еще плюс остальные проги, с помощью которых ты запускаешь эту прогу.

Не, я тоже люблю в квесты поиграть в досе, но использую DosBox и он тоже весит определенного размера. Так как же, ты умудряешься в наше время запускать дос-консоль на XP? на ней не все дос проги идут, увы. sad
З.Ы.
Может прогу нормальную откопал, но не у всех она есть! wink

Лучше бы еще выложил ее здесь, дабы другие посмотрели.

Отредактировано Eten (31.10.2008 17:00)

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru