Advertisement
Guest User

Untitled

a guest
Dec 6th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 4.18 KB | None | 0 0
  1. start :-
  2.   wprowadzenie,
  3.   reset_answers,
  4.   znajdz_cwiczenie(Cwiczenie),
  5.   opis(Cwiczenie), nl.
  6.  
  7. wprowadzenie :-
  8.     write('Jakie ćwiczenie wybrać?'), nl,
  9.     write('By odpowiedzieć, wybierz odpowiednią liczbę i zakończ kropką (.)'), nl, nl.
  10.  
  11. znajdz_cwiczenie(Cwiczenie) :-
  12.     cwiczenie(Cwiczenie), !.
  13.  
  14. :- dynamic(progress/2).
  15.  
  16. reset_answers :-
  17.   retract(progress(_, _)),
  18.   fail.
  19. reset_answers.
  20.  
  21. % baza wiedzy
  22. cwiczenie(ohp) :-
  23.     sport([dwuboj, trojboj]),
  24.     poziom([amator, sredni]),
  25.     partia(rece).
  26.  
  27. cwiczenie(biceps) :-
  28.     sport(klturystyka),
  29.     poziom([amator, sredni, zawodnik]),
  30.     partia(rece).
  31.  
  32. cwiczenie(klokov) :-
  33.     sport(dwuboj),
  34.     poziom(zawodnik),
  35.     partia(rece).
  36.  
  37. cwiczenie(ohp_za_glowy) :-
  38.     sport(trojboj),
  39.     poziom(zawodnik),
  40.     partia(rece).
  41.  
  42. cwiczenie(lawka) :-
  43.     sport([trojboj, kulturystyka]),
  44.     poziom([amator, sredni, zawodnik]),
  45.     partia(klata).
  46.  
  47. cwiczenie(brak) :-
  48.     sport(dwuboj),
  49.     poziom([amator, sredni, zawodnik]),
  50.     partia(klata).
  51.  
  52. cwiczenie(podciaganie) :-
  53.     sport(dwuboj),
  54.     poziom([amator, sredni, zawodnik]),
  55.     partia(plecy).
  56.  
  57. cwiczenie(wioslowanie) :-
  58.     sport(kulturystyka),
  59.     poziom([amator, sredni, zawodnik]),
  60.     partia(plecy).
  61.  
  62. cwiczenie(martwy) :-
  63.     sport(trojboj),
  64.     poziom([amator, sredni, zawodnik]),
  65.     partia(plecy).
  66.  
  67. cwiczenie(front) :-
  68.     sport(dwuboj),
  69.     poziom([sredni, zawodnik]),
  70.     partia(nogi).
  71.  
  72. cwiczenie(highbar) :-
  73.     sport(dwuboj),
  74.     poziom(amator),
  75.     partia(nogi).
  76.  
  77. cwiczenie(lowbar) :-
  78.     sport(trojboj),
  79.     poziom([amator, sredni, zawodnik]),
  80.     partia(nogi).
  81.  
  82. cwiczenie(sownica) :-
  83.     sport(kulturystyka),
  84.     poziom([amator, sredni, zawodnik]),
  85.     partia(nogi).
  86.  
  87. % pytania
  88. pytanie(sport) :-
  89.     write('Jaki sport uprawiasz?'), nl.
  90.  
  91. pytanie(poziom) :-
  92.     write('Jaki jest twoj poziom zaawansowania?'), nl.
  93.  
  94. pytanie(partia) :-
  95.     write('Jaka partia ciała?'), nl.
  96.  
  97. % odpowiedzi
  98. odpowiedz(dwuboj) :-
  99.     write('Dwuboj olimpijski').
  100.  
  101. odpowiedz(trojboj) :-
  102.     write('Trójbój siłowy').
  103.  
  104. odpowiedz(kulturystyka) :-
  105.     write('Kulturystyka').
  106.  
  107. odpowiedz(amator) :-
  108.     write('Amator').
  109.  
  110. odpowiedz(sredni) :-
  111.     write('Średnio-zaawansowany').
  112.  
  113. odpowiedz(zawodnik) :-
  114.     write('Startujący na zawodach').
  115.  
  116. odpowiedz(rece) :-
  117.     write('Rece').
  118.  
  119. odpowiedz(klata) :-
  120.     write('Klatka piersiowa').
  121.  
  122. odpowiedz(plecy) :-
  123.     write('Plecy').
  124.  
  125. odpowiedz(nogi) :-
  126.     write('Nogi').
  127.  
  128. % opisy
  129. opis(ohp) :-
  130.   write('Wyciskanie sztangi z przed twarzy stojąc'), nl.
  131.  
  132. opis(biceps) :-
  133.   write('Uginanie blabla'), nl.
  134.  
  135. opis(klokov) :-
  136.   write('Strict OHP'), nl.
  137.  
  138. opis(ohp_za_glowy) :-
  139.   write('Wyciskanie sztangi zza glowy stojąc'), nl.
  140.  
  141. opis(lawka) :-
  142.   write('Wyciskanie sztangi lezac'), nl.
  143.  
  144. opis(brak) :-
  145.   write('Brak takiego ćwiczenia'), nl.
  146.  
  147. opis(podciaganie) :-
  148.   write('Nachwyt'), nl.
  149.  
  150. opis(wioslowanie) :-
  151.   write('Przyciąganie sztangi do brzucha'), nl.
  152.  
  153. opis(martwy) :-
  154.   write('Podnoszenie sztangi do pasa'), nl.
  155.  
  156. opis(front) :-
  157.   write('przysiad przedni'), nl.
  158.  
  159. opis(highbar) :-
  160.   write('przysiad ze sztangą na kapturach'), nl.
  161.  
  162. opis(lowbar) :-
  163.   write('przysiad ze sztangą na barkach'), nl.
  164.  
  165. opis(sownica) :-
  166.   write('przysiad na sownicy'), nl.
  167.  
  168. % pytania
  169. sport(Answer) :-
  170.   progress(sport, Answer).
  171. sport(Answer) :-
  172.   \+ progress(sport, _),
  173. ask(sport, Answer, [dwuboj, trojboj, kulturystyka]).
  174.  
  175. poziom(Answer) :-
  176.   progress(poziom, Answer).
  177. poziom(Answer) :-
  178.   \+ progress(poziom, _),
  179. ask(poziom, Answer, [amator, sredni, zawodnik]).
  180.  
  181. partia(Answer) :-
  182.   progress(partia, Answer).
  183. partia(Answer) :-
  184.   \+ progress(partia, _),
  185. ask(partia, Answer, [rece, klata, plecy, nogi]).
  186.  
  187. % Sformatowana lista
  188. answers([], _).
  189. answers([First|Rest], Index) :-
  190.     write(Index), write(' '), odpowiedz(First), nl,
  191.     NextIndex is Index + 1,
  192.     answers(Rest, NextIndex).
  193.  
  194. % Zwraca index
  195. parse(0, [First|_], First).
  196. parse(Index, [First|Rest], Response) :-
  197.     Index > 0,
  198.     NextIndex is Index - 1,
  199.     parse(NextIndex, Rest, Response).
  200.  
  201. % Pyta i zapisuje odpowiedz
  202. ask(Question, Answer, Choices) :-
  203.     pytanie(Question),
  204.     answers(Choices, 0),
  205.     read(Index),
  206.     parse(Index, Choices, Response),
  207.     asserta(progress(Question, Response)),
  208.     Response = Answer.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement