- Сообщения
- 3,608
- Репутация
- 941
Издревле перед нами, кастой ленивых ботоводов, стояла проблема оптимизации кода, чтобы было и попроще и по функциональнее. Всегда хотелось чтобы он был более гибким, более универсальным и занимал как можно меньше места. Я опущу самый банальный пример когда данные вписываются напрямую в какую-нибудь команду:
И сразу перейду к следующему более актуальному примеру который думаю использует процентов 90 ботоводов. В этом примере для наглядности я заменю PixelSearch командой MsgBox, таким образом в всплывающем окне будет отображаться инфа которую содержат заданные выше переменные. Всё просто, в начале мы задаем или читаем из файла или еще откуда координаты, цвета и тд и тп, что угодно в зависимости от команды, а ниже идет универсальная функция которая при изменении координат внутри игры не требует вмешательств. Мы просто заменим координаты сверху и всё, функция снова работает.
Следующим примером будет код функции ConCheck состоящий из меньшего количества строк но имеющий тот же функционал:
Конкретно этот пример не кажется более коротким, но вспомнив что если применять PixelSearch, который состоит минимум из 2-х строк, а иногда с обработкой различных исключений достигает и большего количества, выгода на лицо.
Если идти дальше, можно получить пример, круче которого только яйца:
В этом варианте функция ConCheck которая в данный момент эмулирует принцип работы примитивных датчиков, с 14 строк сократилась до 4-х.
Пользуйтесь на здоровье
И сразу перейду к следующему более актуальному примеру который думаю использует процентов 90 ботоводов. В этом примере для наглядности я заменю PixelSearch командой MsgBox, таким образом в всплывающем окне будет отображаться инфа которую содержат заданные выше переменные. Всё просто, в начале мы задаем или читаем из файла или еще откуда координаты, цвета и тд и тп, что угодно в зависимости от команды, а ниже идет универсальная функция которая при изменении координат внутри игры не требует вмешательств. Мы просто заменим координаты сверху и всё, функция снова работает.
Код:
Global $UndockButton[6] = [1,2,3,4,5,6]
Global $MainMenu[6] = [2,3,4,5,6,7]
Global $OverviewMenu[6] = [3,4,5,6,7,8]
Global $SelectedItem[6] = [4,5,6,7,8,9]
ConCheck("Кнопка Меню")
Func ConCheck($Check1)
Select
Case $Check1 = "Кнопка Андока"
;Local $var = PixelSearch($UndockButton[0], $UndockButton[1], $UndockButton[2], $UndockButton[3], $UndockButton[4], $UndockButton[5])
;Тут и далее мы заменим PixelSearch банальным MsgBox, будет нагляднее
MsgBox(0,$Check1,$UndockButton[0]&@CR&$UndockButton[1]&@CR&$UndockButton[2]&@CR&$UndockButton[3]&@CR&$UndockButton[4]&@CR&$UndockButton[5])
Case $Check1 = "Кнопка Меню"
MsgBox(0,$Check1,$MainMenu[0]&@CR&$MainMenu[1]&@CR&$MainMenu[2]&@CR&$MainMenu[3]&@CR&$MainMenu[4]&@CR&$MainMenu[5])
Case $Check1 = "Кнопка Овервью"
MsgBox(0,$Check1,$OverviewMenu[0]&@CR&$OverviewMenu[1]&@CR&$OverviewMenu[2]&@CR&$OverviewMenu[3]&@CR&$OverviewMenu[4]&@CR&$OverviewMenu[5])
Case $Check1 = "Кнопка SI"
MsgBox(0,$Check1,$SelectedItem[0]&@CR&$SelectedItem[1]&@CR&$SelectedItem[2]&@CR&$SelectedItem[3]&@CR&$SelectedItem[4]&@CR&$SelectedItem[5])
EndSelect
EndFunc
Следующим примером будет код функции ConCheck состоящий из меньшего количества строк но имеющий тот же функционал:
Код:
Global $UndockButton[6] = [1,2,3,4,5,6]
Global $MainMenu[6] = [2,3,4,5,6,7]
Global $OverviewMenu[6] = [3,4,5,6,7,8]
Global $SelectedItem[6] = [4,5,6,7,8,9]
ConCheck("Кнопка Овервью")
Func ConCheck($Check1)
Local $var
Select
Case $Check1 = "Кнопка Андока"
$var = $UndockButton
Case $Check1 = "Кнопка Меню"
$var = $MainMenu
Case $Check1 = "Кнопка Овервью"
$var = $OverviewMenu
Case $Check1 = "Кнопка SI"
$var = $SelectedItem
EndSelect
MsgBox(0,$Check1,$var[0]&@CR&$var[1]&@CR&$var[2]&@CR&$var[3]&@CR&$var[4]&@CR&$var[5])
EndFunc
Конкретно этот пример не кажется более коротким, но вспомнив что если применять PixelSearch, который состоит минимум из 2-х строк, а иногда с обработкой различных исключений достигает и большего количества, выгода на лицо.
Если идти дальше, можно получить пример, круче которого только яйца:
Код:
Global $UndockButton[6] = [1,2,3,4,5,6]
Global $MainMenu[6] = [2,3,4,5,6,7]
Global $OverviewMenu[6] = [3,4,5,6,7,8]
Global $SelectedItem[6] = [4,5,6,7,8,9]
ConCheck("MainMenu")
ConCheck("UndockButton")
ConCheck("OverviewMenu")
ConCheck("SelectedItem")
Func ConCheck($Check1)
Local $var = Eval($Check1)
MsgBox(0,$Check1,$var[0]&@CR&$var[1]&@CR&$var[2]&@CR&$var[3]&@CR&$var[4]&@CR&$var[5])
EndFunc
В этом варианте функция ConCheck которая в данный момент эмулирует принцип работы примитивных датчиков, с 14 строк сократилась до 4-х.
Пользуйтесь на здоровье
