Перенос программы с Visual Prolog 7.1 в Visual Prolog 7.5

Узнай цену своей работы

Формулировка задачи:

Проблема переноса. Взяла пример с книги Visual Prolog 7.1 для начинающих. Это игра червь. Вроде всё, что не компилировалось я исправила, но червь к сожалению не движется. Вот листинг всех файлов: click.cl
Листинг программы
  1. class click
  2. open core
  3. predicates
  4. bip:(window).
  5. kill:().
  6. end class click
click.pro
Листинг программы
  1. implement click
  2. open core
  3. class facts
  4. tm:vpiDomains::timerId:= erroneous.
  5. clauses
  6. bip(W) :- tm := vpi::timerSet(W:getVpiWindow(), 500).
  7. kill() :- vpi::timerKill(tm).
  8. end implement click
draw.cl
Листинг программы
  1. class draw
  2. open core, vpiDomains
  3. predicates
  4. snapshot:(windowGDI Win, objstate).
  5. end class draw
draw.pro
Листинг программы
  1. implement draw
  2. open core, vpiDomains, vpi
  3. class predicates
  4. draw:(windowHandle, objstate) procedure.
  5. clauses
  6. draw(W, S) :-
  7. S:segm(Rectangle),
  8. vpi::drawEllipse(W, Rectangle),
  9. fail.
  10. draw(_W, _S).
  11. snapshot(Win, S) :-
  12. S:mov(), !,
  13. Rectangle= rct(0, 0, 200, 200),
  14. W= pictOpen(Rectangle),
  15. draw(W, S), Pict= pictClose(W),
  16. Win:pictDraw(Pict, pnt(10, 10), rop_SrcCopy).
  17. end implement draw
objstate.i
Листинг программы
  1. interface objstate
  2. open core, vpiDomains
  3. predicates
  4. init:().
  5. turn:(integer, integer).
  6. mov:().
  7. segm:(rct) nondeterm (o).
  8. end interface objstate
objstate.pro
Листинг программы
  1. implement objstate
  2. open core, vpiDomains
  3. facts
  4. w:(integer, pnt) nondeterm. % worm
  5. d:(integer, integer) single. % direction
  6. clauses
  7. init() :-
  8. assert(w(1, pnt(110, 100))),
  9. assert(w(2, pnt(120, 100))),
  10. assert(w(3, pnt(130, 100))),
  11. assert(w(4, pnt(140, 100))),
  12. assert(w(5, pnt(140, 100))).
  13. d(10, 0).
  14. mov() :-
  15. retract(w(1, P)),
  16. P= pnt(X1, Y1),
  17. d(DX, DY),
  18. P1= pnt(X1+DX, Y1+DY),
  19. assert(w(1, P1)),
  20. retract(w(2, P2)),
  21. assert(w(2, P)),
  22. retract(w(3, P3)),
  23. assert(w(3, P2)),
  24. retract(w(4, P4)),
  25. assert(w(4, P3)),
  26. retract(w(5, _)),
  27. assert(w(5, P4)), !.
  28. mov().
  29. segm(rct(X, Y, X+10, Y+10)) :-
  30. w(_, pnt(X, Y)).
  31. turn(DX, DY) :-
  32. assert(d(DX, DY)).
  33. end implement objstate

Решение задачи: «Перенос программы с Visual Prolog 7.1 в Visual Prolog 7.5»

textual
Листинг программы
  1. retractall(w(_, _))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы