30 lines
1.2 KiB
Prolog
30 lines
1.2 KiB
Prolog
name( character(Name, _, _, _), Name).
|
|
class( character( _, Class, _, _), Class).
|
|
level( character( _, _, Level, _), Level).
|
|
hitpoints(character( _, _, _, HP), HP).
|
|
|
|
levelup(character(Name, Class, Level, HP), character(Name, Class, Next, HP)) :-
|
|
succ(Level, Next).
|
|
|
|
aid(character(Name, Class, Level, HP), character(Name, Class, Level, T)) :-
|
|
T is HP+5.
|
|
|
|
hit(character(Name, Class, Level, HP), character(Name, Class, Level, T)) :-
|
|
T is HP-5.
|
|
|
|
status(character(Name, Class, Level, HP)) :-
|
|
write(Name), write(' is a level '), write(Level), write(' '), write(Class), write(' with '), write(HP), write(' hitpoints.'), nl.
|
|
|
|
:- initialization(main).
|
|
|
|
main :-
|
|
Gimli = character(gimli, fighter, 4, 35), status(Gimli),
|
|
Legolas = character(legolas, ranger, 5, 30), status(Legolas),
|
|
Gandalf = character(gandalf, wizard, 10, 25), status(Gandalf),
|
|
Frodo = character(frodo, rogue, 2, 20), status(Frodo),
|
|
write('legolas threw gimli, and gimli took 5 damage.'), nl,
|
|
hit(Gimli, Thrown), status(Thrown),
|
|
write('gandalf casts aid.'), nl,
|
|
aid(Thrown, Aided), status(Aided),
|
|
write('legolas leveled up.'), nl,
|
|
levelup(Legolas, Leveled), status(Leveled).
|