IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Transformer un bloc de texte en un array


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut Transformer un bloc de texte en un array
    Bonjour la communauté !

    Pour donner une explication sur le titre de cette discussion voila les faits :

    J'ai développé une carte interactive avec un peu plus de 6000 marqueurs séparés en différentes classes.
    Devant faire une maj du fond de carte, cela me décale tous les marqueurs.
    Pour me faciliter la vie, j'ai développé une page avec un script de conversion.

    Mon bloc de marqueurs est un array contenant lui-même des array :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[0,[4456,4291],langue.pano1],[0,[4546,4491],langue.pano2],[0,[4095,4168],langue.pano3]]
    Pour faire simple, je n'ai mis qu'un bloc de 3 marqueurs. Chaque marqueur est composé d'un array comprenant [type,[coordonnées],descriptif (sous forme de variable)]

    Je colle mon bloc dans un <textarea> puis je clique sur un bouton pour lancer la convertion.

    Pour verifier que ca marche j'ai dans un premier temps collé directement le bloc dans la variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function conv1() {
    	// var numbers = JSON.parse(document.getElementById("arraytoconv").value);
    	var numbers = [[0,[4456,4291],langue.pano1],[0,[4546,4491],langue.pano2],[0,[4095,4168],langue.pano3]];
    	numbers.forEach(myFunction);
    	document.getElementById("resultconv").value = text;
    };
    Placé en direct, pas de soucis la conversion se déroule bien.

    Mais lorsque je parse mon texte récupéré dans la fenêtre de saisie, je me retrouve avec une erreur unexpected token.
    Après vérification j'ai compris que mon array numbers "reconstruit" ne ressemble pas à celui initialement voulu car la fonction parse traite le bloc comme un seul élément
    et non pas une suite de valeur dans le array.
    Si je rajoute des "" pour encadrer mon bloc je n'ai plus d'erreur unexpected token mais la conversion donne un résultat farfelu car les variables attendues ne sont pas bonnes:
    [[,[NaN,18432],,,[].

    Mon problème, c'est que je ne sais pas transformer mon bloc [[0,[4456,4291],langue.pano1]","[0,[4546,4491],langue.pano2]] en var numbers = [[0,[4456,4291],langue.pano1]","[0,[4546,4491],langue.pano2]];.
    Je vous mets dessous le code complet de la page si c’a peut vous aider à résoudre mon problème.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    <!DOCTYPE html>
    <html>
    <style>
            div#conv1 {
                    float: left;
                    width: 33%;
                    margin-right: 10px;
                    padding: 10px;
                    background: lightsteelblue;
            }
     
            div#conv3 {
                    float: right;
                    width: 33%;
                    margin-left: 10px;
                    padding: 10px;
                    background: skyblue;
            }
     
            div#conv2 {
                    overflow: auto;
                    padding: 10px;
                    background: steelblue;
            }
    </style>
    <body>
    	<div align=center style="font-size: larger; font-weight: bold;">OUTIL DE CONVERSION POUR MA MAP</div><br>
    	<div align=center>
    		<label for="arraytoconv">Array à convertir</label><br><br>
    		<textarea id="arraytoconv" rows="15" cols="160" wrap="soft"></textarea><br><br><br>
    		<label for="resultconv" style="font-weight: bold;">RESULTAT DE LA CONVERSION</label>
    		<textarea id="resultconv" rows="15" cols="160" wrap="soft"></textarea><br><br>
    	</div>
    <div id="conv1">
    <p>Conversion TMK : Inazuma 2.1 >>> 2.2</p>
     
    <label for="xval">Décalage X:</label>
    <input type="number" id="xval" value="0"><br><br>
    <label for="lname">Décalage Y:</label>
    <input type="number" id="yval" value="0"><br><br>
    <button type="button" id="btn" onclick="conv1()">Convertir</button>
    </div>
    <div id="conv3">Conversion 3</div>
    <div id="conv2">Conversion 2</div>
     
    <script>
     
    var text = "";
    var counter = 1;
    var langue = {};
    for (i=1; i<250; i++) {
            var prefixe = "";
            if (i<10) {
                    prefixe = "00";
            } else if (i<100) {
            prefixe = "0";
            }
            name = "com"+prefixe+i;
            langue[name]= "langue.com"+prefixe+i;
    };
    for (i=1; i<44; i++) {
            name = "pano"+i;
            langue[name]= "langue.pano"+i;
    }
    for (i=1; i<45; i++) {
            namea = "succest"+i;
            nameb = "succesh"+i;
            langue[namea]= "langue.succest"+i;
            langue[nameb]= "langue.succesh"+i;
    }
    for (i=1; i<27; i++) {
            name = "peche"+i;
            langue[name]= "langue.peche"+i;
    }
     
    langue.br= "+langue.br+";
    langue.defib= "langue.defib+";
    langue.defic= "langue.defic+";
    langue.defik= "langue.defik+";
    langue.defip= "langue.defip+";
    langue.defis= "+langue.defis";
     
    function conv1() {
            var numbers = [JSON.parse(document.getElementById("arraytoconv").value)];
            // var numbers = [[0,[4456,4291],langue.pano1],[0,[4546,4491],langue.pano2],[0,[4095,4168],langue.pano3]];
            numbers.forEach(myFunction);
            document.getElementById("resultconv").value = text;
    };
     
    function myFunction(item, index, arr) {
    // document.getElementById("datas").innerHTML = index +" de "+ arr.length;
    var coord = item[1];
    var texte ="";
    var texte2 ="";
    var texte3 ="";
    var x = (2*(3584 + coord[1]))-1024;
    var y = (2*(9728 - coord[0]))-1024;
    if (x<10000) {x=' '+x};
    if (y<10000) {y=' '+y};
    if (item[0]==5) {
            var texte = ',"'+item[2]+'"';
            var texte2 = (typeof item[3] !== 'undefined') ? ','+item[3] : "";
            var texte3 = (typeof item[4] !== 'undefined') ? ','+item[4] : "";
    } else if (item[0]==12) {
        var texte = (typeof item[2] !== 'undefined') ? ',"'+item[2]+'"' : "";
    } else {
            var texte2 = (typeof item[2] !== 'undefined') ? ','+item[2] : "";
            var texte3 = (typeof item[3] !== 'undefined') ? ','+item[3] : "";
    };
    var result = (index+1 !== arr.length) ? '['+item[0]+',['+x+','+y+']'+texte+texte2+texte3+'],' : '['+item[0]+',['+x+","+y+']'+texte+texte2+texte3+"]";
    if (counter == 10 && index+1 !== arr.length) {
            result +='<br>';
        counter = 0;
        }
    counter +=1;
    text += result;
    }
     
    function test() {
            decalx = document.getElementById("xval").value;
            decaly = document.getElementById("yval").value;
     
            document.getElementById("datas").innerHTML = "Décalage X : "+decalx+" Décalage Y : "+decaly;
    }
     
     
    </script>
     
    </body>
    </html>

    Par avance merci de votre aide

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 701
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 701
    Par défaut
    déjà je pense que vous vous êtes compliqué le vie en générant les données sous forme de texte. je pense qu'il aurait été plus simple de générer un nouveau tableau javascript avec les coordonnées corrigées et ensuite vous affichez ce tableau avec "JSON.stringify" :
    https://developer.mozilla.org/fr/doc...JSON/stringify

    en ce qui concerne votre code, affichez les données que vous avez au début de "myFunction" et vous verrez que ce n'est pas ce à quoi vous vous attendiez.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut
    Bonjour,

    Merci d'avoir pris le temps de me lire et de me répondre.

    Si je ne ressors pas les données en version "stringifiées" c'est que je veux récupérer le texte formaté comme ça avec un copier/coller. Si je le passe par un JSON.Stringify il ne ressort pas pareil et devient pour moi inexploitable dans ma map.
    Je m'explique : les marqueurs se décomposent ainsi : [0,[x,y],langue.xxx] où la première valeur est le type de marqueur, [x,y] les coordonnées, langue.xxx (pano1,2 ,com001 002 etc) est une variable qui contient le texte descriptif (en plusieurs langues d'où l'utilisation d'une variable au lieu d'un texte directement)

    Si je stringifie le bloc placé directement dans la var numbers dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[0,[4456,4291],langue.pano1],[0,[4546,4491],langue.pano2],[0,[4095,4168],langue.pano3]]
    cela me ressort :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[0,[4456,4291],"langue.pano1"],[0,[4546,4491],"langue.pano2"],[0,[4095,4168],"langue.pano3"]]
    donc ce qui bloque la fonction parse ce sont les variables langue. car elles ne sont pas entre "". Le problème c'est que je ne peux pas m'amuser à reformater manuellement tout mon bloc pour pouvoir le traiter. La il n'y a que 3 marqueurs ce n'est pas gênant. Mais je travaille avec des blocs de plus de 300 marqueurs et la cela devient irréalisable.

    Si dans mon textarea je colle le bloc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[0,[4456,4291],"langue.pano1"],[0,[4546,4491],"langue.pano2"],[0,[4095,4168],"langue.pano3"]]
    et que je lance la conversion, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[0,[14726, 9520],langue.pano1],[0,[15126, 9340],langue.pano2],[0,[14480,10242],langue.pano3]]
    ce qui est le résultat attendu car c'est la version avec les coordonnées recalculées de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[0,[4456,4291],langue.pano1],[0,[4546,4491],langue.pano2],[0,[4095,4168],langue.pano3]]
    Mais pour cela il aura fallu que je convertisse d'abord une partie des données de mon bloc...

    J'avoue que cela dépasse mes connaissances.

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    J'ai essayé hier de comprendre, mais il manque des explications sur les données de départ,
    ...qui permettraient, comme le dit mathieu, de simplifier le problème.

    Citation Envoyé par TMKFrench Voir le message
    ...les marqueurs se décomposent ainsi : [0,[x,y],langue.xxx]...
    • D'où viennent ces données ?
    • d'un fichier ?
    • comment est-il structuré (donne un exemple plus complet / précis)
    • Comment les traites-tu pour créer la chaine ?
    • Faut-il vraiment passer par un <textarea> ?
    • Faut-il vraiment utiliser JS ?
      ou peut-on le faire en PHP (avec lecture d'un fichier, traitement, ré-écriture...) ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Par défaut
    Alors pour comprendre voila l'adresse de la map : https://genshin.tmkfrench.fr
    Elle est constituée d'un html contenant le menu + le <div> de la map
    elle est ensuite constituée de 3 fichier JS :
    • map.js qui est le moteur de gestion des marqueurs et de l'interaction avec la map et le menu
    • markers.js qui contient les variables avec les marqueurs. par ex :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      var liststatue = [
          [0,[14820,10500]],[0,[13440,10622]],[0,[14932, 9208]],[0,[11936, 9062]],[0,[11780,11794]],[0,[11794,14352]],[0,[ 9348,12806]],[0,[10316,15030]],[0,[12804,13092]],[0,[14340,11984],langue.com091],
          [0,[20105,19193]],[0,[18764,21409]],[0,[16737,21753]],[12,[20355,23210],"14"],[0,[13444,22010]]
      ];
       
      // Téléporteurs
       
      var listteleport = [
          [0,[15566, 8974]],[0,[14538, 9948]],[0,[14038, 9782]],[5,[13782, 9814],"9aaU23xfqGA"],[0,[15360,10392]],[0,[14830, 8908]],[0,[15300, 9738]],[0,[13060, 9770]],[0,[15544, 8682]],[0,[15170,11416]],
          [0,[14046,10364]],[0,[16296,11452]],[0,[13332, 9986]],[0,[13194, 9200]],[0,[14120,10748]],[0,[12712,10618]],[0,[12214, 9592]],[0,[12060, 9036]],[0,[12464, 8758]],[0,[11752, 8498]],
          [0,[11598, 9192]],[0,[11890,11204]],[0,[11634,12588]],[0,[10690,10750]],[0,[ 8692,12908]],[0,[ 9076,12256]],[0,[12666,12402]],[0,[10614,13858]],[0,[ 9994,14064]],[0,[ 9760,14470]],
          [0,[12238,14570]],[0,[13620,14520]],[0,[ 9430,12676]],[0,[ 9508,13304]],[0,[10216,15462]],[0,[10040,16320]],[0,[10862,15884]],[0,[10630,15508]],[0,[11240,15582]],[0,[12178,14058]],
          [0,[12388,13008]],[0,[13242,13450]],[0,[11314,13884]],[0,[11198,10808]],[0,[11700,14836]],[0,[11606,13252]],[0,[10506,13176]],[0,[ 9922,13094]],[0,[11752,15662]],[0,[11554,15358]],
          [0,[11318,11444]],[0,[10606,11278]],[0,[ 9748,11208]],[0,[10200,12444]],[0,[ 9400,12280]],[0,[ 8956,13560]],[0,[10846,12210]],[0,[10060,11972]],[0,[12600,11982]],[0,[11698,10994]],
          [0,[11068,14902]],[0,[13436,11420]],[0,[13984,11806]],[0,[14308,11668]],[0,[13712,12486]],[0,[14298,12270]],[0,[13258,12620]],[0,[14550,11148]],[0,[14306,12624]],[0,[13398,11872]],
          [0,[13106,12012]],[0,[14958,12678]],[0,[13870,12260]],[0,[20540,17863]],[0,[21084,18574]],[0,[20731,19138]],[0,[21056,19332]],[0,[21463,19511]],[0,[19903,19436]],[0,[20375,19670]],
          [0,[20537,19838]],[0,[21151,19937]],[0,[20726,20342]],[0,[21096,20458]],[0,[21277,20774]],[0,[18868,21636]],[0,[19248,21843]],[0,[17763,21169]],[0,[18313,21588]],[0,[18603,22116]],
          [0,[17370,21414]],[0,[16671,21306]],[0,[17096,22178]],[0,[16219,21481]],[0,[17086,22592]],[0,[19555,19398]],[0,[19165,20969]],[0,[18758,20652]],[0,[19084,21442]],[0,[21176,22908]],
          [0,[20675,22824]],[0,[20665,23113]],[0,[21243,23487]],[0,[19647,22899]],[0,[20080,23133]],[12,[20626,23480],"106"],[0,[20792,23910]],[0,[19686,23717]],[0,[14926,21891]],[0,[13820,21459]],
          [0,[13813,21926]],[0,[14407,22229]],[0,[13799,22337]]
      ];
    • text.js qui contient les textes de l'interface/menu et les commentaires des marqueurs en français et en anglais
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      161
      162
      163
      164
      165
      166
      167
      168
      169
      170
      171
      172
      173
      174
      175
      176
      177
      178
      179
      180
      181
      182
      183
      184
      185
      186
      187
      188
      189
      190
      191
      192
      193
      194
      195
      196
      197
      198
      199
      200
      201
      202
      203
      204
      205
      206
      207
      208
      209
      210
      211
      212
      213
      214
      215
      216
      217
      218
      219
      220
      221
      222
      223
      224
      225
      226
      227
      228
      229
      230
      231
      232
      233
      234
      235
      236
      237
      238
      239
      240
      241
      242
      243
      244
      245
      246
      247
      248
      249
      250
      251
      252
      253
      254
      255
      256
      257
      258
      259
      260
      261
      262
      263
      264
      265
      266
      267
      268
      269
      270
      271
      272
      var langFR = {
          // UI
          'ui-found': 'Trouvé',
          'ui-load': ' marqueurs chargés',
          'ui-succes': 'Succès : ',
          'ui-click': 'Vous avez cliqué sur la map à ',
          'ui-prereset': 'Vous allez Réinitialiser tous les marqueurs !!!\nVoulez-vous continuez ?',
          'ui-reset': 'Marqueurs réinitialisés. La page va se rafraîchir',
          'ui-import': 'Marqueurs chargés. La page va se rafraîchir...',
          'ui-fileerror': 'Fichier de marqueurs invalide !!!',
          'ui-export': 'Le fichier GenshinMapMarker.txt va être téléchargé dans le répertoire par défaut de Téléchargement de votre navigateur.',
          'ui-close': 'Cacher le Menu',
          'ui-open': 'Afficher le Menu',
          'ui-info': 'Texte d\'information',
       
          // Cat Marker
          'cat01': 'Statue des 7',
          'cat02': 'Téléporteur',
          'cat03': 'Panorama',
          'cat04': 'Coffre Ordinaire',
          'cat96': 'Fleur d\'Amakumo',
          'cat97': 'Perle de Corail',
       
          // Succès
          'succest001': 'Chouchou de l\'Archon Anemo',
          'succesh001': 'Grimpez jusque dans les mains de la statue et asseyez-vous pour obtenir le succès.',
          'succest002': 'Les graines d\'Histoire apportées par le vent',
          'succesh002': 'Tout est expliqué dans la vidéo',
          'succest003': 'La meilleure de toutes les épées',
          'succesh003': 'Tuez les champions des trois Camps pour libérer l\'accès au coffre',
          'succest004': 'La traversée du temps',
          'succest005': 'Pépinière de Cécilias',
          'succesh005': 'Libérez les 4 fées prisonnières pour débloquer le temple',
          'succest043': 'C\'est l\'heure de la promenade ?',
          'succesh043': 'Libérez le chien en ouvrant la cage à l\'aide<br>d\'une clef en fer trouvée sur l\'île',
          'succest044': 'Palais de l\'étang',
       
          // Panoramas
          'pano1': 'Cité du Vent',
          'pano2': 'Marais des gardiens célestes',
          'pano3': 'Terres du Vent',
          'pano4': 'Pays aux fontaines',
          'pano5': 'Manoir de l\'aube',
          'pano6': 'Cathédrale, Ordre de Favonius',
          'pano7': 'Bibliothèque, Ordre de Favonius',
          'pano8': 'Ancien Temple des Mille vents',
          'pano9': 'Cimetierre d\'épées oublié',
          'pano10': 'Capitale des vents oubliés',
          'pano11': 'Pays des navires et du Commerce',
          'pano12': 'Pente Feigun',
          'pano13': 'Falaise Chihu',
          'pano14': 'Terrasse Yujing',
          'pano15': 'Poste d\'Observation',
          'pano16': 'Marais aux Roseaux',
          'pano17': 'Vestiges de Guili',
          'pano18': 'Monts Qingce',
          'pano19': 'Pics entre les nuages',
          'pano20': 'Arbre au clair de lune',
          'pano21': 'Forêt de Pierre Embrumée',
          'pano22': 'Jardin aux Sanglots',
          'pano23': 'Goutte dans l\'océan',
          'pano24': 'Derrière le Gouffre',
          'pano25': 'Ruines de Dunyu',
          'pano26': 'Tour solitaire de Qingxu',
          'pano27': 'Neuf Pilliers',
          'pano28': 'Ritou, île de Narukami',
          'pano29': 'Sanctuaire de Narukami, Mont Yougou',
          'pano30': 'La forêt sacrée au clair de lune',
          'pano31': 'Périphérie d\'Inazuma',
          'pano32': 'Vallée de la fosse, Île de Yashiori',
          'pano33': 'Poste d\'observation des Îles de Tatara',
          'pano34': 'Marée basse au milieu des flammes de la guerre',
          'pano35': 'Surplomb de la tête de serpent',
          'pano36': 'Tenryou, Cité d\'Inazuma',
          'pano37': 'Ligne de front de Kannazuka',
          'pano38': 'Là où les nuages orageux se rencontrent',
          'pano39': 'Le village des pêcheurs silencieux',
          'pano40': 'Le vaisseau amiral échoué',
          'pano41': 'Le palais nacré',
          'pano42': 'Les profondeurs baignées de lune',
          'pano43': 'Le village du peuple des tréfonds',
       
          // Pêche
       
          'peche1': '<ul class="peche"><li>• Médaka sucrant</li><li>• Médaka bleuté</li><li>• Attrape-aube</li><li>• Poisson cristal</li></ul>',
          'peche2': '<ul class="peche"><li>• Médaka sucrant</li><li>• Médaka bleuté</li><li>• Attrape-aube</li><li>• Poisson-papillon vert</li></ul>',
          'peche3': '<ul class="peche"><li>• Médaka sucrant</li><li>• Médaka bleuté</li><li>• Attrape-aube</li><li>• Poisson cristal</li><li>• Épinoche dovenin</li><li>• Poisson-papillon vert</li><li>• Koï doré</li></ul>',
          'peche4': '<ul class="peche"><li>• Médaka bleuté</li><li>• Poisson cristal</li><li>• Épinoche dovenin</li><li>• Poisson-papillon vert</li><li>• Koï rouillé</li></ul>',
          'peche5': '<ul class="peche"><li>• Médaka sucrant</li><li>• Médaka bleuté</li><li>• Épinoche dovenin</li><li>• Akai maou</li><li>• Poisson-papillon vert</li><li>• Poisson-globe</li><li>• Poisson-globe amer</li></ul>',
          'peche6': '<ul class="peche"><li>• Médaka sucrant</li><li>• Médaka bleuté</li><li>• Épinoche dovenin</li><li>• Poisson-papillon vert</li></ul>',
          'peche7': '<ul class="peche"><li>• Médaka bleuté</li><li>• Attrape-aube</li><li>• Épinoche dovenin</li><li>• Akai maou</li><li>• Poisson-papillon vert</li><li>• Poisson-globe</li><li>• Poisson-globe amer</li></ul>',
          'peche8': '<ul class="peche"><li>• Médaka</li><li>• Épinoche dovenin</li><li>• Arpente-neige</li><li>• Poisson-papillon vert</li></ul>',
          'peche9': '<ul class="peche"><li>• Médaka sucrant</li><li>• Attrape-aube</li><li>• Poisson cristal</li><li>• Épinoche combattante</li><li>• Poisson-papillon marron</li><li>• Poisson-globe amer</li></ul>',
          'peche10': '<ul class="peche"><li>• Médaka</li><li>• Épinoche combattante</li><li>• Poisson-papillon marron</li></ul>',
          'peche11': '<ul class="peche"><li>• Médaka</li><li>• Médaka sucrant</li><li>• Attrape-aube</li><li>• Poisson-papillon marron</li></ul>',
          'peche12': '<ul class="peche"><li>• Médaka</li><li>• Médaka sucrant</li><li>• Attrape-aube</li><li>• Poisson cristal</li><li>• Scalaire chousei</li></ul>',
          'peche13': '<ul class="peche"><li>• Médaka sucrant</li><li>• Épinoche combattante</li><li>• Akai maou</li><li>• Poisson-papillon marron</li><li>• Koï doré</li><li>• Koï rouillé</li></ul>',
          'peche14': '<ul class="peche"><li>• Médaka sucrant</li><li>• Épinoche combattante</li><li>• Akai maou</li><li>• Poisson-papillon marron</li><li>• Koï doré</li><li>• Koï rouillé</li></ul>',
          'peche15': '<ul class="peche"><li>• Médaka</li><li>• Médaka sucrant</li><li>• Attrape-aube</li><li>• Poisson cristal</li><li>• Épinoche combattante</li><li>• Poisson-papillon marron</li></ul>',
          'peche16': '<ul class="peche"><li>• Médaka</li><li>• Poisson cristal</li><li>• Épinoche combattante</li></ul>',
          'peche17': '<ul class="peche"><li>• Médaka sucrant</li><li>• Épinoche combattante</li><li>• Akai maou</li><li>• Poisson-papillon marron</li><li>• Koï doré</li><li>• Koï rouillé</li></ul>',
          'peche18': '<ul class="peche"><li>• Médaka sucrant</li><li>• Attrape-aube</li><li>• Poisson cristal</li><li>• Épinoche combattante</li><li>• Poisson-globe</li></ul>',
          'peche19': '<ul class="peche"><li>• Médaka verni</li><li>• Épinoche pulmonée</li><li>• Akai maou</li><li>• Poisson-globe</li><li>• Poisson-globe amer</li></ul>',
          'peche20': '<ul class="peche"><li>• Médaka verni</li><li>• Épinoche pulmonée</li><li>• Poisson-papillon violet</li></ul>',
          'peche21': '<ul class="peche"><li>• Scalaire raimei</li></ul>',
          'peche22': '<ul class="peche"><li>• Médaka</li><li>• Épinoche pulmonée</li><li>• Poisson-papillon violet</li><li>• Poisson-globe amer</li></ul>',
          'peche23': '<ul class="peche"><li>• Médaka</li><li>• Médaka verni</li><li>• Attrape-aube</li><li>• Poisson cristal</li><li>• Épinoche pulmonée</li><li>• Poisson-papillon violet</li></ul>',
          'peche24': '<ul class="peche"><li>• Médaka</li><li>• Médaka verni</li><li>• Attrape-aube</li><li>• Poisson cristal</li><li>• Épinoche pulmonée</li><li>• Poisson-papillon violet</li></ul>',
          'peche25': '<ul class="peche"><li>• Médaka verni</li><li>• Épinoche pulmonée</li><li>• Akai maou</li><li>• Poisson-papillon violet</li><li>• Koï doré</li><li>• Koï rouillé</li></ul>',
          'peche26': '<ul class="peche"><li>• Médaka</li><li>• Attrape-aube</li><li>• Poisson cristal</li><li>• Poisson-papillon violet</li><li>• Poisson-globe</li></ul>',
       
          // Défis
       
          'defik': 'Tuez tous les ennemis en ',
          'defic': 'Ouvrez le coffre en ',
          'defip': 'Récupérez toutes les particules en ',
          'defib': 'Détruisez tous les barils en ',
          'defis': ' secondes',
       
          // Coms
       
          'br': '<br>',
          'com001': 'Détruire les ronces avec une attaque type <a style="color:red;">FEU</a><br>et tuer les ennemis qui apparaissent',
          'com002': 'Détruire les ronces avec une attaque type <a style="color:red;">FEU</a>',
          'com003': 'Tuer les ennemis pour déverrouiller le coffre',
          'com004': 'Ramasser les 4 carottes puis<br>tuer les ennemis pour obtenir le coffre',
          'com005': 'Ramasser les 3 esprits du vent pour vous envoler<br>et passer par dessus le champ de force',
          'com006': 'Détruire les rochers pour accéder au coffre',
          'com007': 'Détruire le mur pour faire apparaître le coffre',
          'com008': 'Tuer le blob dans l\'arbre pour obtenir le coffre',
          'com009': 'Ramassez les carottes pour faire apparaître le coffre',
          'com010': 'Ramassez la pomme sur le pilier pour faire apparaître le coffre',
          'com011': 'Détruire le tas de pierre, puis tuer le blob<br>pour faire apparaître le coffre',
          'com242': 'Prenez un électrogranum et touchez les épées dans le même ordre<br>que la fée puis tuez les ennemis pour déverrouiller le coffre',
          'com243': 'Ramassez les Fleurs sucrantes puis<br>tuez les ennemis pour obtenir le coffre',
          'com244': 'Tuez les ennemis des 3 zones et ouvrez les coffres pour déverrouiller les totems<br>puis activez-les et tuez le boss pour faire apparaître le coffre'
      };
       
      var langEN = {
          // UI
          'ui-found': 'Found',
          'ui-load': ' markers loaded',
          'ui-succes': 'Achievement : ',
          'ui-click': 'You\'ve clicked on map at ',
          'ui-prereset': 'You\'re about to reset All Markers of the map !!!\nProceed ?',
          'ui-reset': 'Markers reseted. Refreshing...',
          'ui-import': 'Markers loaded. Refreshing...',
          'ui-fileerror': 'Invalid Markers File !!!',
          'ui-export': 'GenshinMapMarker.txt file will be downloaded to your Web Browser download default folder.',
          'ui-close': 'Hide Menu',
          'ui-open': 'Show Menu',
          'ui-info': 'Information',
       
          // Cat Marker
          'cat01': 'Statue of 7',
          'cat02': 'Teleport',
          'cat03': 'Viewpoint',
          'cat04': 'Common Chest',
          'cat96': 'Fleur d\'Amakumo',
          'cat97': 'Perle de Corail',
       
          // Succès
          'succest001': 'Beloved of the Anemo Archon',
          'succesh001': 'Climb up into the hands of the statue and sit down to achieve success.',
          'succest002': 'Seeds of Stories, Brought by the wind',
          'succesh002': 'Everything is explained in the video',
          'succest003': 'The best sword in the cemetery',
          'succesh003': 'Kill the 3 camps champions to unlock the chest',
          'succest043': 'Who Let the Dogs Out ?',
          'succesh043': 'Free the dog by opening the cage with<br>an iron key found on the island',
          'succest044': 'Palace in a Pool',
       
          // Panoramas
          'pano1': 'The City of Wind',
          'pano2': 'The Marsh of Celestial Guardians',
          'pano3': 'Windswept Wilderness',
          'pano4': 'Land of Clear Springs',
          'pano5': 'Manor of Day break',
          'pano6': 'Favonius Cathedral',
          'pano7': 'Knights of Favonius - Library',
          'pano8': 'Ancient Thousand Winds Temple',
          'pano9': 'Forgotten Sword Cemetery',
          'pano10': 'Abandoned Capital of Howling Winds',
          'pano11': 'Where Merchants Flock and All Ships Dock',
          'pano12': 'Feigun Slope',
          'pano13': 'Chihu Rock',
          'pano14': 'Yujing Terrace',
          'pano15': 'Vigilant Guardian\'s Vantage Point',
          'pano16': 'Marsh of Rustling Reeds',
          'pano17': 'Ruins of Guili',
          'pano18': 'A Home in the Hills',
          'pano19': 'Where Mountains Peak Beyond the Clouds',
          'pano20': 'Moonlit Tree',
          'pano21': 'Mist-veiled Stone Forest',
          'pano22': 'Weeping Garden',
          'pano23': 'A drop in the Ocean',
          'pano24': 'Beyond the Chasm',
          'pano25': 'Dunyu Ruins',
          'pano26': 'Qingxu\'s Forsaken Tower',
          'pano27': 'Nine Pillars of Peace',
          'pano28': 'Ritou, Narukami Island',
          'pano29': 'Grand Narukami Shrine, Mt Yougou',
          'pano30': 'The Sacred Forest in the Moonlight',
          'pano31': 'Suburbs, Inazuma City',
          'pano32': 'Rift Valley, Yashiori Island',
          'pano33': 'Tatara Islands\' Vanatge Point',
          'pano34': 'Tidal Flat Amidst The Flames of War',
          'pano35': 'Overlooking Serpent Head',
          'pano36': 'Tenryou, Inazuma City',
          'pano37': 'Front Line, Kannazuka',
          'pano38': 'Where Swirling Storm Clouds Gather',
          'pano39': 'The Silent Fishing Village',
          'pano40': 'The Stranded Flagship',
          'pano41': 'The Pearlescent Palace',
          'pano42': 'The Moon-Bathed Deep',
          'pano43': 'Village of the People of the Deep',
       
          // Pêche
       
          'peche1': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Aizen Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li></ul>',
          'peche2': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Aizen Medaka</li><li>• Dawn catcher</li><li>• Tea-colored Shirakodai</li></ul>',
          'peche3': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Aizen Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li><li>• Venomspine Fish</li><li>• Tea-colored Shirakodai</li><li>• Golden Koi</li></ul>',
          'peche4': '<ul class="peche"><li>• Aizen Medaka</li><li>• Crystalfish</li><li>• Venomspine Fish</li><li>• Tea-colored Shirakodai</li><li>• Rusty Koi</li></ul>',
          'peche5': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Aizen Medaka</li><li>• Venomspine Fish</li><li>• Akai maou</li><li>• Tea-colored Shirakodai</li><li>• Pufferfish</li><li>• Bitter Pufferfish</li></ul>',
          'peche6': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Aizen Medaka</li><li>• Venomspine Fish</li><li>• Tea-colored Shirakodai</li></ul>',
          'peche7': '<ul class="peche"><li>• Aizen Medaka</li><li>• Dawn catcher</li><li>• Venomspine Fish</li><li>• Akai maou</li><li>• Tea-colored Shirakodai</li><li>• Pufferfish</li><li>• Bitter Pufferfish</li></ul>',
          'peche8': '<ul class="peche"><li>• Medaka</li><li>• Venomspine Fish</li><li>• Snowstrider</li><li>• Tea-colored Shirakodai</li></ul>',
          'peche9': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li><li>• Betta</li><li>• Brown shirakodai</li><li>• Bitter Pufferfish</li></ul>',
          'peche10': '<ul class="peche"><li>• Medaka</li><li>• Betta</li><li>• Brown shirakodai</li></ul>',
          'peche11': '<ul class="peche"><li>• Medaka</li><li>• Sweet-flower Medaka</li><li>• Dawn catcher</li><li>• Brown shirakodai</li></ul>',
          'peche12': '<ul class="peche"><li>• Medaka</li><li>• Sweet-flower Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li><li>• Abiding Angelfish</li></ul>',
          'peche13': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Betta</li><li>• Akai maou</li><li>• Brown shirakodai</li><li>• Golden Koi</li><li>• Rusty Koi</li></ul>',
          'peche14': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Betta</li><li>• Akai maou</li><li>• Brown shirakodai</li><li>• Golden Koi</li><li>• Rusty Koi</li></ul>',
          'peche15': '<ul class="peche"><li>• Medaka</li><li>• Sweet-flower Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li><li>• Betta</li><li>• Brown shirakodai</li></ul>',
          'peche16': '<ul class="peche"><li>• Medaka</li><li>• Crystalfish</li><li>• Betta</li></ul>',
          'peche17': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Betta</li><li>• Akai maou</li><li>• Brown shirakodai</li><li>• Golden Koi</li><li>• Rusty Koi</li></ul>',
          'peche18': '<ul class="peche"><li>• Sweet-flower Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li><li>• Betta</li><li>• Pufferfish</li></ul>',
          'peche19': '<ul class="peche"><li>• Glaze Medaka</li><li>• Lunged Stickleback</li><li>• Akai maou</li><li>• Pufferfish</li><li>• Bitter Pufferfish</li></ul>',
          'peche20': '<ul class="peche"><li>• Glaze Medaka</li><li>• Lunged Stickleback</li><li>• Purple shirakodai</li></ul>',
          'peche21': '<ul class="peche"><li>• Raimei Angelfish</li></ul>',
          'peche22': '<ul class="peche"><li>• Medaka</li><li>• Lunged Stickleback</li><li>• Purple shirakodai</li><li>• Bitter Pufferfish</li></ul>',
          'peche23': '<ul class="peche"><li>• Medaka</li><li>• Glaze Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li><li>• Lunged Stickleback</li><li>• Purple shirakodai</li></ul>',
          'peche24': '<ul class="peche"><li>• Medaka</li><li>• Glaze Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li><li>• Lunged Stickleback</li><li>• Purple shirakodai</li></ul>',
          'peche25': '<ul class="peche"><li>• Glaze Medaka</li><li>• Lunged Stickleback</li><li>• Akai maou</li><li>• Purple shirakodai</li><li>• Golden Koi</li><li>• Rusty Koi</li></ul>',
          'peche26': '<ul class="peche"><li>• Medaka</li><li>• Dawn catcher</li><li>• Crystalfish</li><li>• Purple shirakodai</li><li>• Pufferfish</li></ul>',
       
          // Défis
       
          'defik': 'Kill all enemies in ',
          'defic': 'Open the chest in ',
          'defip': 'Take all particles in ',
          'defib': 'Destroy all barrels in ',
          'defis': ' seconds',
       
          // Coms
       
          'br': '<br>',
          'com001': 'Destroy brambles with a <a style="color:red;">FIRE</a> attack<br>and then kill all enemies',
          'com002': 'Destroy brambles with a <a style="color:red;">FIRE</a> attack',
          'com003': 'Kill all enemies to unlock the chest',
          'com004': 'Collect the 4 carrots then<br>kill all enemies to get the chest',
          'com005': 'Pick up the 3 wind spirits to fly away and go over the force field',
          'com006': 'Destroy the rocks to get the chest',
          'com007': 'Destroy the wall to make the chest appear',
          'com008': 'Kill the blob in the tree to get the chest',
          'com009': 'Collect the carrots to make the chest appear',
          'com010': 'Pick up the apple on the pillar to make the chest appear',
          'com011': 'Destroy the stone pile, then kill the blob<br>to make the chest appear',
          'com242': 'Take an electrogranum and touch the swords in the same order<br>as the seelie then kill the enemies to unlock the chest',
          'com243': 'Take the Sweet Flowers then kill enemies<br>to make the chest appear',
          'com244': 'Kill the enemies of the 3 zones and open the chests to unlock the totems<br>then activate them and kill the boss to make the chest appear'
      };


    Les fichiers markers.js et text.js sont lus en premier car ils ne comprennent que des variables qui seront exploitées ensuite dans le fichier map.js
    En gros quand j'initialise la création d'une catégorie de markers, je lis la variable correspondante et je traite le array. (le plus simple est de regarder le fichier map.js / fonction initmarker)
    L'utilisation du <textarea> c'est pour faire une zone de saisie rapide en copier/coller plutôt que de modifier le code source de la page en y intégrant le bloc à traiter (dans ce cas là je n'ai aucun problèmes tout marche parfaitement).

    Mon script de convertion gère les variables langue.comxxx en les remplacent dans le résultat non pas par le contenu comme en jeu mais par son propre nom pour que je puisse la réintégrer dans le résultat. C'est pour ca que j'ai fait les boucles en créant les tableaux disant que par ex langue.com001="langue.com001".
    comme ca je converti les coordonnées x et y et je réécrit mon marqueur tel qu'il a été lu mais avec les bonnes coordonnées. Après je copie mon bloc de markers modifié et je le colle à la place de l'ancien dans mon fichier markers.js dans VSC.

    J'ai prévu la lecture et le traitement intégral du fichier markers.js mais je doit y apporter certaines modifications avant.

    Mais le problème est identifié car si je travaille avec un bloc de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [[0,[14820,10500]],[0,[13440,10622]],[0,[14932, 9208]],[0,[11936, 9062]],[0,[11780,11794]],[0,[11794,14352]],[0,[ 9348,12806]],[0,[10316,15030]],[0,[12804,13092]],[0,[14340,11984]],
        [0,[20105,19193]],[0,[18764,21409]],[0,[16737,21753]],[12,[20355,23210],"14"],[0,[13444,22010]]]
    ca marche et de plus la mise en forme et conservée (ligne de 10 marqueurs, un espace avant le nombre si < à 10000) même si elle n'est qu'esthétique mais elle me permet de m'y retrouver plus facilement dans mes blocs.

    Par contre si dans le bloc les marqueurs ont une variable langue alors ca plante car la fonction parse attend du texte et la variable langue n'est correctement traitée que si je mets le bloc dans la var dans le code directement.

    En gros je ne sais pas comment transformer langue.comxxx en "langue.comxxx" ou lui dire que langue.comxxx est une string

    C'est très clair dans ma tête mais dur à expliquer par écrit.

    J'espère avoir répondu a vos questions pour pourvoir m'aider.

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 701
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 701
    Par défaut
    et comment modifiez vous le fichier marquers.js ? à la main ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/06/2006, 16h52
  2. [RegEx] Lecture/transformation de mon fichier texte
    Par charlysquare dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2006, 14h24
  3. [Librairies] fonction qui transforme le rtf en texte
    Par The Wretched dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/12/2005, 13h02
  4. inclure une image dans un bloc de texte
    Par allowen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/08/2005, 14h11
  5. [langage] Ecrire un bloc de texte dans un fichier
    Par sarahbes dans le forum Langage
    Réponses: 6
    Dernier message: 10/06/2004, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo