Cette classe est destiné un projet de fin d'année de L1, ne pas l'utiliser dans
- * d'autre circonstance que dans ce projet. Elle contient plusieurs fonctions qui est
- * utile pour la communication entre la machine et le site Padifac.
- *
- * @author Loïc GUEZO
- * @version 1.0.0
- * @since 2024
- * @see Padiflac
- */
-@SuppressWarnings("deprecation")
- public class Reseau {
- private static final String ADDRESS = "https://prog-reseau-m1.lacl.fr/padiflac/";
- private String CHANNEL;
- private URL url;
-
- private ArrayList wordArrayList;
- private ArrayList newerWordArrayList;
-
- private int index;
-
- /**
- *
Le constructeur defini quelque information cruciale puis appelle directement la
- * fonction {@code #searchContent()}.
- *
- * @param channel Ce string est utilisé pour se connecter à un channel dans le serveur web
- */
- public Reseau(String channel) {
- this.CHANNEL = channel;
- this.wordArrayList = new ArrayList();
- this.newerWordArrayList = new ArrayList();
-
- this.connexion();
- }
-
- /**
- *
cette fonction redefini quelque information cruciale puis appelle directement la
- * fonction {@code #searchContentSorted()}.
- *
- * @param channel Ce string est utilisé pour se reconnecter à un channel dans le serveur web
- */
- public void reconnexion(String channel) {
- this.CHANNEL = channel;
- this.wordArrayList.clear();
- this.newerWordArrayList.clear();
-
- this.connexion();
- }
-
- /**
- * @return cette fonction renvoie tout ce qui est disponible sur le site quand on appelle la
- * fonction searchContent et qui mets tout le texte dans le {@link ArrayList}
- */
- public ArrayList getArrayContent() {
- return this.wordArrayList;
- }
-
- /**
- * @return cette fonction renvoie uniquement les nouveauté de qui est disponible sur le site
- * quand on appelle la fonction searchContent et qui mets tout le texte dans le {@link ArrayList}
- */
- public ArrayList getNewArrayListContent() {
- return this.newerWordArrayList;
- }
-
- /**
- *
cette fonction est en parallèle avec {@code #getLastedContent()} qui récupère le dernier indice
- * utilisé lors de l'appelle de {@code #getLastedContent()}.
- * @return renvoie le dernier indice
- */
- public int getIndex() {
- return this.index;
- }
-
- /**
- *
cette fonction est en parallèle avec {@code #getLastedContent()} et {@code #getIndex()}. Elle va
- * reset l'indice.
- */
- public void resetIndex() {
- this.index = 0;
- }
-
- /**
- * @return cette fonction renvoie le String de l'indice puis l'incrémenter. Si c'est la fin de la liste,
- * il renvoie null sans incrémenter
- */
- public String getLastedContent() {
- return (this.getArrayContent().size() > this.index) ? getArrayContent().get(this.index++) : null;
- }
-
- /**
- *
cherche les informations et trie seulement les nouvelles entre eux :
- *
- * Reseau reseau = new Reseau("ChatTest"); // dans le serveur : {"arbre", "pomme", "chocolat", "arbre"}
- *System.out.println(reseau.searchContentSorted().toString()); // {"arbre", "arbre", "pomme", "chocolat"}
- *
- * @return il renvoie le {@link ArrayList} de la liste
- */
- public ArrayList searchContentSorted() {
- ArrayList localNewerArrayList = this.searchContent();
- if (this.getArrayContent().isEmpty()) this.addContentToContent(localNewerArrayList);
- else this.searchDuplicates(localNewerArrayList);
- return this.wordArrayList;
- }
-
- /**
- *
cherche les informations mais ne trie pas les nouvelles entre eux :
- *
- * Reseau reseau = new Reseau("ChatTest"); // dans le serveur : {"arbre", "pomme", "chocolat", "arbre"}
- *System.out.println(reseau.searchContentSorted().toString()); // {"arbre", "arbre", "pomme", "chocolat"}
- *
- *
attention, il peut y avoir des erreurs en rajoutant par exemple {"arbre", "pomme", "chocolat", "pomme"}
- * @return
- */
- public ArrayList searchArrayListNotSorted() {
- ArrayList localNewerArrayList = this.searchContent();
- this.addContentToContent(localNewerArrayList);
- return this.wordArrayList;
- }
-
- /**
- *
ce programme essaye d'envoyer le String en parametre. Attention, la communication entre le serveur et la machine
- * peut prendre du temps !
- * @param content Le contenu de texte que vous voulez renvoyer
- */
- public void sendContent(String content) {
- try {
- this.url = new URL(ADDRESS + CHANNEL + "?nonce=" + this.generateNonce());
- HttpsURLConnection connection = (HttpsURLConnection)this.url.openConnection();
-
- connection.setRequestMethod("POST");
- connection.setDoOutput(true);
-
- OutputStream outputStream = connection.getOutputStream();
- outputStream.write(serializeToString(content));
- outputStream.close();
-
- int responseCode = connection.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK) {
- InputStream inputStream = connection.getInputStream();
- inputStream.close();
- } else {
- System.out.println("Erreur lors de l'envoi de la requête. Code de réponse : " + responseCode);
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- private ArrayList searchContent() {
- try {
- byte[] bytes = this.url.openConnection().getInputStream().readAllBytes();
- ArrayList localNewerArrayList = new ArrayList();
-
- StringBuffer textContent = new StringBuffer();
-
- for(int i = 0; i < bytes.length; i++) {
- byte charByte = bytes[i];
-
- if(charByte == '|' && textContent.length() > 0) {
- int size = Integer.parseInt(textContent.toString());
- byte[] buffer = copyOfRange(bytes, i + 1, i + 1 + size);
-
- localNewerArrayList.add(new String(buffer));
-
- i += size;
- textContent.setLength(0);
-
- } else {
- textContent.append((char)charByte);
- }
- }
- return localNewerArrayList;
-
- } catch (Exception e) {
- return null;
- }
- }
-
- private void addContentToContent(ArrayList localArrayList) {
- int arrayListLength = this.getArrayContent().size();
-
- this.newerWordArrayList.clear();
-
- for(int i = arrayListLength; i < localArrayList.size(); i++) {
- String arrayListValue = localArrayList.get(i);
- this.wordArrayList.add(arrayListValue);
- this.newerWordArrayList.add(arrayListValue);
- }
- }
-
- private void searchDuplicates(ArrayList localArrayList) {
- HashMap counterHashMap = this.compareHashMap(
- arrayListToHashmapCounter(this.wordArrayList),
- arrayListToHashmapCounter(localArrayList)
- );
-
- this.newerWordArrayList.clear();
-
- for(Map.Entry value : counterHashMap.entrySet()) {
- String arrayListValue = value.getKey();
-
- for(int i =0; i arrayListToHashmapCounter(ArrayList list) {
- HashMap hashmapListCounter = new HashMap();
-
- for(int i = 0; i compareHashMap(HashMap olderHashMap, HashMap newerHashMap) {
- HashMap hashMapCompared = new HashMap();
-
- for (Map.Entry entry : newerHashMap.entrySet()) {
- String key = entry.getKey();
- Integer newValue = entry.getValue();
- Integer oldValue = olderHashMap.get(key);
-
- if (oldValue == null) {
- hashMapCompared.put(key, newValue);
- } else if (newValue > oldValue) {
- hashMapCompared.put(key, newValue - oldValue);
- }
- }
-
- return hashMapCompared;
- }
-
- private String generateNonce() {
- return UUID.randomUUID().toString().replace("-", "")+
- UUID.randomUUID().toString().replace("-", "");
- }
-
- private byte[] serializeToString(String text) throws IOException {
- return text.getBytes();
- }
-
- private void connexion() {
- try {
- this.url = new URL(ADDRESS + CHANNEL);
-
- this.searchContentSorted();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-}
\ No newline at end of file
diff --git a/src/Environnements/Grid.java b/src/Environnements/Grid.java
new file mode 100644
index 0000000..d8cf71d
--- /dev/null
+++ b/src/Environnements/Grid.java
@@ -0,0 +1,13 @@
+package environnements;
+
+import types.Effect;
+
+public interface Grid {
+ public default String getName() { return this.toString().toLowerCase(); }
+ public default Effect get() { return null; }
+
+ public void updateStringCode(String textCode);
+ public String getStringCode();
+
+ public Grid[] getValues();
+}
\ No newline at end of file
diff --git a/src/Environnements/Map.java b/src/Environnements/Map.java
index 55061fd..ff66932 100644
--- a/src/Environnements/Map.java
+++ b/src/Environnements/Map.java
@@ -3,7 +3,7 @@ package environnements;
import java.util.ArrayList;
import java.util.Random;
-import object.*;
+import types.*;
import personnages.*;
@@ -16,17 +16,17 @@ public class Map {
* cette variable est toute la grille où se
* passe tout le jeu.
*/
- private Object grid[][];
+ private Grid grid[][];
/**
- * cette variable recupere tout les objects stockés,
+ * cette variable recupere tout les Grids stockés,
* elle complete {@link #coordinateItems}.
*/
- private ArrayList