⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch14ex05.pro

📁 prolog,人工智能推理程序,运行环境prolog
💻 PRO
字号:
/*
   Turbo Prolog 2.0 Chapter 14, Example Program 5
   
   Copyright (c) 1986, 88 by Borland International, Inc
   
*/
   
domains
   monsters = integer*

predicates
   delay(integer)
   zapGun(integer, integer)
   delete(integer, monsters, monsters)
   testresult(monsters, integer)
   test(char, integer, integer)
   do_it(integer, monsters, integer)
   showThem(monsters, integer, char)

goal
   makewindow(1, 7, 0, "", 0, 0, 25, 80),
   do_it(56, [42, 45, 50, 55, 56, 59], 0).

clauses
   do_it(Initial, Monsters, Row) :-
      testresult(Monsters, Row),
      showThem(Monsters, Row, '\1'),
      readchar(Ch),
      test(Ch, Initial, Final),
      zapGun(24, Final),
      delete(Final, Monsters, LiveMonsters),
      NewRow = Row+1,
      cursor(24, Final),
      showThem(Monsters, Row, ' '),
      do_it(Final, LiveMonsters, NewRow).
   testresult([], _) :-
      write("\nWell done, Champion Zapper!"),
      delay(32000), exit.
   testresult(_, Row) :- Row<24, !.
   testresult(_, _) :-
      write("\nToo late, YOU have been zapped !"),
      delay(32000), exit.

   showThem([], _, _) :- !.
   showThem([Monster|TheRest], Row, Char) :-
      scr_char(Row, Monster, Char),
      showThem(TheRest, Row, Char).
   zapGun(N, C) :-
      N>0, !, scr_char(N, C, '^'), delay(150),
      scr_char(N, C, ' '), N1 = N-1, zapGun(N1, C).
   zapGun(_, _).

   test('z', 0, 0) :- !.
   test('x', 79, 79) :- !.
   test('z', OldCol, NewCol) :- !, NewCol = OldCol-1.
   test('x', OldCol, NewCol) :- !, NewCol = OldCol+1.
   test(_, C, C).

   delete(_, [], []).
   delete(X, [X|R], R) :- !.
   delete(X, [Y|R], [Y|R2]) :- !, delete(X, R, R2).

   delay(N) :- N>0, !, N1 = N-1, delay(N1).
   delay(0).

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -