Я бы по-другому сделал:
if ((human.gender == 'male') && (human.toilet.need == true)) //пол человека мужской и нужно в туалет?
{
toilet Toilet = new Toilet();
toilet = human.position.building.floor.toilet;
toilet.male.open=true; //открыть мужской туалет
human.move_to(toilet.male()); //человек должен войти в этот туалет
human.toilet.start(human.toilet.do_demand(human.toilet.demand)); //справить нужду
}
Как-то так. Что-то меня понесло...
Так-то оно может быть и верно, но нужно чтобы было одновременно и программоподобно и человеку понятно, поэтому можно было бы написать так:
if ( self.Gender == Gender.Male ) { toilet = this };
Не успел отредактировать:
toilet Toilet = new Toilet(); // инициируем туалет
toilet = human.position.building.floor.toilet; // туалет в позиции человека
if ((human.gender == 'male') && (human.toilet.demand != nothing)) //пол человека мужской и нужно в туалет?
{
toilet.male.open=true; //открыть мужской туалет
human.move_to(toilet.male()); //человек должен войти в этот туалет
human.toilet.start(human.toilet.do_demand(human.toilet.demand)); //справить нужду
}
//Нужно еще обработку исключений привинтить...
// demand - тип нужды
// do_demand - функция справления нужды, где и происходит вызов функций "подтереться", "смыть", "помыть руки" и прочих.
Вы не учитываете, что это должен быть цикл по всем людям в здании. Вы для каждого человека свой туалет создаете.
Не для каждого, только для нуждающихся, хотя доработка необходима. Хотя если программа отслеживает только одного человека то все хорошо.