![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2017
Сообщений: 2
|
Доброго времени суток, уважаемые форумчане.
Я начинающий, вот решил чисто для себя посчитать математически количество попыток для заточки в одной игре. (Дико извиняюсь за невнятное изложение след. условий ![]() Кратко: При удачной заточке +1, При неудачной всегда обнуление. Шанс 75% Код для заточки одного предмета написал, работает. Задумал посчитать, будет ли меньше попыток для заточки нужного предмета, если после каждой успешной его заточки ждать неудачи на других трех предметах, и только после неудачи снова переходить к заточке первого. Собственно код: var enchant = 0; //Изначальная заточка необходимого предмета var chance1: Number; // var chance2: Number; //Переменные для хранения шансов заточки для каждого из четырех предметов var chance3: Number; // var chance4: Number; // var tries = 0; // Изначальное количество попыток button.addEventListener(MouseEvent.CLICK, enchantingOne); //Кнопка заточки на одном предмете button2.addEventListener(MouseEvent.CLICK, enchantingFour); //Кнопка заточки на четырех предметах //Заточка единственного предмета function enchantingOne(event: MouseEvent): void { //Нажимаем на кнопку while (enchant < 10) { //До тех пор, пока не заточилось на + 10 chance1 = Math.random() //Точим if (chance1 * 100 < 76) { //Шанс 75% enchant++ //Прибавляем уровень заточки tries++ //Увеличиваем счетчик попыток } else { //Если не заточилось enchant = 0 //Обнуление заточки tries++ //Увеличиваем счетчик попыток } } //Вывод количества попыток в динамическое текстовое поле, обнуление переменных для повтора. memo.text = tries + " Попыток"; enchant = 0; tries = 0; } //Заточка на четырех предметах function enchantingFour(event: MouseEvent): void { //Нажимаем на кнопку while (enchant < 10) { //До тех пор, пока не заточится на + 10 function enFirst(): void { //Точим первое chance1 = Math.random() //Шанс заточки 75% if (chance1 * 100 < 76) { //Если успешно заточилось первое enchant++ //Прибавляем уровень заточки tries++ //Увеличиваем счетчик попыток заточки первого function enRest(): void { //Точим другие chance2 = Math.random() //Шанс 75% if (chance2 * 100 < 76) { //Если успешно заточилось второе, точим третье chance3 = Math.random() //Шанс 75% if (chance3 * 100 < 76) { //Если успешно заточилось третье, точим четвертое chance4 = Math.random() //Шанс 75% if (chance4 * 100 < 76) { //Если успешно заточилось и четвертое... enRest() //...Возвращаемся к заточке со второго } else { //Если не заточилось четвертое... enFirst() //...Снова точим первое } } else { //Если не заточилось третье... enFirst() //...Снова точим первое } } else { //Если не заточилось второе... enFirst() //...Снова точим первое } } } else { //Если не заточилось первое enchant = 0 //Сбрасываем заточку tries++ //Увеличиваем счетчик попыток заточки первого } } } //При успешной заточке на +10 вывод в динамическое текстовое поле количества попыток заточки первого ... //...и обнуление переменных для повторения заточки с нуля. memo.text = tries + " Попыток"; enchant = 0; tries = 0; } Последний раз редактировалось Eyeder; 22.02.2017 в 15:03. Причина: исправил теги |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Функции объявлены в цикле, но не вызываются. Соответственно enchant не растет, условие цикла не выполняется и цикл повторяется бесконечно.
Добавлено через 46 минут Как-то так, если я правильно понял логику //Заточка на четырех предметах function enchantingFour(event: MouseEvent): void { //Нажимаем на кнопку while (enchant < 10) enFirst(); //До тех пор, пока не заточится на + 10 Точим первое //При успешной заточке на +10 вывод в динамическое текстовое поле количества попыток заточки первого ... //...и обнуление переменных для повторения заточки с нуля. memo.text = tries + " Попыток"; enchant = 0; tries = 0; } function enFirst(): void { //Точим первое chance1 = Math.random(); //Шанс заточки 75% if (chance1 * 100 < 76) { //Если успешно заточилось первое enchant++; //Прибавляем уровень заточки enRest(); } else enchant = 0; //Если не заточилось первое Сбрасываем заточку tries++; //Увеличиваем счетчик попыток заточки первого } function enRest(): void { //Точим другие chance2 = Math.random(); //Шанс 75% if (chance2 * 100 < 76) { //Если успешно заточилось второе, точим третье chance3 = Math.random(); //Шанс 75% if (chance3 * 100 < 76) { //Если успешно заточилось третье, точим четвертое chance4 = Math.random(); //Шанс 75% if (chance4 * 100 < 76) { //Если успешно заточилось и четвертое... enRest(); //...Возвращаемся к заточке со второго } else enFirst(); //Если не заточилось четвертое...Снова точим первое } else enFirst(); //Если не заточилось третье...Снова точим первое } else enFirst(); //Если не заточилось второе...Снова точим первое }
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2017
Сообщений: 2
|
Спасибо, учел Ваши замечания, и правда упустил этот момент в ночи кодинга, исправил =)
Но, к сожалению, проблему это не решило. С утра подумал, что незачем заного вызывать функцию заточки первого (enFirst()) при неудаче в (enRest()), т.к. в случае неудачи цикл начнет выполняться заного так или иначе. В итоге: function enchantingFour(event: MouseEvent): void { //Нажимаем на кнопку enFirst(); //При успешной заточке на +10 вывод в динамическое текстовое поле количества попыток заточки первого ... //...и обнуление переменных для повторения заточки с нуля. memo.text = tries + " Попыток"; enchant = 0; tries = 0; } function enFirst(): void { //Точим первое while (enchant < 10) { //До тех пор, пока не заточится на + 10 chance1 = Math.random(); //Шанс заточки 75% if (chance1 * 100 < 76) { //Если успешно заточилось первое enchant++; //Прибавляем уровень заточки tries++; //Увеличиваем счетчик попыток заточки первого trace("ПЕРВОЕ - удачно"); enRest(); //Точим остальные } else { //Если не заточилось первое enchant = 0; //Сбрасываем заточку tries++; //Увеличиваем счетчик попыток заточки первого trace("ПЕРВОЕ - НЕудачно"); } } } function enRest(): void { //Точим другие chance2 = Math.random(); //Шанс 75% if (chance2 * 100 < 76) { //Если успешно заточилось второе, точим третье trace("второе - удачно"); chance3 = Math.random(); //Шанс 75% if (chance3 * 100 < 76) { trace("третье - удачно"); //Если успешно заточилось третье, точим четвертое chance4 = Math.random(); //Шанс 75% if (chance4 * 100 < 76) { trace("четвертое - удачно"); //Если успешно заточилось и четвертое... enRest(); //...Возвращаемся к заточке со второго } else { trace("четвертое - НЕУДАЧНО"); //Если не заточилось четвертое... } } else { trace("третье - НЕУДАЧНО"); //Если не заточилось третье... } } else { trace("второе - НЕУДАЧНО"); //Если не заточилось второе... } } Последний раз редактировалось Eyeder; 22.02.2017 в 15:02. Причина: исправил теги |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:42. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|