Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    892

    [javascript] problema con funzione

    Ciao a tutti.
    Sto scrivendo uno script che riproduca il gioco dell'impiccato. In pratica, una volta che l'utente scrive la parola da indovinare e la invia, l'altro utente deve scegliere una lettera per volta per vedere se è presente e quante volte nella parola da indovinare.

    Il codice che ho sviluppato per adesso è questo:

    codice:
    <script>
    function Gioco(parola){
    this.scriviparola=function(parola){
    tabellone.value="";
    luigi=parola;
    splittata=luigi.split("");
    for(i=0;i<splittata.length;i++){
    tabellone.value +="x";
    }
    }
    this.indovina=function(lettera){
    if(lettera==""){
    alert("indica una lettera");
    }
    if(tabellone.value==" "){
    alert("scrivi una parola");
    }
    else {
    
    tabellone.value="";
    letteraind=lettera;
    for (i=0;i<splittata.length;i++){
    if (splittata[i]==letteraind){
    tabellone.value+=letteraind;
    }
    
    else{
    tabellone.value+="x";
    }
    }
    }
    }
    }
    
    miavar=new Gioco();
    </script>
    <input type="text" name="parola" size=20>
    
    <input type="button" name="invia" value="registra parola da indovinare" onclick="miavar.scriviparola(parola.value);">
    
    Inserisci una lettera: 
    
    <input type="text" name="letteraind" size=20>
    
    <input type="button" name="tenta" value="tenta" onClick=miavar.indovina(letteraind.value);>
    
    <textarea name="tabellone" cols="30" rows="30"> </textarea>
    In pratica creo un oggetto, registro la parola inviata e la splitto per poi sostituire le lettere con delle x.
    Fin qui tutto ok. La funzione "indovina" invece prende la lettera scelta dall'utente, la confronta con l'array creato dalle lettere splittate e, nel caso in cui la lettera sia presente, la sostituisce alle x nella posizione giusta (grazie ad un ciclio for). Anche qui tutto ok.
    Adesso però mi fermo di fronte ad un problema ( ), infatti se scelgo una nuova lettera presente nell'array, la funzione CANCELLA LE LETTERE INDOVINATE PRIMA e le sostituisce con le x - infatti sono costretto a risettare l'attributo value della textarea a "", altrimenti le nuove lettere si aggiungono di seguito alle precedenti creando una parola lunga il doppio, poi il triplo e così via...
    La domanda è: come faccio a FISSARE le lettere indovinate e la loro posizione SOSTITUENDO poi alle x rimaste quelle indovinate in seguito???


  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Per prima cosa i nomi di campi, oggetti, funzioni, variabili, parametri... devono essere univoci: prova a cambiarli.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    892
    Io li ho cambiati, ma siamo al punto di prima...

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Posta il codice attuale...

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    892
    codice:
    <script>
    function Gioco(parola){
    this.scriviparola=function(parola){
    tabellone.value="";
    luigi=parola;
    splittata=luigi.split("");
    for(i=0;i<splittata.length;i++){
    tabellone.value +="x";
    }
    }
    this.indovina=function(lettera){
    if(lettera==""){
    alert("indica una lettera");
    }
    if(tabellone.value==" "){
    alert("scrivi una parola");
    }
    else {
    
    tabellone.value="";
    for (i=0;i<splittata.length;i++){
    if (splittata[i]==lettera){
    tabellone.value+=lettera;
    }
    
    else{
    tabellone.value+="x";
    }
    }
    }
    }
    }
    
    miavar=new Gioco();
    </script>
    <input type="text" name="parola" size=20>
    
    <input type="button" name="invia" value="registra parola da indovinare" onclick="miavar.scriviparola(parola.value);">
    
    Inserisci una lettera: 
    
    <input type="text" name="lettera" size=20>
    
    <input type="button" name="tenta" value="tenta" onClick=miavar.indovina(lettera.value);>
    
    <textarea name="tabellone" cols="30" rows="30"> </textarea>

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Prova questo:

    codice:
    <script>
    function Gioco(parola1){
      vecchia="";
      luigi="";
      conta=0;
    this.scriviparola=function(parola1){
      tabellone.value="";
      luigi=parola1;
      splittata=luigi.split("");
      for(i=0;i<splittata.length;i++){
        tabellone.value +="#";
      }
      vecchia = tabellone.value;
    }
    
    this.indovina=function(lettera1){
      if(lettera1==""){
        alert("indica una lettera");
      }
      if(tabellone.value==" "){
        alert("scrivi una parola");
      }
      else {
        conta++;
        tabellone.value="";
        letteraind1=lettera1;
        for (i=0;i<splittata.length;i++){
    	  // prima controllo le gia' trovate
          if (vecchia.substr(i,1)!="#"){
            tabellone.value+=vecchia.substr(i,1);
          }
          else{
            if (splittata[i]==letteraind1){
              tabellone.value+=letteraind1;
              letteraind1="@"; // per impedire di trvare le doppie 
            }
            else{
              tabellone.value+="#";
            }
          }
        }
        vecchia = tabellone.value;
      }
      if (tabellone.value==luigi) alert("Bravo! in "+conta+" tentativi");
    }
    
    }
    
    miavar=new Gioco();
    </script>
    <input type="text" name="parola" size=20>
    
    <input type="button" name="invia" value="registra parola da indovinare" onclick="miavar.scriviparola(parola.value);">
    
    Inserisci una lettera: 
    
    <input type="text" name="letteraind" size=20 onfocus="this.select()">
    
    <input type="button" name="tenta" value="tenta" onClick=miavar.indovina(letteraind.value);>
    
    <textarea name="tabellone" cols="30" rows="30"> </textarea>
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    892
    così funziona. Grazie mille.-..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.