Показать сообщение отдельно
Старый 13.09.2017, 01:14
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 26  
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Но потом подумалось, что зачем писать идентичный код для каждого массива (имена, фамилии, клички, локации и много чего ещё)
А я бы не советовал настолько обесчеловечивать код. И да, я бы не хранил "локации" даже в одном классе с "именами фамилиями кличками"..
Еще "поиграться":
Код AS3:
package 
{
	public class Quest 
	{
		private static const EPISODES_TEXT:Array = 
		[
		/* 000 */	"Если бы кто-то сказал Волку, что Красная Шапочка окажется дочкой *$n1 *$N1, он вряд-ли бы решился на преступление. Перейти дорогу *$n2 совсем не входило в его планы.",
		/* 001 */	"Волк уже однажды встречался с *$N4, и эта встреча до сих пор отзывалась в его памяти болью унижения.",
		/* 002 */	"Новой встречи с *$n4 Волк боялся как огня."
		]
 
		public static function getText(episode:int, character:String) : String
		{
			var text:String = EPISODES_TEXT[episode];
			for (var i:uint = 0; i < 6; i++)
			{
				text = text.replace("*$n" + i, Names.getName(character, Names.FIRST_NAME, i));
				text = text.replace("*$N" + i, Names.getName(character, Names.FAMILY_NAME, i));
			}
			return text;
		}
	}
}
////*********************************************
package 
{
	public class GlobalValues 
	{
		static public const CHARACTER_HERO:String = "hero";
		static public const CHARACTER_APRIL:String = "april";
	}
}
////*********************************************
package 
{
	public class Names 
	{
		static public const FIRST_NAME:String = "firstName";
		static public const FAMILY_NAME:String = "familyName";
 
		static private const firstName:Object = // Имена всех персонажей во всех падежах
		{
			(GlobalValues.CHARACTER_HERO as String): 	["Джек", "Джека", "Джеку", "Джека", "Джеком", "Джеке"],
			(GlobalValues.CHARACTER_APRIL as String):	["Маша", "Маши", "Маше", "Машу", "Машей", "Маше"]
		}
 
		static private const familyName:Object = // Фамилии всех персонажей во всех падежах
		{
			(GlobalValues.CHARACTER_HERO as String): 	["Николсон", "Николсона", "Николсону", "Николсона", "Николсоном", "Николсоне"],
			(GlobalValues.CHARACTER_APRIL as String):	["Шарапова", "Шараповой", "Шараповой", "Шарапову", "Шараповой", "Шараповой"]
		}
 
		static public function getName(character:String, nameType:String, nameCase:int) :String
		{
			return Names[nameType][character][nameCase];
		}
	}
}
////*********************************************
package
{
	import flash.display.Sprite;
 
	public class Main extends Sprite 
	{
		public function Main() 
		{
			trace(Quest.getText(0, GlobalValues.CHARACTER_HERO));
			trace(Quest.getText(1, GlobalValues.CHARACTER_HERO));
			trace(Quest.getText(2, GlobalValues.CHARACTER_HERO));
			trace("\n");
			trace(Quest.getText(0, GlobalValues.CHARACTER_APRIL));
			trace(Quest.getText(1, GlobalValues.CHARACTER_APRIL));
			trace(Quest.getText(2, GlobalValues.CHARACTER_APRIL));
		}
	}
}
__________________
Reality.getBounds(this);