-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclue_db.pro
127 lines (119 loc) · 4.01 KB
/
clue_db.pro
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
% %%%%% RESET DATABASE
setup :-
map_character_names,
map_weapon_names,
map_room_names.
% maps the full character and abbreviation for quick reference and code reduction
map_character_names :-
assert(character_name('s', 'Miss Scarlett')),
assert(character_name('m', 'Colonel Mustard')),
assert(character_name('w', 'Mrs. White')),
assert(character_name('g', 'Mr. Green')),
assert(character_name('p', 'Mrs. Peacock')),
assert(character_name('pl', 'Professor Plum')).
map_weapon_names :-
assert(weapon_name('k', 'knife')),
assert(weapon_name('c', 'candlestick')),
assert(weapon_name('r', 'revolver')),
assert(weapon_name('ro', 'rope')),
assert(weapon_name('l', 'lead pipe')),
assert(weapon_name('w', 'wrench')).
map_room_names :-
assert(room_name('k', 'kitchen')),
assert(room_name('b', 'ballroom')),
assert(room_name('c', 'conservatory')),
assert(room_name('bi', 'billiard room')),
assert(room_name('l', 'library')),
assert(room_name('s', 'study')),
assert(room_name('h', 'hall')),
assert(room_name('lo', 'lounge')),
assert(room_name('d', 'dining room')).
reset_all :-
retractall(weapon(X, Y, Z)),
retractall(room(X, Y, Z)),
retractall(person(X, Y, Z)),
retractall(card(X, Y, Z)),
retractall(suggestion(P, X, Y, Z)),
retractall(player(_,_)),
retractall(self(_)),
retractall(character_name(_,_)),
retractall(weapon_name(_,_)),
retractall(room_name(_,_)).
add_cards :-
assert(card(X,Y,Z) :- room(X, Y, Z); person(X, Y, Z); weapon(X,Y,Z)),
%
assert(person('Miss Scarlett', -1, [])),
assert(person('Colonel Mustard', -1, [])),
assert(person('Mrs. White', -1, [])),
assert(person('Mr. Green', -1, [])),
assert(person('Mrs. Peacock', -1, [])),
assert(person('Professor Plum', -1, [])),
%
assert(room('kitchen', -1, [])),
assert(room('ballroom', -1, [])),
assert(room('conservatory', -1, [])),
assert(room('billiard room', -1, [])),
assert(room('library', -1, [])),
assert(room('study', -1, [])),
assert(room('hall', -1, [])),
assert(room('lounge', -1, [])),
assert(room('dining room', -1, [])),
%
assert(weapon('knife', -1, [])),
assert(weapon('candlestick', -1, [])),
assert(weapon('revolver', -1, [])),
assert(weapon('rope', -1, [])),
assert(weapon('lead pipe', -1, [])),
assert(weapon('wrench', -1, [])).
win_condition1 :-
assert(card(X,Y,Z) :- room(X, Y, Z); person(X, Y, Z); weapon(X,Y,Z)),
%
assert(person('Miss Scarlett', 1, [])),
assert(person('Colonel Mustard', 1, [])),
assert(person('Mrs. White', 1, [])),
assert(person('Mr. Green', 1, [])),
assert(person('Mrs. Peacock', 1, [])),
assert(person('Professor Plum', -1, [])),
%
assert(room('kitchen', 1, [])),
assert(room('ballroom', 1, [])),
assert(room('conservatory', 1, [])),
assert(room('billiard room', 1, [])),
assert(room('library', 1, [])),
assert(room('study', 1, [])),
assert(room('hall', 1, [])),
assert(room('lounge', 1, [])),
assert(room('dining room', -1, [])),
%
assert(weapon('knife', 1, [])),
assert(weapon('candlestick', 1, [])),
assert(weapon('revolver', 1, [])),
assert(weapon('rope', 1, [])),
assert(weapon('lead pipe', 1, [])),
assert(weapon('wrench', -1, [])).
win_condition2 :-
assert(card(X,Y,Z) :- room(X, Y, Z); person(X, Y, Z); weapon(X,Y,Z)),
%
assert(person('Miss Scarlett', 1, [])),
assert(person('Colonel Mustard', 1, [])),
assert(person('Mrs. White', 1, [])),
assert(person('Mr. Green', 1, [])),
assert(person('Mrs. Peacock', 1, [])),
assert(person('Professor Plum', -1, [])),
%
assert(room('kitchen', 1, [])),
assert(room('ballroom', 1, [])),
assert(room('conservatory', 1, [])),
assert(room('billiard room', 1, [])),
assert(room('library', 1, [])),
assert(room('study', 1, [])),
assert(room('hall', 1, [])),
assert(room('lounge', 1, [])),
assert(room('dining room', -1, [])),
%
assert(weapon('knife', 1, [])),
assert(weapon('candlestick', 1, [])),
assert(weapon('revolver', 1, [])),
assert(weapon('rope', -1, [1,2])),
assert(weapon('lead pipe', 1, [])),
assert(weapon('wrench', -1, [])).