Здравствуйте, гость ( Вход | Регистрация )

11 страниц V « < 5 6 7 8 9 > »   
Ответить в эту темуОткрыть новую тему
> Научить пилот логике в игре Небеса
xolost
сообщение 5.1.2013, 3:37
Сообщение #121


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Цитата(Санчес @ 5.1.2013, 3:28) *

Можно ли чтобы искал две и более картинок?


Разумеется, при помощи цикла for
Код
set $path c:\images\
set %loko[1] Вася
set %loko[2] Лена
set %loko[3] Петя
set %loko[4] Марина
set %loko[5] Оксана

for #i 1 5
   set $a findimage (#startX #startY #endX #endY ($path%loko[#i].bmp) %crds 2)
end_for
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 5.1.2013, 8:57
Сообщение #122


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(xolost @ 5.1.2013, 4:37) *

Разумеется, при помощи цикла for
Код
set $path c:\images\
set %loko[1] Вася
set %loko[2] Лена
set %loko[3] Петя
set %loko[4] Марина
set %loko[5] Оксана

for #i 1 5
   set $a findimage (#startX #startY #endX #endY ($path%cash[#i].bmp) %crds 2)
end_for



Вот спасибо, Вы помогли мне скрипт уменьшить сразу на 500 строк.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 5.1.2013, 9:01
Сообщение #123


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Цитата(veiron @ 5.1.2013, 9:57) *

Вот спасибо, Вы помогли мне скрипт уменьшить сразу на 500 строк.

Я же говорил, со временем уменьшите во много раз))
Нужно только терпение и правильные вопросы.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 5.1.2013, 9:12
Сообщение #124


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Так. Раз уж Дарк решил выложить готовый скрипт на матрицу(хоть и не проверенный), то я тоже выложу что ли))

Получайте.
Для работы скрипта нужно сделать 6 картинок:
с названиями рамка.bmp, 1.bmp, 2.bmp 3... 4... 5...
1-5 это картинки центров шариков пикселов так 5 на 5
и рамка - левый-верхний угол 10 на 10 пикселов

Можно скачать пример

А вот сам скрипт.

Код
set #startX 0 
set #startY 0
set #endX 1280
set #endY 1024
set #sosed 40   // отступ в сторону для поиска шарика в соседней ячейке
set $bmp .bmp
   // ищем левый-верхний угол рамки
   set $ramka findimage (#startX #startY #endX #endY (c:\images6\рамка.bmp) %crds 2 100 1)  
   if $ramka > 0    
      set #x1 %crds[1 1] + 10        // задаем область для поиска ячейки относительно рамки
      set #y1 %crds[1 2] + 10
      set #x2 #x1 + #sosed
      set #y2 #y1 + #sosed
      for #b 1 6
         for #a 1 6
            for #s 1 5
               set $s1 findimage (#x1 #y1 #x2 #y2 (c:\images6\#s$bmp) %crds2 2 100 1)  
               if $s1 > 0
                  set %pole[#b #a] #s     // нашли шарик - записали его в общий массив на своё место
                  set #x1 #x1 + #sosed
                  set #x2 #x2 + #sosed
                  break
               end_if  
            end_for
         end_for
         set #x1 %crds[1 1] + 10
         set #x2 #x1 + #sosed
         set #y1 #y1 + #sosed  
         set #y2 #y2 + #sosed
      end_for
   end_if
   save_array %pole c:\images6\pole.txt    // записали в файл получившийся массив.
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 5.1.2013, 9:12
Сообщение #125


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(xolost @ 5.1.2013, 10:01) *

Я же говорил, со временем уменьшите во много раз))
Нужно только терпение и правильные вопросы.

А как теперь сделать, что бы такое заработало
Код

while ( $a = 0 ) and ( $b = 0 )
set $a Findimage....%arr
set $b Findimage....%crds
if $a > 1
   set #x %arr[1 1]
   set #y %arr[1 2]  
   Left #x, #y
end_if
if $b > 1
   set #x %crds[1 1]
   set #y %crds[1 2]  
   Left #x, #y
end_if
end_while

раньше у меня было 2 массива, а теперь только 1.

За скрип, огромное спасибо.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 5.1.2013, 10:07
Сообщение #126


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Код

while ( $a = 0 ) and ( $b = 0 )
set $a Findimage....%arr
set $b Findimage....%crds
if $a > 1
   set #x %arr[1 1]
   set #y %arr[1 2]  
   Left #x, #y
end_if
if $b > 1
   set #x %crds[1 1]
   set #y %crds[1 2]  
   Left #x, #y
end_if
end_while

раньше у меня было 2 массива, а теперь только 1.
[/code]

А что тут вообще?
Я вижу что тут говорится крутим в цикле пока не найдется хоть одна из двух картинок. Как бы с виду может работать, но зависит от того что в findimage.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 5.1.2013, 11:27
Сообщение #127


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(xolost @ 5.1.2013, 11:07) *

А что тут вообще?
Я вижу что тут говорится крутим в цикле пока не найдется хоть одна из двух картинок. Как бы с виду может работать, но зависит от того что в findimage.

ждем когда появится одна из двух картинок, если видим первую картинку, кликаем в нее, если втолую то клик по ней.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санчес
сообщение 5.1.2013, 11:42
Сообщение #128


****

Apprentice
Сообщений: 131
Регистрация: 18.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.578
Возраст: 31



Цитата
Разумеется, при помощи цикла for
Код
set $path c:\images\
set %loko[1] Вася
set %loko[2] Лена
set %loko[3] Петя
set %loko[4] Марина
set %loko[5] Оксана

for #i 1 5
   set $a findimage (#startX #startY #endX #endY ($path%cash[#i].bmp) %crds 2)
end_for


Спасибо (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 5.1.2013, 12:37
Сообщение #129


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



я опечатался там, вместо %cash в данном случае %loko разумеется)


Цитата
ждем когда появится одна из двух картинок, если видим первую картинку, кликаем в нее, если втолую то клик по ней.


И в чем вопрос?)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 5.1.2013, 12:45
Сообщение #130


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(xolost @ 5.1.2013, 13:37) *

я опечатался там, вместо %cash в данном случае %loko разумеется)
И в чем вопрос?)

Разобрался, это я запутался и вас путаю.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 5.1.2013, 12:50
Сообщение #131


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Ну, если я верно понял, то что-то в этом роде:
Код

set $a findimage (#startX #startY #endX #endY ($path%cash[#i].bmp) %crds 2)
   if $a > 0
      if #i = 1
         set #x %crds[1 1] + 50
         set #y %crds[1 2]  - 20
      end_if
      if #i = 2
         set #x %crds[1 1] + 180
         set #y %crds[1 2]  - 190
      end_if
          Left #x, #y // клик по первой найденной картинки
   end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санчес
сообщение 5.1.2013, 16:17
Сообщение #132


****

Apprentice
Сообщений: 131
Регистрация: 18.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.578
Возраст: 31



Цитата
Код
set $path c:\images\
set %loko[1] Вася
set %loko[2] Лена
set %loko[3] Петя
set %loko[4] Марина
set %loko[5] Оксана

for #i 1 5
   set $a findimage (#startX #startY #endX #endY ($path%cash[#i].bmp) %crds 2)
end_for


Попробовал конструкцию,с переменной #i не находит а просто повторяет цикл,если же вместо [#i] ставлю [1] или любую другую цифру до пяти то норм..правда цикл становится ненужным..
Код:
// For
set #startX 5
set #startY 3
set #endX 380
set #endY 400

set $path C:\Uopilot\Images\

set %loko[1] 1.bmp
set %loko[2] 2.bmp
set %loko[3] 3.bmp

for #i 1 3
set $a findimage (#startX #startY #endX #endY ($path%loko[3]) %crds 2 80 3 10)
if $a > 0
left %crds[1 1],%crds[1 2]
left %crds[2 1],%crds[2 2]
left %crds[3 1],%crds[3 2]
end_if
end_for
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 5.1.2013, 16:19
Сообщение #133


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



сначала запишите полное имя файла в переменную, а потом уже её подставляйте в findimage


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санчес
сообщение 5.1.2013, 16:21
Сообщение #134


****

Apprentice
Сообщений: 131
Регистрация: 18.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.578
Возраст: 31



Глупый вопрос,но ...почему именно crds а не fkigt например?Аббревиатура или гон?

полное это как? 1.bmp это неполное??
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 5.1.2013, 16:27
Сообщение #135


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Код
for #i 1 3
set $name $path%loko[#i]
set $a findimage (#startX #startY #endX #endY ($name) %crds 2 80 3 10)
...
end_for


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санчес
сообщение 5.1.2013, 16:33
Сообщение #136


****

Apprentice
Сообщений: 131
Регистрация: 18.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.578
Возраст: 31



Значит полное имя это означает set $name путь к файлу + имя?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 5.1.2013, 16:35
Сообщение #137


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(Санчес @ 5.1.2013, 17:33) *

Значит полное имя это означает set $name путь к файлу + имя?

полное имя - это путь к файлу+имя+расширение
записываем его в перемнную $name , а потом переменную вставляем в findimage


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санчес
сообщение 5.1.2013, 16:39
Сообщение #138


****

Apprentice
Сообщений: 131
Регистрация: 18.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.578
Возраст: 31



пишет нот валид на строке set $name $path%loko[#i]
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 5.1.2013, 16:46
Сообщение #139


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



А вы в свой скрипт его ставили?
Код
Код
set #startX 5
set #startY 3
set #endX 380
set #endY 400

set $path C:\Uopilot\Images\

set %loko[1] 1.bmp
set %loko[2] 2.bmp
set %loko[3] 3.bmp

set $a 0
for #i 1 3
  set $name $path%loko[#i]
  log $name
  //set $a findimage (#startX #startY #endX #endY ($path%loko[3]) %crds 2 80 3 10)
  if $a > 0
    left %crds[1 1],%crds[1 2]
    left %crds[2 1],%crds[2 2]
    left %crds[3 1],%crds[3 2]
  end_if
end_for

end_script


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санчес
сообщение 5.1.2013, 16:59
Сообщение #140


****

Apprentice
Сообщений: 131
Регистрация: 18.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.578
Возраст: 31



Цитата(Zeleax @ 5.1.2013, 15:46) *

А вы в свой скрипт его ставили?
Код
Код
set #startX 5
set #startY 3
set #endX 380
set #endY 400

set $path C:\Uopilot\Images\

set %loko[1] 1.bmp
set %loko[2] 2.bmp
set %loko[3] 3.bmp

set $a 0
for #i 1 3
  set $name $path%loko[#i]
  log $name
  //set $a findimage (#startX #startY #endX #endY ($path%loko[3]) %crds 2 80 3 10)
  if $a > 0
    left %crds[1 1],%crds[1 2]
    left %crds[2 1],%crds[2 2]
    left %crds[3 1],%crds[3 2]
  end_if
end_for

end_script


само собой
Цитата
// For
set #startX 5
set #startY 3
set #endX 380
set #endY 400
set $path C:\Uopilot\Images\
set %loko[1] 1.bmp
set %loko[2] 2.bmp
set %loko[3] 2.bmp
for #i 1 3
set $name $path%loko[#i]
set $a findimage (#startX #startY #endX #endY ($name) %crds 2 80 3 10)
if $a > 0
left %crds[1 1],%crds[1 2]
left %crds[2 1],%crds[2 2]
eft %crds[3 1],%crds[3 2]
end_if
end_for



с переменной ошибку пишет,с цифрой норм..

нет только set $a 0 и log $name

я не совсем догоняю как в for понимает что нужно подставлять адреса картинок в #i

Где в этой конструкции указание на такие действия?

Должно быть типа set #i или я запутался??
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

11 страниц V « < 5 6 7 8 9 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.4.2024, 3:19
Designed by Nickostyle