Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.02.2017, 07:44
Eyeder вне форума Посмотреть профиль Отправить личное сообщение для Eyeder Найти все сообщения от Eyeder
  № 1  
Ответить с цитированием
Eyeder

Регистрация: Feb 2017
Сообщений: 2
По умолчанию Проблема. Несколько рекурсий в одной функции

Доброго времени суток, уважаемые форумчане.
Я начинающий, вот решил чисто для себя посчитать математически количество попыток для заточки в одной игре. (Дико извиняюсь за невнятное изложение след. условий
Кратко: При удачной заточке +1, При неудачной всегда обнуление. Шанс 75%
Код для заточки одного предмета написал, работает. Задумал посчитать, будет ли меньше попыток для заточки нужного предмета, если после каждой успешной его заточки ждать неудачи на других трех предметах, и только после неудачи снова переходить к заточке первого.
Собственно код:
Код AS3:
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;
}
Компилируется, но при запуске счетчика заточки на четырех предметах приложение перестает отвечать и оживает через 15 секунд. Прошу помощи =)


Последний раз редактировалось Eyeder; 22.02.2017 в 15:03. Причина: исправил теги
Создать новую тему   Часовой пояс GMT +4, время: 03:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:31.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.