Spis treści

1) Pliki z kodami programów wykonanych na zajęciach:

Algorytm 1

Robot porusza się dowolnie wewnątrz obszaru na planszy testowej ograniczonego czarną linią. Nie może poza niego wyjechać! Gdy najedzie na czarną linię, powinien zawrócić. Niekoniecznie o 180 stopni. Np. Angle is 120 + random(120) zunifikuje Angle z liczbą z przedziału od 120 do 240. Można jej użyć jako kąt obrotu robota.

Rozwiązanie

:- consult('plnxt.pl').
 
start :-
       nxt_open,
       nxt_light_LED(activate),
       trigger_create(_,check_color,odwroc),
       nxt_go(300).
 
check_color :-
       nxt_light(Value, force),
       Value < 55,
       write(Value).
 
 
 
odwroc :-
       nxt_rotate(320, 120 + random(120), force),
       start.
 
 
:- start.

Algorytm 2

Robot przemieszcza się po pomieszczeniu i zmienia kierunek poruszania się, gdy przed sobą napotka przeszkodę.

:- consult('plnxt.pl').
 
start :-
       nxt_open,
       trigger_create(_,check_distance,odwroc),
       nxt_go(300).
 
check_distance :-
       nxt_ultrasonic(Distance,force),
       Distance < 5.
 
 
 
odwroc :-
       nxt_rotate(320, 120 + random(120), force),
       start.
 
 
:- start.

2) Spostrzeżenia, napotkane problemy, wnioski, uwagi na temat PLNXT:

:- consult('sciezka_do_plnxt.pl').
 
start :-
	nxt_open,
	trigger_create(_,check_distance,[nxt_stop,nxt_close]),
	nxt_go(300).
 
check_distance :-
	nxt_ultrasonic(Distance,force),
	Distance < 15.

SWIPL wyświetla komunikat, że nie może odnaleźć predykatu nxt_close, nie wiemy dlaczego tak się dzieje, ponieważ samo wywołanie tego predykatu działa poprawnie