Skip to content

Commit

Permalink
cambiamenti attacco
Browse files Browse the repository at this point in the history
  • Loading branch information
Roberto-Negro committed Feb 27, 2024
2 parents f2d3ae3 + 38b8320 commit 803ab92
Show file tree
Hide file tree
Showing 61 changed files with 1,142 additions and 1,454 deletions.
55 changes: 55 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Risk Game

![Version](https://img.shields.io/badge/version-4.0.0-success)
![License](https://img.shields.io/github/license/UnimibSoftEngCourse2022/riskgame-malnati-negro-persico-romano-radaelli-mvc-guru-1)
![Stars](https://img.shields.io/github/stars/UnimibSoftEngCourse2022/riskgame-malnati-negro-persico-romano-radaelli-mvc-guru-1)

<img src="images\RiskGame.png" alt="RISK" width="100%">

## Esecuzione progetto

### Prerequisiti

- [Java 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Maven](https://maven.apache.org/install.html) (3.1 or >)
- [Git](https://git-scm.com/downloads)

### Import e installazione

- `git clone https://github.com/UnimibSoftEngCourse2022/riskgame-malnati-negro-persico-romano-radaelli-mvc-guru-1.git`: per eseguire la clone del repository localmente.

*I seguenti comandi sono da eseguire all'interno della root del repository*

- `mvn package`: Esegue la build del server e i relativi test.
Se i test hanno successo, esegue anche la build del client all'interno di `src/main/app` e copia i file generati
in `target/static`, dove `target/` è la cartella in cui risiedono i file compilati del server.
Infine, crea il pacchetto .jar completo.

- `java -jar target/com.mvcguru.risiko.maven.eclipse-0.0.1-SNAPSHOT.jar`: Esegue il file .jar generato in precedenza.

- Il server è ora accessibile all'indirizzo `localhost:8080`.
<img src="images\homePage.png" alt="HomePage" width="100%">


## Come giocare
*Per giocare devi conoscere le regole di Risiko*

Per rinfrescarti la memoria nella pagina principale c'è una sintesi delle regole di gioco prese dal gioco ufficiale
Dopo aver ripassato, avrai due possibilità:

- Registrarti, loggarti
- Entrare come ospite

In entrambi i casi potrai passare alla pagina successiva cliccando su cliccando 'Play Game',
dopodichè ti troverai nella pagina di creazione della lobby nella quale dovrai:

- Creare una lobby, quindi scegliere difficoltà, numero giocatori e darle un nome
- Entrare in una lobby esistente

*La partita comincia in automatico quando la Lobby è piena*
#### N.B : nelle due modalità media e facile l'unione dei territori della modalità difficile si nota dai confini grigi (rispetto al nero classico)
Qua sotto un immagine per invogliarti a provare il nostro gioco... Buon divertimento!

<img src="images\Mappa_6players.png" alt="Mappa da 6 persone" width="100%">

*made by MVC-GURU*
Binary file added doc/Diagramma_Gant.pdf
Binary file not shown.
Binary file not shown.
Binary file added images/Mappa_6players.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/RiskGame.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/homePage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 13 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,18 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.2</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
Expand All @@ -188,5 +200,4 @@
</plugin>
</plugins>
</build>
</project>

</project>
152 changes: 85 additions & 67 deletions src/main/app/src/application/AppController.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class AppController {
// Aggiungi le sottoscrizioni ai topic qui, se necessario
},
onDisconnect: () => {
console.log("Disconnected from STOMP");
console.log("Disconnected from STOMP");
},
// Altri eventi e configurazioni...
});
Expand Down Expand Up @@ -125,75 +125,93 @@ class AppController {
console.error("Client STOMP non connesso");
}
}

subscribeToEsitiPartita(idPartita, nickname) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
this.client.subscribe(`/topic/partite/${idPartita}/${nickname}`, (message) => {
PartitaObserverSingleton.notifyListenersEsiti(JSON.parse(message.body));
console.log("Esito attacco ricevuto:", JSON.parse(message.body));
});
}

unsubscribeToEsitiPartita(idPartita, nickname) {
if (this.client && this.client.connected) {
this.client.unsubscribe(`/topic/partite/${idPartita}/${nickname}`);
} else {
console.error("Client STOMP non connesso");
}
}

setUpPartita(idPartita, territoriAssegnati) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
console.log("territoriAssegnatinellotomp", territoriAssegnati);
// Assicurati che territoriAssegnati sia un array di oggetti che corrispondono
// alla struttura di TerritoryBody, ovvero con i campi `name` e `troops`.

console.log("setUpBodystomp", territoriAssegnati);

// Pubblicazione del messaggio al topic di setup della partita
this.client.publish({
destination: `/app/partite/${idPartita}/confermaSetup`,
body: JSON.stringify(territoriAssegnati),
});

console.log(`Setup per la partita ${idPartita} inviato:`, territoriAssegnati);
}

setUpTurno(idPartita, territoriAssegnati) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
console.log("territoriAssegnati", territoriAssegnati);
this.client.publish({
destination: `/app/partite/${idPartita}/turnAssignation`,
body: JSON.stringify(territoriAssegnati),
});
console.log(`Setup per il turno della partita: ${idPartita} inviato:`, territoriAssegnati);
}

attack(idPartita, attackBody) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
console.log("attackBody", attackBody);
this.client.publish({
destination: `/app/partite/${idPartita}/attack`,
body: JSON.stringify(attackBody),
});
console.log(`Attacco per la partita ${idPartita} inviato:`, attackBody);
}
subscribeToEsitiPartita(idPartita, nickname) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
this.client.subscribe(
`/topic/partite/${idPartita}/${nickname}`,
(message) => {
PartitaObserverSingleton.notifyListenersEsiti(JSON.parse(message.body));
console.log("Esito attacco ricevuto:", JSON.parse(message.body));
}
);
}

}
unsubscribeToEsitiPartita(idPartita, nickname) {
if (this.client && this.client.connected) {
this.client.unsubscribe(`/topic/partite/${idPartita}/${nickname}`);
} else {
console.error("Client STOMP non connesso");
}
}

setUpPartita(idPartita, territoriAssegnati) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
console.log("territoriAssegnatinellotomp", territoriAssegnati);
// Assicurati che territoriAssegnati sia un array di oggetti che corrispondono
// alla struttura di TerritoryBody, ovvero con i campi `name` e `troops`.

console.log("setUpBodystomp", territoriAssegnati);

// Pubblicazione del messaggio al topic di setup della partita
this.client.publish({
destination: `/app/partite/${idPartita}/confermaSetup`,
body: JSON.stringify(territoriAssegnati),
});

console.log(
`Setup per la partita ${idPartita} inviato:`,
territoriAssegnati
);
}


setUpTurno(idPartita, territoriAssegnati) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
console.log("territoriAssegnati", territoriAssegnati);
this.client.publish({
destination: `/app/partite/${idPartita}/turnAssignation`,
body: JSON.stringify(territoriAssegnati),
});
console.log(
`Setup per il turno della partita: ${idPartita} inviato:`,
territoriAssegnati
);
}

attack(idPartita, attackBody) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
console.log("attackBody", attackBody);
this.client.publish({
destination: `/app/partite/${idPartita}/attack`,
body: JSON.stringify(attackBody),
});
console.log(`Attacco per la partita ${idPartita} inviato:`, attackBody);
}

defend(idPartita, defenceBody) {
if (!this.client || !this.client.connected) {
console.error("Client STOMP non connesso");
return;
}
this.client.publish({
destination: `/app/partite/${idPartita}/defence`,
body: JSON.stringify(defenceBody),
});
console.log("controller difesa");
}
}

// Esporta l'istanza per utilizzarla nell'app
const appController = new AppController();
Expand Down
1 change: 0 additions & 1 deletion src/main/app/src/component/layout/LayoutMappa.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import React from "react";
import Aside from "../layout/Aside";
import MainContent from "./MainContent";

const LayoutMappa = ({ children }) => {
Expand Down
1 change: 0 additions & 1 deletion src/main/app/src/component/layout/TopBar.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import React from "react";
import { Navbar } from "react-bootstrap";
import { useAuth } from "../../auth/AuthContext";
import { MdPerson4 } from "react-icons/md";
import { IoMdPerson } from "react-icons/io";
import { useParams } from "react-router-dom";

Expand Down
Loading

0 comments on commit 803ab92

Please sign in to comment.