Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:prolog:prolog_lab:listy1 [2014/03/18 08:16] msl [Listy różnicowe] Do przećwiczenia |
pl:prolog:prolog_lab:listy1 [2018/11/06 16:10] kkutt [1. Notacja list] |
<code prolog> | <code prolog> |
?- porownaj([a,b,c,d]). | ?- porownaj([a,b,c,d]). |
No | false |
?- porownaj([a,b,c,c]). | ?- porownaj([a,b,c,c]). |
Yes | true |
</code> | </code> |
| |
?- zamien([a,b,c,d],X). | ?- zamien([a,b,c,d],X). |
X=[a,b,d,c] | X=[a,b,d,c] |
Yes | true |
</code> | </code> |
| |
| |
===== Dla Zainteresowanych ===== | ===== Dla Zainteresowanych ===== |
| |
| ==== Minecraft ==== |
| Zastanówmy się nad próbą implementacji prostej gry typu [[http://pl.wikipedia.org/wiki/Minecraft|Minecraft]]. Kluczowym elementem gry jest silnik wokselowy, który odpowiada za renderowania ogromnego świata przy użyciu prostych klocków zwanych [[http://pl.wikipedia.org/wiki/Woksel|wokselami]]. Zaczniemy od rysowania przykładowego woksela. Proszę uruchomić program {{:pl:prolog:prolog_lab:cuboid.pl|}} (wymagane XPCE) i przeanalizować jego działanie. |
| |
| <code prolog> |
| ?- cuboid(2,2,2). |
| </code> |
| |
| Następnie proszę zapoznać się z kodem odpowiadającym za animację {{:pl:prolog:prolog_lab:animation.pl|}}: |
| |
| <code prolog> |
| ?- sm. |
| </code> |
| |
| Zadania: |
| - Przerobić predykat ''cuboid'' tak, żeby można było sprecyzować jego pozycję w przestrzeni |
| - Napisać predykat ''cuboids'', który przyjmuje listę współrzędnych i rysuje w nich sześciany o zadanej długości boku |
| - Przy pomocy predykatu ''cuboids'' należy zamodelować [[http://i.ytimg.com/vi/u1bX8kEy0pg/maxresdefault.jpg?|złożony obiekt ze świata Minecraft]] |
| - Bazując na kodzie z ''animation.pl'' należy wprawić krowę w ruch sinusoidalny, imitujący [[https://www.youtube.com/watch?v=QH2-TGUlwu4|kota z filmu]] |
| - [Dla odważnych] dodać do animacji [[https://archive.org/details/nyannyannyan|dźwięk]] podobny do tego z [[https://www.youtube.com/watch?v=QH2-TGUlwu4|filmu]] |
| |
| Pytania: |
| - Czy rozsądne jest rysowanie wszystkich klocków? Jak wykryć, które klocki są widoczne z perspektywy gracza? Pomocny może okazać się [[http://et1337.com/2015/02/18/the-poor-mans-voxel-engine/#|link]] |
| - Czy możliwe jest zrobienie w podobny sposób imitacji poniższego [[http://goo.gl/YroZm|filmu]]? |
| |
| |
==== Efektywność odwracania list ==== | ==== Efektywność odwracania list ==== |
* zastanowić się, jakie przewagi ma ''sklej/3'' nad ''sklej_roznicowo/3''; | * zastanowić się, jakie przewagi ma ''sklej/3'' nad ''sklej_roznicowo/3''; |
* przepisać wybrany predykat z zajęć (poza ''sklej/3'') na wersję korzystającą z list różnicowych. | * przepisać wybrany predykat z zajęć (poza ''sklej/3'') na wersję korzystającą z list różnicowych. |
* | |
== Do poczytania: == | == Do poczytania: == |
| |