This is an old revision of the document!


TerraBot - let's explore and save the planet !

Solutia voastra trebuie OBLIGATORIU sa fie OOP. Nerespectarea acestui format va duce la depunctarea totala a temei.

Daca aveti 100p pe checker, insa solutia voastra nu este OOP, atunci veti obtine 0p pe tema.

Introducere

TerraBot, robotul nostru explorator de la NASA, are misiunea de a descoperi o nouă planetă și de a o pregăti pentru colonizare. El trebuie să parcurgă cât mai mult din suprafața planetei, să colecteze informații utile despre mediu și să contribuie la îmbunătățirea condițiilor de viață. Atenție însă: energia lui TerraBot este limitată, așa că fiecare acțiune trebuie aleasă cu grijă pentru a asigura succesul misiunii!

Obiective

Scopul acestei teme este aplicarea cunoștințelor dobândite până acum, prin utilizarea conceptelor de programare orientată pe obiecte (OOP) în Java. Veți învăța să structurați un proiect într-un mod clar și organizat, să scrieți cod curat, modular și ușor de extins, care să permită adăugarea rapidă de noi funcționalități.

Proiectul propus va simula explorarea unei planete străine și va urmări evoluția mediului acesteia în funcție de anumiți parametri, simulare care se va dezvolta treptat pe măsură ce avansați.

Misiunea lui TerraBot

Odată lansat în misiune, TerraBot intră într-un mediu complet necunoscut, unde fiecare colț de planetă ascunde provocări diferite. Robotul nostru este programat să efectueze simulări, fiecare având scopul de a observa cum evoluează ecosistemul, de a colecta date despre plante, animale, apă și sol, și de a aplica diferite metode pentru a menține mediul sănătos și sustenabil.

În cadrul acestor simulări, TerraBot experimentează, învață și ia decizii bazate pe informațiile colectate. Fiecare simulare reprezintă o rundă completă de explorare: mediul se modifică, resursele sunt limitate, iar robotul trebuie să acționeze eficient pentru a-și atinge obiectivele. Astfel, testele voastre pot conține una sau mai multe simulări, oferindu-vă posibilitatea de a evalua performanța TerraBot în scenarii diferite.

Pașii pentru desfășurarea unui test sunt următorii:

  1. Se generează preambulul – harta cu toate entitățile plasate pe celule (vezi secțiunea Desfășurarea simulării).
  2. Se dau comenzile pentru simulare:
    1. startSimulation → marchează începutul simulării
    2. se rulează pașii propriu-ziși ai simulării (TerraBot primește comenzi, mediul se actualizează)
    3. endSimulation → marchează finalul simulării.
    4. dacă există alte simulări în cadrul aceluiași test, pașii de mai sus se repetă.

Desfășurarea unei simulări

Fiecare simulare trebuie să înceapă cu comanda `startSimulation` și să se încheie cu `endSimulation`. Doar comenzile aflate între aceste două marcaje sunt valide și vor fi executate. Astfel, o simulare este considerată validă numai dacă are atât început, cât și sfârșit.

În timpul explorării, două lucruri se întâmplă în paralel:

  1. Mediul evoluează automat – fenomene naturale care se petrec fără intervenția robotului
    • plantele își schimbă starea (pot crește și se pot ofili)
    • animalele se deplasează și își schimbă starea (consumă plante sau apă ca să nu fie flămânde)
    • calitatea aerului, a apei și a solului se modifică în timp
  2. TerraBot ia decizii și acționează – sub controlul comenzilor primite:
    • se deplasează pe hartă
    • scanează și analizează elementele întâlnite, învățând „facts” pe care le stochează
    • aplică metode de îmbunătățire a mediului (trebuie mai întâi să învețe cum să facă asta pe baza unor „facts” descoperite anterior)
    • colectează plante și le adaugă în inventar
    • explorează noi zone, alegând cel mai bun drum în funcție de calitatea mediului.

Fiecare pas al simulării presupune atât actualizarea automată a mediului, cât și procesarea comenzilor robotului, deci trebuiesc validate toate aceste evenimente!

La începutul fiecărei simulări:

  • TerraBot pornește de la zero cu o baterie nouă și un inventar gol
  • se resetează mediul - se regenerează harta cu noii parametri (tipul de sol pe fiecare celulă, plantele, animalele, calitatea aerului și a apei etc. și implicit pozițiile lor pe hartă)

Practic, fiecare simulare pornește de la zero.

În harta din imagine puteți vedea un exemplu orientativ cu poziționarea robotului și mișcările pe care poate să le efectueze pe hartă. Aceasta are o dimensiune de NxN dată la input, cât și condițiile de mediu și animalele/plantele pentru fiecare căsuță.

Detaliile privind mișcările și acțiunile robotului, precum și schimbările automate ale mediului, sunt descrise în secțiunea Comenzi

Pașii unei simulări

Observații și reguli importante

  • Fiecare simulare este independenta una de cealalta. Asadar, fiecare simulare pornește de la zero: cu hartă, parametri și energie noi. Nu se păstrează resurse sau starea robotului între simulări.
  • Hint: Gândiți-vă la simulări ca la runde succesive de joc: la fiecare rundă, mediul și robotul se resetează complet.
  • Simulările se execută secvențial, pe rând – nu pot rula două simulări în paralel.
  • Între simulări (după endSimulation și înainte de un nou startSimulation) se pot da comenzi, dar acestea nu vor fi executate.
  • Fiecare celulă a hărții poate conține maximum o plantă, un animal și o sursă de apă.

Comenzi

poo-ca-cd/teme/2025/8e211bfe-f6eb-467c-9e54-f8e6df4c1535/tema-1.1759515567.txt.gz · Last modified: 2025/10/03 21:19 by ioana.tudorache2507
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