Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %player(Name, UserName, Age).
- player('Danny', 'Best Player Ever', 27).
- player('Annie', 'Worst Player Ever', 24).
- player('Harry', 'A-Star Player', 26).
- player('Manny', 'The Player', 14).
- player('Jonny', 'A Player', 16).
- %game(Name, Categories, MinAge).
- game('5 ATG', [action, adventure, open-world, multiplayer], 18).
- game('Carrier Shift: Game Over', [action, fps, multiplayer, shooter], 16
- ).
- game('Duas Botas', [action, free, strategy, moba], 12).
- %played(Player, Game, HoursPlayed, PercentUnlocked)
- :- dynamic played/4.
- played('Best Player Ever', '5 ATG', 3, 83).
- played('Worst Player Ever', '5 ATG', 52, 9).
- played('The Player', 'Carrier Shift: Game Over', 44, 22).
- played('A Player', 'Carrier Shift: Game Over', 48, 24).
- played('A-Star Player', 'Duas Botas', 37, 16).
- played('Best Player Ever', 'Duas Botas', 33, 22).
- % 1
- playedALot(Player) :-
- played(Player, _Game, Hours, _Percent),
- Hours >= 50.
- % 2
- isAgeAppropriate(Player, Game) :-
- player(Player, _Username, Age),
- game(Game, _Categories, MinAge),
- Age >= MinAge.
- % 3
- updatePlayer(Player, Game, Hours, Percentage) :-
- played(Player, Game, CurrHours, CurrPercentage),
- NewHours is Hours + CurrHours,
- NewPercentage is CurrPercentage + Percentage,
- retract(played(Player, Game, CurrHours, CurrPercentage)),
- asserta(played(Player, Game, NewHours, NewPercentage)).
- % 4
- listGamesOfCategory(Cat) :-
- print_all_games_of_cat(Cat, []).
- print_all_games_of_cat(Cat, VisitedGames) :-
- game(Name, Categories, MinAge),
- \+ member(Name, VisitedGames),
- member(Cat, Categories), !,
- append(VisitedGames, [Name], VisitedGames2),
- write(Name), write(' ('), write(MinAge), write(')'), nl,
- print_all_games_of_cat(Cat, VisitedGames2).
- print_all_games_of_cat(_, _).
- % 5
- timePlayingGames(Player, Games, ListOfTimes, SumTimes) :-
- timePlayingGames_aux(Player, Games, [], ListOfTimes, 0, SumTimes).
- timePlayingGames_aux(_, [], ListOfTimes, ListOfTimes, SumTimes, SumTimes).
- timePlayingGames_aux(Player, [GamesH | GamesT], CurrListOfTimes, ListOfTimes, CurrSumTimes, SumTimes) :-
- played(Player, GamesH, Time, _), !,
- CurrSumTimes2 is CurrSumTimes + Time,
- append(CurrListOfTimes, [Time], CurrListOfTimes2),
- timePlayingGames_aux(Player, GamesT, CurrListOfTimes2, ListOfTimes, CurrSumTimes2, SumTimes).
- timePlayingGames_aux(Player, [_GamesH | GamesT], CurrListOfTimes, ListOfTimes, CurrSumTimes, SumTimes) :-
- append(CurrListOfTimes, [0], CurrListOfTimes2),
- timePlayingGames_aux(Player, GamesT, CurrListOfTimes2, ListOfTimes, CurrSumTimes, SumTimes).
- % 6
- fewHours(Player, Games) :-
- fewHours_aux(Player, [], [], Games).
- fewHours_aux(Player, VisitedGames, CurrGames, Games) :-
- played(Player, Game, Hours, _Percent),
- \+ member(Game, VisitedGames),
- Hours < 10, !,
- append(CurrGames, [Game], CurrGames2),
- append(VisitedGames, [Game], VisitedGames2),
- fewHours_aux(Player, VisitedGames2, CurrGames2, Games).
- fewHours_aux(Player, VisitedGames, CurrGames, Games) :-
- played(Player, Game, _Hours, _Percent),
- \+ member(Game, VisitedGames), !,
- append(VisitedGames, [Game], VisitedGames2),
- fewHours_aux(Player, VisitedGames2, CurrGames, Games).
- fewHours_aux(_Player, _VisitedGames, Games, Games).
- % 7
- % Lmao sou nabo podia usar findall
- ageRange(MinAge, MaxAge, Players) :-
- % ageRange_aux(MinAge, MaxAge, [], Players, []).
- findall(Name, (player(Name, _Username, Age), Age >= MinAge, Age =< MaxAge), Players).
- ageRange_aux(MinAge, MaxAge, CurrPlayers, Players, CheckedPlayers) :-
- player(Player, _Username, Age),
- \+ member(Player, CheckedPlayers),
- Age >= MinAge,
- Age =< MaxAge, !,
- append(CurrPlayers, [Player], CurrPlayers2),
- append(CheckedPlayers, [Player], CheckedPlayers2),
- ageRange_aux(MinAge, MaxAge, CurrPlayers2, Players, CheckedPlayers2).
- ageRange_aux(MinAge, MaxAge, CurrPlayers, Players, CheckedPlayers) :-
- player(Player, _Username, _Age),
- \+ member(Player, CheckedPlayers), !,
- append(CheckedPlayers, [Player], CheckedPlayers2),
- ageRange_aux(MinAge, MaxAge, CurrPlayers, Players, CheckedPlayers2).
- ageRange_aux(_MinAge, _MaxAge, Players, Players, _CheckedPlayers).
- % 8
- :- use_module(library(lists)).
- averageAge(Game, AverageAge) :-
- findall(Age, (played(_Username, Game, _, _), player(_Name, _Username, Age)), Ages),
- sumlist(Ages, AgeSum),
- length(Ages, AgeLen),
- AgeLen > 0,
- AverageAge is AgeSum / AgeLen.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement