Я развивающийся настольную игру в PROLOG и для того, чтобы сделать интерфейс более приятным для пользователя, я решил добавить сетку с координатами (0-> 4), как показано ниже:Реализовать встречный пролог
0 1 2 3 4
---------
0 | x x x x x
1 | x o x o o
2 | o x o x x
3 | x x o o o
4 | o x x x o
После разработки кода я столкнулся с проблемой относительно счетчика для вертикальных координат. Предикат останавливается после того, как я реализую счетчик Index is Index + 1
, как показано ниже:
printGrid :- %Only prints the horizontal grid
write('\t'), write(0), write(' '), write(1), write(' '), write(2), write(' '), write(3), write(' '), write(4), nl,
write('\t'), write('------------------'), nl.
printBoard([Head|Tail]) :-
Index = 0,
Index is Index + 1,
% STOPS HERE ------------
write(' '), write(Index), write(' |'), write(' '),
printRow(Head),
printBoard(Tail).
printBoard([]).
printRow([Head|Tail]) :-
write(Head),
write(' '),
printRow(Tail).
printRow([]) :- nl.
Я знаю, счетчик сбрасывается в 0, каждый раз, когда рекурсия называется, таким образом, я не знаю, как установить индекс до 0 примерно один раз и оттуда. Любые советы о том, как решить обе проблемы?
http://www.cs.bham.ac.uk/~pjh/prolog_course/md5/md5_accumulators.html посмотреть на первом примере. Вам нужно что-то подобное? – Otrebor
Ну, это решило, ты! :) – Khabz
Вопрос по-прежнему остается тем, почему вычисление остановилось после этой строки кода? (См. Выше) – Khabz