Перенос программы с Visual Prolog 7.1 в Visual Prolog 7.5
Формулировка задачи:
Проблема переноса. Взяла пример с книги Visual Prolog 7.1 для начинающих. Это игра червь. Вроде всё, что не компилировалось я исправила, но червь к сожалению не движется.
Вот листинг всех файлов:
click.cl
click.pro
draw.cl
draw.pro
objstate.i
objstate.pro
Листинг программы
- class click
- open core
- predicates
- bip:(window).
- kill:().
- end class click
Листинг программы
- implement click
- open core
- class facts
- tm:vpiDomains::timerId:= erroneous.
- clauses
- bip(W) :- tm := vpi::timerSet(W:getVpiWindow(), 500).
- kill() :- vpi::timerKill(tm).
- end implement click
Листинг программы
- class draw
- open core, vpiDomains
- predicates
- snapshot:(windowGDI Win, objstate).
- end class draw
Листинг программы
- implement draw
- open core, vpiDomains, vpi
- class predicates
- draw:(windowHandle, objstate) procedure.
- clauses
- draw(W, S) :-
- S:segm(Rectangle),
- vpi::drawEllipse(W, Rectangle),
- fail.
- draw(_W, _S).
- snapshot(Win, S) :-
- S:mov(), !,
- Rectangle= rct(0, 0, 200, 200),
- W= pictOpen(Rectangle),
- draw(W, S), Pict= pictClose(W),
- Win:pictDraw(Pict, pnt(10, 10), rop_SrcCopy).
- end implement draw
Листинг программы
- interface objstate
- open core, vpiDomains
- predicates
- init:().
- turn:(integer, integer).
- mov:().
- segm:(rct) nondeterm (o).
- end interface objstate
Листинг программы
- implement objstate
- open core, vpiDomains
- facts
- w:(integer, pnt) nondeterm. % worm
- d:(integer, integer) single. % direction
- clauses
- init() :-
- assert(w(1, pnt(110, 100))),
- assert(w(2, pnt(120, 100))),
- assert(w(3, pnt(130, 100))),
- assert(w(4, pnt(140, 100))),
- assert(w(5, pnt(140, 100))).
- d(10, 0).
- mov() :-
- retract(w(1, P)),
- P= pnt(X1, Y1),
- d(DX, DY),
- P1= pnt(X1+DX, Y1+DY),
- assert(w(1, P1)),
- retract(w(2, P2)),
- assert(w(2, P)),
- retract(w(3, P3)),
- assert(w(3, P2)),
- retract(w(4, P4)),
- assert(w(4, P3)),
- retract(w(5, _)),
- assert(w(5, P4)), !.
- mov().
- segm(rct(X, Y, X+10, Y+10)) :-
- w(_, pnt(X, Y)).
- turn(DX, DY) :-
- assert(d(DX, DY)).
- end implement objstate
Решение задачи: «Перенос программы с Visual Prolog 7.1 в Visual Prolog 7.5»
textual
Листинг программы
- retractall(w(_, _))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д