diff --git a/S1.02/Jeu/README.md b/README.md similarity index 51% rename from S1.02/Jeu/README.md rename to README.md index 11d942dc0e9ea5288eb12eb2936722efa71fa935..17b0dd8fed3d85ac69de8b7f31d2e21502d4ad08 100644 --- a/S1.02/Jeu/README.md +++ b/README.md @@ -1,17 +1,16 @@ -Labyrinthe +Labyrinthe Perdu =========== Développé par Alexandre Dehaine et Florian Gambirasio Contacts : alexandre.dehaine.etu@univ-lille.fr , florian.gambirasio.etu@univ-lille.fr -# Présentation de Labyrinthe +# Présentation de Labyrinthe Perdu -Labyrinthe est un jeu d'exploration dans lequel vous pouvez croiser des monstres (M) ainsi qu'un boss (B). -Chaque monstre vaincu rapporte 1 point, battre le boss met fin au jeu et rapporte 3 points. +Labyrinthe Perdu est un jeu d’aventure se déroulant dans un labyrinthe généré aléatoirement dans lequel vous vous déplacez, battez des monstres en répondant a des question éducatives. Chaque mauvaise questions vous fait perdre de la vie, lorsque vous tombez à zéro, vous perdez. Pour gagner le jeu, il faut vaincre le boss, il a des question spécifique et plus ardu. Des captures d'écran illustrant le fonctionnement du logiciel sont proposées dans le répertoire shots. -# Utilisation de Labyrinthe +# Utilisation de Labyrinthe Perdu Afin d'utiliser le projet, il suffit de taper les commandes suivantes dans un terminal : diff --git a/S1.02/Jeu/ressources/Lab/Salle0 b/S1.02/Jeu/ressources/Lab/Salle0 index 6a0f07b971d3cb880f102d7a79e85793c415ba06..353cde8838a7375c1677dd995aeef0fb9422c91a 100644 --- a/S1.02/Jeu/ressources/Lab/Salle0 +++ b/S1.02/Jeu/ressources/Lab/Salle0 @@ -1,6 +1,6 @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @......................................................................@ -@...................................M..................................@ +@......................................................................@ @......................................................................@ @......................................................................@ @......................................................................@ diff --git a/S1.02/Jeu/ressources/Lab/Salle2 b/S1.02/Jeu/ressources/Lab/Salle2 index 96d005d7b130f7b4eea7480db9eb5aa8c9fc4bfd..b0bb38195c103616da0aa8162aadd7434a604e40 100644 --- a/S1.02/Jeu/ressources/Lab/Salle2 +++ b/S1.02/Jeu/ressources/Lab/Salle2 @@ -7,7 +7,7 @@ @......................................................................@ @......................................................................@ @S....................................................................S@ -@S..................................M.................................S@ +@S....................................................................S@ @......................................................................@ @......................................................................@ @......................................................................@ diff --git a/S1.02/Jeu/ressources/ListeQuestion.csv b/S1.02/Jeu/ressources/ListeQuestion.csv index fe0816a4c73de2b3ae3cfb51a24ebf7e0c0dfc6d..72132bb175befc7a6651ff9fc776d46323d4c4f1 100644 --- a/S1.02/Jeu/ressources/ListeQuestion.csv +++ b/S1.02/Jeu/ressources/ListeQuestion.csv @@ -24,4 +24,4 @@ A quel temps est conjugé cette phrase : "Qu'as tu fais ?",passé composé A quel temps est conjugé cette phrase : "Ça a été ?",passé composé Convertir 1548 dg en mg.,154800 Convertir 10599 hg en cg.,105990000 -Convertir 10 cm en m.,0 \ No newline at end of file +Convertir 10 cm en m.,0.1 \ No newline at end of file diff --git a/S1.02/Jeu/ressources/score.csv b/S1.02/Jeu/ressources/score.csv index 6db77a32076981a3d2b58225786b7eb7fe0a87dd..4354fce6719a3d2a72f1272540ad0670af06e43f 100644 --- a/S1.02/Jeu/ressources/score.csv +++ b/S1.02/Jeu/ressources/score.csv @@ -1,7 +1,7 @@ Pseudo,Score -Hydro,150 -Alex,300 -Bob,10 -Testeur,100 -Popolipo,200 -Margoulin,50 \ No newline at end of file +Hydro,38 +Alex,37 +Bob,37 +Testeur,34 +Popolipo,31 +Margoulin,30 \ No newline at end of file diff --git a/S1.02/Jeu/src/Labyrinthe.java b/S1.02/Jeu/src/Labyrinthe.java index ece66655eeb71094b9997b9d937e76f930e1f701..ebf32bbec5c15f5b2a216f59e50e67d445b6c0e0 100644 --- a/S1.02/Jeu/src/Labyrinthe.java +++ b/S1.02/Jeu/src/Labyrinthe.java @@ -433,12 +433,28 @@ class Labyrinthe extends Program{ newFile[i][0]= intitu; newFile[i][1]= rep; } - saveCSV(newFile, "ressources/ListeQuestion.csv", '|'); + saveCSV(newFile, "ressources/ListeQuestion.csv"); } void ajoutScore(String[][] file, String pseudo, int score){ //ajout de Score (optionnel à faire plus tard) + if(score > file[length(file,1)-1][1]){ + int i = 0; //permet de compter d'ajouter les fichier de file dans newFile après ajout de ligne + String[][] newFile = new String[length(file, 1)][length(file, 2)]; + for(int i1 = 0; i1 < length(file, 1); i1 ++){ //copie le fichier de base + if(score >= file[i1][1]){ //ajoute le score du joueur a la place qu'il mérite (en cas d'égalité remplace l'ancien ;) ) + newFile[i1][0] = pseudo; + newFile[i1][1] = score; + } else{ //sinon remet les ancienne ligne + for(int j1 = 0; j1 < length(file, 2); j1 ++){ + newFile[i][j1] = file[i][j1]; + } + i = i + 1; //incrémente i pour savoir quelle ligne de l'ancien fichier ont été mise dans le nouveau + } + } + saveCSV(newFile, "ressources/score.csv"); + } } void afficheStringTab(String[][] tab){ //Affiche un tableau de String a 2 dimension @@ -567,14 +583,57 @@ class Labyrinthe extends Program{ assertFalse(equals(tab1, tab4)); } + boolean estInt(String verif){ + if(length(verif) == 0){ + return false; + } + for(int i = 0; i < length(verif); i ++){ + if(charAt(verif, i) < '0' || '9' < charAt(verif, i)){ + return false; + } + } + return true; + } + + void testEstInt(){ + String mot1 = "0t6"; + String mot2 = "54"; + String mot3 = "Lolilol"; + String mot4 = ""; + assertFalse(estInt(mot1)); + assertTrue(estInt(mot2)); + assertFalse(estInt(mot3)); + assertFalse(estInt(mot4)); + } + + int nbFromString(int minimum){ //Demande un nombre à l'utilisateur tant qu'il rentre autre chose qu'un nombre ou un nombre inférieur à la limite + int nbAjout = 0; + while(nbAjout < minimum){ + String nb = readString(); + while(!estInt(nb)){ + print("Veuillez entrer un nombre valide : "); + nb = readString(); + } + nbAjout = stringToInt(nb); + if(nbAjout < minimum ){ + print("Veuillez choisir un nombre supérieur ou égale à "+ minimum +" : "); + } + + } + return nbAjout; + } + void algorithm(){ - Salle[][] lab = genererLab(13); //genere le Layrinthe + println("Quel taille voulez vous pour le labyrinthe (la taille sera en : N x N ) ?"); + int tailleLab = nbFromString(3); + Salle[][] lab = genererLab(tailleLab); //genere le Layrinthe String[][] questionTemp = load("ressources/ListeQuestion.csv"); + String[][] tabScore = load("ressources/score.csv"); print("Voulez vous ajouter des question ? oui (o), non (autre) : "); boolean ques = equals(toLowerCase(readString()), "o"); if(ques){ print("Combien voulez vous en ajouter ? : "); - int nbAjout = readInt(); + int nbAjout = nbFromString(1); ajoutQuestion(questionTemp, nbAjout); questionTemp = load("ressources/ListeQuestion.csv"); afficheStringTab(questionTemp); @@ -602,7 +661,7 @@ class Labyrinthe extends Program{ Joueur joueur = newJoueur(pseudo); //Création du joueur int[] indiceSalle = new int[]{0,0}; char[][] salle = genererSalle("ressources/Lab/Salle"+lab[indiceSalle[0]][indiceSalle[1]].numero); - Question q = newQuestion("Quelle est la capital de la France", "paris"); + int rando = (int) (random() * 3)+1; afficherSalle(lab[1][0].numero); salle[length(salle,1)/2][length(salle,2)/2] = 'P'; afficheStringTab(load("ressources/score.csv")); @@ -617,9 +676,14 @@ class Labyrinthe extends Program{ if(!equals(indiceSalleActu, indiceSalle)){ salle = genererSalle("ressources/Lab/Salle"+lab[indiceSalle[0]][indiceSalle[1]].numero); salle[indiceP[0]][indiceP[1]] = 'P'; - } - if(indiceSalle[0] == length(lab)/2 && indiceSalle[1] == length(lab)/2){ - salle[length(salle, 1)][length(salle,2)] = 'B'; + if(indiceSalle[0] == length(lab)/2 && indiceSalle[1] == length(lab)/2){ + salle[length(salle, 1)/2][length(salle,2)/2] = 'B'; + } else { + if (rando == 1){ + salle[length(salle, 1)/2][length(salle,2)/2] = 'M'; + } + rando = (int) (random() * 3) + 1; + } } @@ -629,5 +693,6 @@ class Labyrinthe extends Program{ } else { print(readFile("ressources/img/Lose.txt", true)); } + ajoutScore(tabScore, joueur.pseudo, joueur.score); } } \ No newline at end of file