&НаКлиенте
Процедура А1_НаправлениеЗмейки(е)
у = Состояния.у1;
ИмяА= "А1_Движение";
ЛогНачалоА(ИмяА, у, е);
Если у = "1_Верх" Тогда
Если е = "е1_НажатаКнопкаВерх" Или е = "е6_СработалОбработчикОжидания" Тогда
z1_СдвинутьКоординатыГоловы(1, у);
z6_СделатьШаг();
ИначеЕсли е = "е2_НажатаКнопкаПраво" Тогда у = "2_Право";
ИначеЕсли е = "е3_НажатаКнопкаНиз" Тогда
ИначеЕсли е = "е4_НажатаКнопкаЛево" Тогда у = "4_Лево";
КонецЕсли;
ИначеЕсли у = "2_Право" Тогда
Если е = "е1_НажатаКнопкаВерх" Тогда у = "1_Верх";
ИначеЕсли е = "е2_НажатаКнопкаПраво" Или е = "е6_СработалОбработчикОжидания" Тогда
z1_СдвинутьКоординатыГоловы(2, у);
z6_СделатьШаг();
ИначеЕсли е = "е3_НажатаКнопкаНиз" Тогда у = "3_Низ";
ИначеЕсли е = "е4_НажатаКнопкаЛево" Тогда
КонецЕсли;
ИначеЕсли у = "3_Низ" Тогда
Если е = "е1_НажатаКнопкаВерх" Тогда
ИначеЕсли е = "е2_НажатаКнопкаПраво" Тогда у = "2_Право";
ИначеЕсли е = "е3_НажатаКнопкаНиз" Или е = "е6_СработалОбработчикОжидания" Тогда
z1_СдвинутьКоординатыГоловы(3, у);
z6_СделатьШаг();
ИначеЕсли е = "е4_НажатаКнопкаЛево" Тогда у = "4_Лево";
КонецЕсли;
ИначеЕсли у = "4_Лево" Тогда
Если е = "е1_НажатаКнопкаВерх" Тогда у = "1_Верх";
ИначеЕсли е = "е2_НажатаКнопкаПраво" Тогда
ИначеЕсли е = "е3_НажатаКнопкаНиз" Тогда у = "3_Низ";
ИначеЕсли е = "е4_НажатаКнопкаЛево" Или е = "е6_СработалОбработчикОжидания" Тогда
z1_СдвинутьКоординатыГоловы(4, у);
z6_СделатьШаг();
КонецЕсли;
Иначе
Лог(СтрШаблон("Ошибка в автомате %1: неизвестный номер состояния! - %2", ИмяА, у));
КонецЕсли;
Если у <> Состояния.у1 Тогда ЛогПереходА(ИмяА, Состояния.у1, у);
Состояния.у1 = у;
Если у = "1_Верх" Тогда
z1_СдвинутьКоординатыГоловы(1, у);
z5_УстановитьВидГоловы(1, "A");
z6_СделатьШаг();
ИначеЕсли у = "2_Право" Тогда
z1_СдвинутьКоординатыГоловы(2, у);
z5_УстановитьВидГоловы(2, ">");
z6_СделатьШаг();
ИначеЕсли у = "3_Низ" Тогда
z1_СдвинутьКоординатыГоловы(3, у);
z5_УстановитьВидГоловы(3, "V");
z6_СделатьШаг();
ИначеЕсли у = "4_Лево" Тогда
z1_СдвинутьКоординатыГоловы(4, у);
z5_УстановитьВидГоловы(4, "<");
z6_СделатьШаг();
Иначе
Лог(СтрШаблон("Ошибка в автомате %1: неизвестный номер состояния! - %2", ИмяА, у));
КонецЕсли;
КонецЕсли;
ЛогКонецА(ИмяА, е, у);
КонецПроцедуры