2013-05-28 2 views
1

поэтому я утверждаю карту/3 со значением 'O' gamemap (X, Y, 'O') с X и Y от 1 до 10, и я получаю это ошибка в этом коде V2=:= "O", если одно из значений V не является «O», может ли кто-нибудь помочь? все создается, но я видел в отладчике, что, если значение отличается от «O», он выполняет откат к карте (X, Y, V) и, вероятно, удаляет значение или что-то еще, что я могу сделать, чтобы остановить это, я хочу так что, если значение не является «O», чтобы проверить другие сравнения, чтобы не выполнять откат.ОШИБКА: =: =/2: Аргументы не созданы в достаточной степени

Z=:=3 -> 
      (
      random_between(3,8,X), 
      random_between(3,8,Y), 
      gamemap(X,Y,V), 
      V=:="O" -> 
      (
      X1 is X-1, 
        X2 is X+1, 
       Y1 is Y-1, 
      Y2 is Y+1, 
      Y3 is Y+2, 
      Y5 is Y-2, 
      X3 is X+2, 
      X5 is X-2, 

      gamemap(X1,Y,V1), 
      gamemap(X,Y2,V2), 
      gamemap(X2,Y,V3), 
      gamemap(X,Y1,V4), 
     gamemap(X,Y3,V5), 
     gamemap(X3,Y,V7), 
     gamemap(X,Y5,V9), 
     gamemap(X5,Y,V11), 

      V2=:= "O", V5 =:="O" -> 
     (
      change_map(X,Y2,"O","X"), 
       change_map(X,Y3,"O","X") 
     ); 
     V3=:="O", V7=:="O" -> 
     (
        change_map(X2,Y,"O","X"), 
       change_map(X3,Y,"O","X") 
     ); 
     V4=:="O", V9 =:="O" -> 
     (
        change_map(X,Y1,"O","X"), 
       change_map(X,Y5,"O","X") 
     ); 
     V1=:="O", V11=:="O" -> 
     (
        change_map(X1,Y,"O","X"), 
       change_map(X5,Y,"O","X") 

     ); 
     placeship(3) 
     ); 
     placeship(3) 
    ) 

ответ

0

Не уверен, что он исправит вашу проблему, но ваш отступ программы не соответствует используемой вами скобке. Я бы написал, следуя отступу стиля, предложенному SWI-Prolog IDE

( (V2=:= "O", V5 =:="O") 
-> change_map(X,Y2,"O","X"), 
    change_map(X,Y3,"O","X") 
; (V3=:="O", V7=:="O") 
-> change_map(X2,Y,"O","X") 
... 

 Смежные вопросы

  • Нет связанных вопросов^_^