Differences

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

Link to this comparison view

programare:teme_2017:tema1_2017_cbd [2017/10/25 00:13]
radu.iacob [(35p) TASK 4:]
programare:teme_2017:tema1_2017_cbd [2017/10/27 00:26] (current)
radu.iacob [Responsabili]
Line 6: Line 6:
  
 Pentru fiecare zi (24 de ore) de întârziere,​ se vor scădea 10 puncte din nota acordată. Temele trimise după 7 de zile de întârziere vor putea fi notate cu maxim 30 de puncte. ​ În consecință,​ [[http://​ocw.cs.pub.ro/​courses/​programare/​regulament-cb-cd#​temele_de_casa|deadline-ul hard]] este **15.11.2017,​ ora 23:00**. Pentru fiecare zi (24 de ore) de întârziere,​ se vor scădea 10 puncte din nota acordată. Temele trimise după 7 de zile de întârziere vor putea fi notate cu maxim 30 de puncte. ​ În consecință,​ [[http://​ocw.cs.pub.ro/​courses/​programare/​regulament-cb-cd#​temele_de_casa|deadline-ul hard]] este **15.11.2017,​ ora 23:00**.
 +
 +Update: 27.10.2017: Am publicat un checker local + subset de teste pe cs.curs [[http://​cs.curs.pub.ro/​2017/​mod/​resource/​view.php?​id=2653|Checker]]
 +
 +Publicare: 25.10.2017
  
 ====== Întrebări ====== ====== Întrebări ======
  
-Dacă aveți nelămuriri,​ puteți să ne contactați pe [[TODO|forumul dedicat]].\\+Dacă aveți nelămuriri,​ puteți să ne contactați pe [[http://​cs.curs.pub.ro/​2017/​mod/​forum/​view.php?​f=898|forumul dedicat]].\\
 La orice întrebare vom răspunde în maxim 24 de ore.\\ La orice întrebare vom răspunde în maxim 24 de ore.\\
 Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline. Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline.
Line 40: Line 44:
 ====== (20p) TASK 1 ====== ====== (20p) TASK 1 ======
  
-Scrieți un program care citește de la tastatură un număr ce reprezintă dimensiunea triunghiului și un caracter, și afișează un triunghi făcut din caracterul respectiv și cu dimensiunea respectivă. Triunghiul trebuie să aibă aceeași formă cu cel de mai sus (trebuie să reprezinte jumătatea din dreapta sus a unui pătrat tăiat pe diagonală). Caracterele de pe aceeași linie trebuie separate cu un spațiu.+Scrieți un program care citește de la tastatură un număr ce reprezintă dimensiunea triunghiului și un caracter, și afișează un triunghi făcut din caracterul respectiv și cu dimensiunea respectivă. Triunghiul trebuie să aibă aceeași formă cu cel de mai sus (trebuie să reprezinte jumătatea din dreapta sus a unui pătrat tăiat pe diagonală). Caracterele de pe aceeași linie trebuie separate cu un spațiu. Spațiile libere (jumatatea din stanga jos simetrica triunghiului) trebuie făcută tot din caracterul ​spațiu.
  
 **Format intrare:** **Format intrare:**
Line 68: Line 72:
 Explicație:​ Un triunghi ce folosește caracterul și dimensiunea specificate în fișierul de input, și care are forma de mai sus. Explicație:​ Un triunghi ce folosește caracterul și dimensiunea specificate în fișierul de input, și care are forma de mai sus.
  
-====== (30p) TASK 2: ======+====== (35p) TASK 2: ======
  
 Între timp, Gigi devine din ce în ce mai bun la programare. Fiind un mare pasionat de jocuri (colecția lui de pe Steam atinge 2000$, are toate pachetele de tier 1 in Hearthstone,​ și are peste 900 de ore în CS:GO), decide să încerce să facă un mic joculeț în consolă (top-down single-player turn-based MMORPG). Începe cu ceva simplu: să creeze un personaj pe care să-l poată muta folosind tastatura. Între timp, Gigi devine din ce în ce mai bun la programare. Fiind un mare pasionat de jocuri (colecția lui de pe Steam atinge 2000$, are toate pachetele de tier 1 in Hearthstone,​ și are peste 900 de ore în CS:GO), decide să încerce să facă un mic joculeț în consolă (top-down single-player turn-based MMORPG). Începe cu ceva simplu: să creeze un personaj pe care să-l poată muta folosind tastatura.
Line 116: Line 120:
 ****** ******
 *    * *    *
-*  ​*+*  ​*
 ****** ******
 </​code>​ </​code>​
Line 127: Line 131:
 ****** ******
 *    * *    *
-*   v*+*   >*
 ****** ******
 GAME COMPLETED GAME COMPLETED
 </​code>​ </​code>​
  
-Scrieți un program care citește de la tastatură 5 numere: **N**, **M**, **x**, **y**, **P** (din care **N**, **M**, **x** si **y** cu semnificația dată mai sus, iar **P** va fi momentan 0 – îl veți folosi la taskul ​4), afișează tabla curentă și aplică mișcarea conform cu datele citite de la tastatură. După fiecare mișcare citită de la tastatură, tabla de joc trebuie afișată din nou, având modificarea aplicată.+Scrieți un program care citește de la tastatură 5 numere: **N**, **M**, **x**, **y**, **P** (din care **N**, **M**, **x** si **y** cu semnificația dată mai sus, iar **P** va fi momentan 0 – îl veți folosi la taskul ​3), afișează tabla curentă și aplică mișcarea conform cu datele citite de la tastatură. După fiecare mișcare citită de la tastatură, tabla de joc trebuie afișată din nou, având modificarea aplicată.
  
 **Format intrare:** **Format intrare:**
Line 165: Line 169:
   * **la afișarea unei table de joc, după ultima linie de asteriscuri trebuie afișat un singur   * **la afișarea unei table de joc, după ultima linie de asteriscuri trebuie afișat un singur
 caracter newline** (\n) caracter newline** (\n)
 +  * caracterul cu care este afișat personajul se modifică în funcție de direcția pe care personajul a fost mutat ultima oară. Se vor folosi caracterele ‘v’, ‘^’, ‘<’, ‘>’ pentru jos, sus, stânga și, respectiv, dreapta
 +  * la început (după citirea primei linii de la tastatură),​ personajul va fi implicit orientat în jos și va folosi caracterul ‘v’ pentru afișare.
  
-====== (5p) TASK 3:====== 
  
-Modificați programul anterior astfel încât forma personajului (i.e. caracterul cu care este afișat) să se modifice în funcție de direcția pe care personajul a fost mutat ultima oară. Se vor folosi caracterele ‘v’, ‘^’, ‘<’, ‘>’ pentru jos, sus, stânga și, respectiv, dreapta. La început (după citirea primei linii de la tastatură),​ personajul va fi implicit orientat în jos și va folosi caracterul ‘v’ pentru afișare. 
  
-======(35p) TASK 4:======+======(35p) TASK 3:======
  
 Având ambiții de gamer profesionist,​ lui Gigi i se pare că jocul este prea simplu, astfel încât Având ambiții de gamer profesionist,​ lui Gigi i se pare că jocul este prea simplu, astfel încât
Line 179: Line 183:
   * **l** – linia pe care se află obstacolul   * **l** – linia pe care se află obstacolul
   * **c** – coloana pe care se află obstacolul   * **c** – coloana pe care se află obstacolul
-  * **m** – un caracter ce reprezintă modul de funcționare al obstacolului:​ ‘f’ pentru obstacol fix, și +  * **m** – un caracter ce reprezintă modul de funcționare al obstacolului:​ ‘f’ pentru obstacol fix, și ‘m’ pentru obstacol mobil
-‘m’ pentru obstacol mobil+
  
 Un obstacol va fi reprezentat pe tabla de joc folosind caracterul ‘x’. Un obstacol fix va rămâne mereu acolo unde a fost poziționat,​ la coordonatele (**l**, **c**). Un obstacol mobil se va deplasa înspre personaj, pe una din cele 8 direcții, cu 1 poziție la fiecare 2 ture. Când utilizatorul execută o mutare care trimite personajul intr-o poziție ocupată de un obstacol (sau când un obstacol mobil vine peste personaj), jocul se termină (nu se mai afișează tabla de joc încă o dată, în schimb se afișează mesajul “GAME OVER” și execuția se încheie). Un obstacol va fi reprezentat pe tabla de joc folosind caracterul ‘x’. Un obstacol fix va rămâne mereu acolo unde a fost poziționat,​ la coordonatele (**l**, **c**). Un obstacol mobil se va deplasa înspre personaj, pe una din cele 8 direcții, cu 1 poziție la fiecare 2 ture. Când utilizatorul execută o mutare care trimite personajul intr-o poziție ocupată de un obstacol (sau când un obstacol mobil vine peste personaj), jocul se termină (nu se mai afișează tabla de joc încă o dată, în schimb se afișează mesajul “GAME OVER” și execuția se încheie).
Line 239: Line 242:
 **Observații finale:** **Observații finale:**
  
-  * toate coordonatele (pentru personaj și obstacole) vor avea valori valide (se vor afla in interiorul tablei de joc, nu vor avea valori negative, nu se vor suprapune etc.), deci nu e nevoie de verificari ​suplimentare+  * toate coordonatele (pentru personaj și obstacole) vor avea valori valide (se vor afla in interiorul tablei de joc, nu vor avea valori negative, nu se vor suprapune etc.), deci nu e nevoie de verificări ​suplimentare
  
   * după oricare din mesajele “GAME OVER” sau “GAME COMPLETED” trebuie afișat caracterul newline (\n)   * după oricare din mesajele “GAME OVER” sau “GAME COMPLETED” trebuie afișat caracterul newline (\n)
Line 247: Line 250:
   * cerințele acestei teme trebuie abordate în ordine   * cerințele acestei teme trebuie abordate în ordine
  
-  * Un obstacol mobil se va deplasa înspre personaj alegând poziția adiacentă care minimizează funcția: +  ​* **Un obstacol mobil se va deplasa înspre personaj alegând poziția adiacentă care minimizează funcția**
-<​code>​| x_personaj - x_obstacol | + | y_personaj - y_obstacol | </​code>​+    <​code>​ | x_personaj - x_obstacol | + | y_personaj - y_obstacol | </​code>​
  
   * obstacolele pot ajunge să se suprapună de-a lungul jocului   * obstacolele pot ajunge să se suprapună de-a lungul jocului
programare/teme_2017/tema1_2017_cbd.1508879628.txt.gz · Last modified: 2017/10/25 00:13 by radu.iacob
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