Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pp:23:teme:prolog-carcassonne [2023/05/17 01:12]
bot.pp
pp:23:teme:prolog-carcassonne [2023/05/19 12:36] (current)
bot.pp
Line 2: Line 2:
  
   * Data publicării:​ 09.05.2023   * Data publicării:​ 09.05.2023
-  * Data ultimei modificări: ​17.05.2023 (vezi [[#​Changelog|changelog]]+  * Data ultimei modificări: ​19.05.2023 (vezi [[#​Changelog|changelog]] ​)
   * Deadline hard: ziua laboratorului 12 (la o săptămână după ziua laboratorului 12 pentru seria CB, adică în zilele de 24-25 mai în funcție de ziua laboratorului)   * Deadline hard: ziua laboratorului 12 (la o săptămână după ziua laboratorului 12 pentru seria CB, adică în zilele de 24-25 mai în funcție de ziua laboratorului)
   * [[https://​curs.upb.ro/​2022/​mod/​forum/​view.php?​id=188540|Forum temă]]   * [[https://​curs.upb.ro/​2022/​mod/​forum/​view.php?​id=188540|Forum temă]]
Line 184: Line 184:
 ===== Etapa 2 ===== ===== Etapa 2 =====
  
-În etapa 2 ne vom concentra pe reprezentarea și lucrul cu o tablă de joc și pe plasarea pieselor în joc.+În etapa 2 ne vom concentra pe reprezentarea și lucrul cu o tablă de joc și pe plasarea pieselor în joc. Veți lucra tot în fișierul ''​%%ccs.pl%%'',​ unde trebuie să existe deja predicatele din prima etapă.
  
-Jocul Carcassonne începe cu plasarea unei piese undeva pe masă, și apoi cu plasarea altor piese. În afară de prima piesă, orice altă piesă trebuie plasată ​langă (având o muchie comună) una sau mai multe piese deja plasate pe masă, și trebuie să se potrivească cu toate piesele vecine deja plasate pe masă. Vedeți acest [[https://​www.youtube.com/​watch?​v=gX8jFLUw8D4|clip]],​ cu mențiunea că noi ne vom ocupa doar de plasarea pieselor, nu și de plasarea omuleților sau de calculul punctelor.+Jocul Carcassonne începe cu plasarea unei piese undeva pe masă, și apoi cu plasarea altor piese. În afară de prima piesă, orice altă piesă trebuie plasată ​lângă (având o muchie comună) una sau mai multe piese deja plasate pe masă, și trebuie să se potrivească cu toate piesele vecine deja plasate pe masă. Vedeți acest [[https://​www.youtube.com/​watch?​v=gX8jFLUw8D4|clip]],​ cu mențiunea că noi ne vom ocupa doar de plasarea pieselor, nu și de plasarea omuleților sau de calculul punctelor.
  
 ==== Reprezentarea tablei ==== ==== Reprezentarea tablei ====
  
-Trebuie să vă construiți o reprezentare pentru starea tablei de joc. Această reprezentare trebuie să conțină piesele aflate pe masă (în reprezentarea construită la etapa 1) și pozițiile lor, în coordonate carteziene. În predicatele de mai jos, pozițiile vor fi perechi ''​%%(X,​ Y)%%''​. Aveți de implementat predicatele de mai jos, cu observația că trebuie să implementați cel puțin primele 3 predicate pentru a putea testa:+Trebuie să vă construiți o reprezentare pentru starea tablei de joc. Această reprezentare trebuie să conțină piesele aflate pe masă (în reprezentarea construită la etapa 1) și pozițiile lor, în coordonate carteziene. 
 + 
 +În predicatele de mai jos, pozițiile vor fi perechi ''​%%(X,​ Y)%%''​. ​Notați că pozițiile sunt relative la o piesă arbitrară, și putem avea și coordonate negative. 
 + 
 +Aveți de implementat predicatele de mai jos, cu observația că trebuie să implementați cel puțin primele 3 predicate pentru a putea testa:
  
   * ''​%%emptyBoard(Board)%%''​ - leagă ''​%%Board%%''​ la reprezentarea unei mese goale, fără piese.   * ''​%%emptyBoard(Board)%%''​ - leagă ''​%%Board%%''​ la reprezentarea unei mese goale, fără piese.
Line 203: Line 207:
 <​code>​ <​code>​
 boardSetTest(Index,​ Board), printBoard(Board). boardSetTest(Index,​ Board), printBoard(Board).
 +
 +</​code>​
 +Predicatul ''​%%printBoard/​1%%''​ afișează și coordonatele pe margini, cu coordonatele x mai mici în dreapta și cu coordonatele y mai mici în jos. De exemplu, pentru tabla cu indexul 1 în teste -- corespunzând cu zona din centru-dreapta în imaginea de mai sus, afișarea este:
 +
 +<​code>​
 +  -1    0    1    2       
 +                         
 +                         
 +          .+++.          ​
 +            +            ​
 +                      1  ​
 +            +            ​
 +          .+++.          ​
 +.   ​.. ​  ​.+++++. ​  ​. ​    
 +    ++   ​+++++++ ​        
 +  +++++++++++++++ ​    ​0  ​
 +  ++++   ​++ ​  ​++ ​        
 +.++++. ​  .. | ..   ​. ​    
 +.+++.     . | .          ​
 +  +          \           
 +-----         ​- ​      ​-1  ​
 +                         
 +.   ​. ​    ​. ​  ​. ​         ​
 +
  
 </​code>​ </​code>​
Line 224: Line 252:
  
   * [[https://​ocw.cs.pub.ro/​courses/​_media/​pp/​23/​teme/​prolog/​etapa1.zip|Schelet etapa 1]]   * [[https://​ocw.cs.pub.ro/​courses/​_media/​pp/​23/​teme/​prolog/​etapa1.zip|Schelet etapa 1]]
 +  * [[https://​ocw.cs.pub.ro/​courses/​_media/​pp/​23/​teme/​prolog/​etapa2.zip|Schelet etapa 2]]
  
 ===== Changelog ===== ===== Changelog =====
  
 +  * 19.05 -- corecție a testului canPlaceA|a
 +  * 18.05 -- clarificare necesitate prima etapă; îmbunătățire afișare teste cu mulțimi
 +  * 17.05 (seara) -- testele pentru etapa 2, mici corecții în comentarii și enunț, mai ales observații despre poziții
   * 17.05 -- etapa 2 publicată (fără teste)   * 17.05 -- etapa 2 publicată (fără teste)
   * 16.05 -- pus la loc linia pentru activarea modului de testare detaliat din ''​%%testing.pl%%''​   * 16.05 -- pus la loc linia pentru activarea modului de testare detaliat din ''​%%testing.pl%%''​
pp/23/teme/prolog-carcassonne.1684275172.txt.gz · Last modified: 2023/05/17 01:12 by bot.pp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0