Skip to content

PettingStrings/Spacebots

Repository files navigation

Spacebots è un programma che simula dei robot nello spazio che ho fatto per l'esame di Metodologie Di Programmazione. In questo spazio ci sono 2 entità: i robot e delle aree.

Le aree possono essere di forma circolare o rettangolare e possiedono una label che è semplicemente una stringa.

I robot sono rappresentati da una forma circolare e essi possono eseguire del codice scritto in una sintassi inventata.

La simulazione viene eseguita manualmente andando avanti o indietro di x step che possono essere decisi dall'utente. Ogni step di simulazione rappresenta un secondo.
Per informazioni più dettagliate potete consultare la specifica di progetto.

  1. Sintassi
  2. GUI
  3. Esempi
    1. Pong
    2. Bounce
    3. Followus
    4. Delivery
  4. Eseguire il progetto
  5. Conclusioni

Sintassi

Ogni comando deve essere scritto su una riga.

Comando Descrizione
MOVE x y s Il robot si muove nella direzione data dal vettore (x,y) alla velocità s
MOVE RANDOM x1 x2 y1 y2 s Il robot si muove nella direzione casuale data dal vettore (x,y) generato dal range x1,x2 e y1,y2 e si muove alla velocità s
SIGNAL label Il robot segnala label label
UNSIGNAL label Il robot smette di segnalare la label label
FOLLOW label dist s Il robot si muove muove alla velocità s in una direzione che è la media delle posizioni dei robot che segnalano la condizione label e che si trovano ad una distanza minore o uguale a dist .
CONTINUE s Il robot continua a muoversi alla direzione e velocità attuali per s "secondi"
STOP Il robot cessa ogni movimento
REPEAT n Il codice dentro questo blocco viene eseguito per n volte
UNTIL label Il codice dentro questo blocco viene eseguito per fino a quando il robot non entra in contatto con una label label
DO FOREVER Il codice dentro questo blocco viene eseguito per sempre
DONE Delimita la fine di un loop
La GUI Il programma presenta molte funzioni ma non tutte sono state implementate perchè non erano richieste nella specifica del progetto.


Schermata 1

In questa tab si possono caricare il programma e le forme da file di testo. L'esplora file si aprirà automaticamente su una cartella dove ho provveduto degli esempi. Ogni esempio ha un file readme con spiegato come far funzionare la simulazione e il comportamento che avranno i robot.


Schermata 2

Qui abbiamo tre bottoni: il primo per creare uno sciame aventi il programma caricato il precedenza e creare le aree che avranno come label prova . La scelta delle dimensioni e il numero di robot nello sciame non possono essere modificati da GUI.


Schermata 3

Qui ci sarebbe stata l'opzione di eliminare elementi singoli o direttamente tutta la simulazione ma non è stato implementato nulla.


Schermata 4

Con la freccia destra possiamo andare avanti nella simulazione in base a quanti step sono stati scelti e con la freccia sinistra si può tornare indietro.


Schermata 5

Dentro questa tab ci sarebbero stati i controlli per muovere la telecamera. Si sarebbe potuto ingrandire/rimpicciolire la simulazione e con le frecce muoversi in tutte e quattro le direzioni ma nulla è stato implementato.


Pong



Questo è l'esempio più semplice di tutti. I robot rimbalzano a destra e a sinistra come nel gioco pong.


Bounce



In questo esempio i robot rimbalzano sulla piattaforma sottostante come se fossero delle palline. I robot poi cadranno dall'estremità destra all'infinito.


Followus



In questo esempio i robot sciameranno dritti verso i robot dentro al cerchio che stanno segnalando la propria posizione.


Delivery



Questo è l'esempio più complesso ma anche il più bello. I robot al centro sono "lavoratori alle poste" che segnalano la propria posizione e "consegnano pacchi" ai postini. Quest'ultimi sono i robot all'esterno che sciameranno verso le poste a prendere un pacco per poi partire in una direzione casuale per consegnarlo.


Eseguire il progetto

Il codice è pubblico sul mio GitHub.
Il progetto usa Gradle 8.0 e Java 17.
Per avviare l'applicazione basta eseguire il comando:

gradle run

Conclusioni

Per sapere di più sul codice consultare la documentazione o generare il javadoc con il comando

gradle javadoc

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages