Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 17:58   #1
Roman_DevilRigoll
 
Регистрация: 22.05.2014
Сообщений: 6
По умолчанию Помогите с проверкой на окружение

Суть моей проверки, это окружение, как в игре Go, или игре Точки. Делаю в Delphi.
Я знаю суть алгоритма, но не могу написать рекурсивную функцию для нахождения окружения и замены картинок противника, на свои.
Суть алгоритма такова, я проверяю: верх, низ, лева, право в массиве, на то, стоит ли фишка противника или нет, если стоит, то мы прогоняем циклом, все фишки противника стоящие рядом изменяя их значения, если хоть раз увидим 0 то, окружения нет, и мы меняем направление, допустим сначала мы проверяли от своей соседнее левое значение в матрице, то теперь будем проверять верхнее значение, и снова прогонять циклом, если 0 ни разу не встретился, то все фишки противника(с изменённым значением в матрице) заменяем на стандартное значение моих фишек, при это заменяя картинки...

Последний раз редактировалось Roman_DevilRigoll; 22.05.2014 в 18:54.
Roman_DevilRigoll вне форума Ответить с цитированием
Старый 23.05.2014, 10:58   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

И в чём, собственно, вопрос?
Где Ваш код(проект)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2014, 13:27   #3
Roman_DevilRigoll
 
Регистрация: 22.05.2014
Сообщений: 6
По умолчанию

Код:
function okruzeniesprava(i,j:integer):boolean;
    var l,k,e: integer;
    Begin
    if hod = 2 then
      e := 2
    else e := -2;
      okruzeniesprava := true;
      if poler[i,j] = -1 then
      begin
      for l := i-1 to i+1  do
        for k := j-1 to j+1 do
          Begin
             if ((l = i+1) and (k = j)) or ((l = i-1) and (k = j)) or
                 ((l = i) and (k = j-1)) or ((l = i) and (k = j+1)) then
                Begin
                   if poler[l,k] = 0 then
                       okruzeniesprava := false
                   else if poler[l,k] = e/2 then
                       okruzeniesprava(l,k);
                End;
          End;
       end;
    End;
не понимаю почему не работает



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.


Суть этой функции в том, чтобы найти окружения двигаясь право, влево, низ, верх в матрице, а если натыкалась на 0 то возвращала false

Последний раз редактировалось Stilet; 24.05.2014 в 09:55.
Roman_DevilRigoll вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с проверкой условия trinity19 Помощь студентам 1 14.01.2014 19:56
помогите пожалуйста проверкой и правкой! kuzzz Помощь студентам 1 26.06.2009 07:18
Помогите сделать поле с проверкой! ice_777 Microsoft Office Access 0 23.04.2009 14:05
Помогите с проверкой в паскале neomaximus Помощь студентам 2 10.07.2008 09:41
Помогите с проверкой ввода в паскале neomaximus Помощь студентам 4 01.07.2008 23:10