-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmap.pl
More file actions
120 lines (102 loc) · 2.77 KB
/
Copy pathmap.pl
File metadata and controls
120 lines (102 loc) · 2.77 KB
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
/*Implementasi peta dalam permainan*/
% Variabel dynamic (nilainya berubah-ubah)
:- dynamic(playLoc/2).
/*Inisialisasi awal*/
playLoc(1,1). %Posisi awal player selalu (1,1)
skyLoc(5,6).
/*Deklarasi Rules*/
kompas :-
playLoc(X,Y),skyLoc(X,Y),nl,
write('Anda berada pada Skypiea!'),nl,
write('= = = K A S A T U = = ='),nl,!.
kompas :-
nl,
write('Anda membuka peta anda'), nl,
write('Ini lokasi anda'),nl,nl,
write('= = = K A S A T U = = ='),nl,!.
printmap(11,11) :- write('X'),nl,!.
printmap(X,11) :-
write('X'),nl,
Next is X+1,
printmap(Next,0),!.
printmap(0,X) :-
write('X '),
Next is X+1,
printmap(0,Next),!.
printmap(X,0) :-
write('X '),
printmap(X,1),!.
printmap(11,X) :-
write('X '),
Next is X+1,
printmap(11,Next),!.
printmap(X,Y) :-
playLoc(X,Y),
write('P '),
Next is Y+1,
printmap(X,Next),!.
printmap(X,Y) :-
skyLoc(X,Y),
write('S '),
Next is Y+1,
printmap(X,Next),!.
printmap(X,Y) :-
write('~ '),
Next is Y+1,
printmap(X, Next),!.
move(n) :-
playLoc(X,Y), Prev is X-1,
skyLoc(A,B), A == Prev, B == Y,
write('Berlayar ke utara. . .'),nl,
write('Anda sedang berada di Skypiea!'),nl,
write('Gunakan perintah heal. untuk menyembuhkan kru anda!'),nl,
retract(playLoc(X,Y)),
asserta(playLoc(Prev,Y)),!.
move(n) :-
playLoc(X,Y),
Prev is X-1,
write('Berlayar ke utara. . .'),nl,
retract(playLoc(X,Y)),
asserta(playLoc(Prev,Y)),!.
move(s) :-
playLoc(X,Y), Next is X+1,
skyLoc(A,B), A == Next, B == Y,
write('Berlayar ke selatan. . .'),nl,
write('Anda berada pada Skypiea!'),nl,
write('Gunakan perintah heal. untuk menyembuhkan kru anda!'),nl,
retract(playLoc(X,Y)),
asserta(playLoc(Next,Y)),!.
move(s) :-
playLoc(X,Y),
Next is X+1,
write('Berlayar ke selatan. . .'),nl,
retract(playLoc(X,Y)),
asserta(playLoc(Next,Y)),!.
move(e) :-
playLoc(X,Y), Next is Y+1,
skyLoc(A,B), A == X, B == Next,
write('Berlayar ke timur. . .'),nl,
write('Anda berada pada Skypiea!'),nl,
write('Gunakan perintah heal. untuk menyembuhkan kru anda!'),nl,
retract(playLoc(X,Y)),
asserta(playLoc(X,Next)),!.
move(e) :-
playLoc(X,Y),
Next is Y+1,
write('Berlayar ke timur. . .'),nl,
retract(playLoc(X,Y)),
asserta(playLoc(X,Next)),!.
move(w) :-
playLoc(X,Y), Next is Y+1,
skyLoc(A,B), A == X, B == Next,
write('Berlayar ke barat. . .'),nl,
write('Anda berada pada Skypiea!'),nl,
write('Gunakan perintah heal. untuk menyembuhkan kru anda!'),nl,
retract(playLoc(X,Y)),
asserta(playLoc(X,Next)),!.
move(w) :-
playLoc(X,Y),
Prev is Y-1,
write('Berlayar ke barat. . .'),nl,
retract(playLoc(X,Y)),
asserta(playLoc(X,Prev)),!.