Ergebnis 1 bis 6 von 6
  1. #1
    Sasch ist offline Mitglied
    registriert
    01-09-2011
    Beiträge
    46

    Button zeigt falsches Ergebnis an

    Hallo,

    ich bin gerade dabei ein Lernspiel für Kinder zu erstellen.
    Soweit konnte ich bisher alles realisieren.

    Es ist ein Rechenspiel. Ist die Aussage wahr oder falsch...
    Der linke Button ist der Wahr Button und der rechte der Falsch Button

    Mein Problem liegt darin,
    dass ich Stage 1 beginne und dann Level 1 für Level 2, Level 3 usw aufwärts durchspiele. Alles ok.

    Spiele ich danach ein Level durch, das darunter ist, verändert es komischerweise die Funktion,
    sodass wenn die Aussage wahr ist, bei einem Klick auf den Richtig-Button, das Ergebnis falsch gewertet wird.

    Ich habe keine Ahnung mehr woran es liegen könnte... aber vielleicht jemand von euch

    Besten Dank für Eure Hilfe


    Mein Javascript
    Code:
       $('#button1').hide();
    $('#button2').hide();
    $('#tutorial').hide();
    $('#registrierung').hide();
    $('#playerwahl').hide();
    $('#spielstaerke').hide();
    $('#spielmodus').hide();
    $('#stagewahl').hide();
    $('#levelwahl').hide();
    $('#los_gehts').hide();
    $('#game').hide();
    $('#ziel').hide();
    $('#game_over').hide();
    
    
    extra_coins = 0;
    coins = 0;
    coins_gesamt = 100;
    stage_eins_complete = false;
    stage_zwei_complete = false;
    zehn = 0;
    z = 0;
    
    
    
    function welcome() {
    
    setTimeout( function() {*
    $('#welcome').hide();
    $('#tutorial').show();
    }, 1000)
    }
    welcome();
    
    
    // TUT
    
    $("#tutorial_button").click( function() {
    $('#tutorial').hide();
    $('#registrierung').show();
    });
    
    
    // REG
    
    $("#registrierung_button").click( function() {
    $('#registrierung').hide();
    $('#playerwahl').show();
    });
    
    
    
    
    // ---------     1. Playeranzahl wählen
    
    $('#playerwahl_btn1,#playerwahl_btn2,#playerwahl_btn3').click( function() {
    
        	spieleranzahl = (this.value);
    
        	$('#playerwahl').fadeOut('slow', function () {
          //tue etwas nachdem #eineID ausgeblendet wurde...
          
        	$('#playerwahl').hide();
        	$('#spielstaerke').fadeIn('slow'); }) 
          
    })
    
    
    
    
    
    // ------------    2. Spielstärke wählen
    
    $('#spielstaerke_btn1,#spielstaerke_btn2,#spielstaerke_btn3').click( function() {
    
          spielstaerkewahl = (this.value);
          
          $('#spielstaerke').fadeOut('slow', function () {
          //tue etwas nachdem #eineID ausgeblendet wurde...
          $('#spielstaerke').hide();
          
          $('#spielmodus').fadeIn('slow'); })  
    })
    
    
    
    
    
    
    // ---------     3. Spielmodus wählen
    
    $('#spielmodus_btn1,#spielmodus_btn2,#spielmodus_btn3').click( function() {
    
    			spielmoduswahl = (this.value);
          
    			$('#spielmodus').fadeOut('slow', function () {
          //tue etwas nachdem #eineID ausgeblendet wurde...
          $('#spielmodus').hide();
          
          $('#stagewahl').fadeIn('slow'); })  
    })
    
    
    
    
    
    // --------   4. Stage wählen
    
    $('#stagewahl_btn1,#stagewahl_btn2,#stagewahl_btn3,#stagewahl_btn4,#stagewahl_btn5,#stagewahl_btn6,#stagewahl_btn7,#stagewahl_btn8,#stagewahl_btn9,#stagewahl_btn10').click( function() {
    
          stage_auswahl = (this.value);
          
          zahlen_erstellung(); // Abhängigkeit Spielstärke & Stagewahl
          anzahl_der_aufgaben(); // Abhängigkeit Stagewahl
          leben_erstellen(); 
          zeiteinteilung();
          progressbar_aufgabe_pro_level();
          
          $('#stagewahl').fadeOut('slow', function () {
          //tue etwas nachdem #eineID ausgeblendet wurde...
          $('#stagewahl').hide();
          $('#levelwahl').fadeIn('slow'); 
          })  
    
    })
    
    
    
    function zahlen_erstellung() {
    // Zufallszahlen nach Schwierigkeit und Stage
        
    // Schwierigkeit Einfach Zahlen 1 - 20
            
         if (stage_auswahl == 1 && spielstaerkewahl == 1) { minimum_zahl = 1; maximal_zahl = 10; }
    else if (stage_auswahl == 2 && spielstaerkewahl == 1) { minimum_zahl = 2; maximal_zahl = 11; }
    else if (stage_auswahl == 3 && spielstaerkewahl == 1) { minimum_zahl = 3; maximal_zahl = 12; }
    else if (stage_auswahl == 4 && spielstaerkewahl == 1) { minimum_zahl = 4; maximal_zahl = 13; }
    else if (stage_auswahl == 5 && spielstaerkewahl == 1) { minimum_zahl = 5; maximal_zahl = 14; }
    
               
               
    // Schwierigkeit Mittel Zahlen 20 - 40
               
         if (stage_auswahl == 1 && spielstaerkewahl == 2) { minimum_zahl = 1; maximal_zahl = 20; }
    else if (stage_auswahl == 2 && spielstaerkewahl == 2) { minimum_zahl = 12; maximal_zahl = 22; }
    else if (stage_auswahl == 3 && spielstaerkewahl == 2) { minimum_zahl = 13; maximal_zahl = 24; }
    else if (stage_auswahl == 4 && spielstaerkewahl == 2) { minimum_zahl = 14; maximal_zahl = 26; }
    else if (stage_auswahl == 5 && spielstaerkewahl == 2) { minimum_zahl = 15; maximal_zahl = 28; }
    
               
               
    // Schwierigkeit Schwer Zahlen 40 - 60
               
         if (stage_auswahl == 1 && spielstaerkewahl == 3) { minimum_zahl = 21; maximal_zahl = 42; }
    else if (stage_auswahl == 2 && spielstaerkewahl == 3) { minimum_zahl = 22; maximal_zahl = 44; }
    else if (stage_auswahl == 3 && spielstaerkewahl == 3) { minimum_zahl = 23; maximal_zahl = 46; }
    else if (stage_auswahl == 4 && spielstaerkewahl == 3) { minimum_zahl = 24; maximal_zahl = 48; }
    else if (stage_auswahl == 5 && spielstaerkewahl == 3) { minimum_zahl = 25; maximal_zahl = 50; }
    
    
    if(stage_auswahl == 1 && stage_eins_complete == true )
    { $("#levelwahl_btn1, #levelwahl_btn2, #levelwahl_btn3").attr("disabled",false); }
    }
    
    
    // Aufgaben pro Level erzeugen
    
    function anzahl_der_aufgaben() {
    
         if(stage_auswahl == 1) { aufgabe_pro_level = 10;}
    else if(stage_auswahl == 2) { aufgabe_pro_level = 20;}
    else if(stage_auswahl == 3) { aufgabe_pro_level = 30;}
    else if(stage_auswahl == 4) { aufgabe_pro_level = 40;}
    else if(stage_auswahl == 5) { aufgabe_pro_level = 50;}
    
    }
    
    
    
    // Progressbaranzeigewert je nach Level 
    
    function progressbar_aufgabe_pro_level() {
    
    if(aufgabe_pro_level == 10) { y = 10; }
    else if(aufgabe_pro_level == 20) { y = 5; }
    else if(aufgabe_pro_level == 30) { y = 3.3; }
    else if(aufgabe_pro_level == 40) { y = 2.5; }
    else if(aufgabe_pro_level == 50) { y = 2; }
    
    }
    
    
    function zeiteinteilung() {
         if(spielstaerkewahl == 1) { zeit_nach_aufgabe = aufgabe_pro_level * 200;}
    else if(spielstaerkewahl == 2) { zeit_nach_aufgabe = aufgabe_pro_level * 300;}
    else if(spielstaerkewahl == 3) { zeit_nach_aufgabe = aufgabe_pro_level * 400;}
    
    }
    
    
    
    function leben_erstellen() {
    
    if (stage_auswahl == 1) { leben = 2;}
    else if (stage_auswahl == 2) { leben = 4;}
    else if (stage_auswahl == 3) { leben = 6;}
    else if (stage_auswahl == 4) { leben = 8;}
    else if (stage_auswahl == 5) { leben = 10;}
    
    
    }
    
    
    
    
    
    // 5. Level wählen
    
    $('#levelwahl_btn1, #levelwahl_btn2, #levelwahl_btn3, #levelwahl_btn4, #levelwahl_btn5, #levelwahl_btn6, #levelwahl_btn7, #levelwahl_btn8, #levelwahl_btn9, #levelwahl_btn10').click( function() {
    
          level_auswahl = (this.value);
          
          
          $('#levelwahl').fadeOut('slow', function () {
          //tue etwas nachdem #eineID ausgeblendet wurde...
          $('#levelwahl').hide();
          
          $('#los_gehts').fadeIn('slow');
          countdowner();
          })  
          
    })
    
    
    
    
    
    
    // Countdowner zum Start
    
    function countdowner(){
    
          var sTime = new Date().getTime();
          var countDown = 3;
    
          function UpdateTime() {
          var cTime = new Date().getTime();
          var diff = cTime - sTime;
          var seconds = countDown - Math.floor(diff / 1000);
       if (seconds >= 1) {
            var minutes = Math.floor(seconds / 60);
            seconds -= minutes * 60;
            $("#minutes").text(minutes < 10 ? "0" + minutes : minutes);
            $("#seconds").text(seconds < 10 ? "0" + seconds : seconds); } 
            
        else 
            { clearInterval(counter); 
            
              // Countdown vorbei
              
              $('#los_gehts').fadeOut('slow');
              
              stoppuhr();
              game();
              
              $('#balken').hide(); $('#game').show(); $('#button1').show(); $('#button2').show();
              
              }
           
           }
    UpdateTime();
    var counter = setInterval(UpdateTime, 500);
    
    }
    
    
    
    
    
    
    
    // Stoppuhr Zeit
    
    function stoppuhr() {
    
    stopp_zeit = zeit_nach_aufgabe;
    
    
        var counter_stopp = setInterval(timer, 10); //10 will  run it every 100th of a second
        
        function timer()
        {
        
            // Wenn Zeit abgelaufen ist oder Leben = 0
        
            if (stopp_zeit <= 0 || leben <= 0 )
            {
                clearInterval(counter_stopp);
                leben_erstellen(); 
                zehn = 0;
                coins = 0;
                
                 $("#game_over").toggle('explode');  
                 $('#button1').hide();  
                 $('#button2').hide();
                 $('#balken').show();
     
             }
             
             
             // Wenn das Level geschafft wurde
             
            else if ( zehn > aufgabe_pro_level )
            {
                
                clearInterval(counter_stopp);
                zehn = 0;
                
                coins_gesamt = (coins + coins_gesamt);
                $('#coins_gesamt').html(coins_gesamt);
               
                coins = 0;
                
                
                
                
                
                
    /* Levelbutton enabled wenn Level geschafft
          
    function button_enabled() {
                
         if (stage_auswahl == 1 ) { 
         
                 
         
                       if ( level_auswahl == 1 ) { 
                       $("#levelwahl_btn2").attr("disabled",false); }
    
               					else if (level_auswahl == 2 ) {    
               				  $("#levelwahl_btn2,#levelwahl_btn3").attr("disabled",false); }
               
               				  else if (level_auswahl == 3 ) {   
               					$("#stagewahl_btn2").attr("disabled",false); 
                        
               $("#levelwahl_btn2,#levelwahl_btn3").attr("disabled",true); 
              
               
               stage_eins_complete = true;
               }
    
         }
         
         
         
         else if (stage_auswahl == 2 ) { 
         
                 
         
                       if ( level_auswahl == 1 ) { 
                       $("#levelwahl_btn2").attr("disabled",false); }
    
               					else if (level_auswahl == 2 ) {    
               				  $("#levelwahl_btn2,#levelwahl_btn3").attr("disabled",false); }
               
               				  else if (level_auswahl == 3 ) {   
               					$("#stagewahl_btn2").attr("disabled",false); 
                        
               
              
               
               stage_zwei_complete = true;
               }
    
         }
         
         
         
    }
    
                
    button_enabled();       
    
    */            
                
                
                
                $("#ziel").toggle('explode');
                
                $('#try_again_button').show();  
                $('#button1').hide();  
                $('#button2').hide();
                $('#balken').show();
                
                
              
                return;
             }
             
             
             // Zeit - Probaranzeige   
             
              
              $( "#probar_zeit" ).attr("max", zeit_nach_aufgabe );
              alert(zeit_nach_aufgabe);
              $( "#probar_zeit" ).val(stopp_zeit );
             
             stopp_zeit--;
             document.getElementById("timer").innerHTML=stopp_zeit /100+ " secs"; 
            
          
          
          }
          
          
         
    
    }
    
    
    
    
    
    
    
    
    
    // Das Spiel
    
    function game()
    {
    
    //  --------    Zufallszahlen generieren
    
    zahl1 = Math.round(Math.random() * (maximal_zahl - minimum_zahl + 1) - 0.5) + minimum_zahl;
    zahl2 = Math.round(Math.random() * (maximal_zahl - minimum_zahl + 1) - 0.5) + minimum_zahl; 
    zahl3 = Math.round(Math.random() * (maximal_zahl - minimum_zahl + 1) - 0.5) + minimum_zahl;
    zufall_zahl_fe = Math.round(Math.random() * (maximal_zahl - minimum_zahl + 1) - 0.5) + minimum_zahl;
    
    
    
    //  ----------     Zufallsarray für wahr oder falsch
    
    art = new Array (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);
    art.sort(function() { return 0.5 - Math.random() });
    
    
    
    // Rechenartauswahl je nach Levelwahl
    
    if (level_auswahl == 1 || level_auswahl == 2) { addition(); }
    else if (level_auswahl == 3 || level_auswahl == 4) { minus(); }
    else if (level_auswahl == 5 ) { kette_plus(); }
    else if (level_auswahl == 6 ) { kette_minus(); }
    
    
    
    // Finish - Probaranzeige abhängig von y, je nach Stage   
         
       z = (zehn++) * y;
        
       $( "#probar" ).val( z );
      
           if( z == 100 || z > 100 ) 
           {
           z = 0;
           
           $( "#probar" ).val( z );
           }
           
           
           
           
           
    // Extra Coins Anzeige     
           
        if( extra_coins == 10 ) 
           {
          
           coins = (coins + extra_coins);
           $("#coins_gesamt").html(coins);
           
           extra_coins = 0;
           clearInterval(extra_coins);
           $("#extra_coins").html("Kobold Goldtopf" + extra_coins);
           
           }
           
           
           
           
    // Coins Level usw Anzeige       
           
           
    $("#leben").html("Leben " + leben); $("#coins").html("Coins " + coins);
    $("#aktuelle_spielstaerke").html("aktuelle Spielstärke " + spielstaerkewahl + "&emsp;");
    $("#aktuelle_stage").html("aktuelle Stage " + stage_auswahl + "&emsp;");
    $("#aktuelles_level").html("aktuelles Level " + level_auswahl);
    
    
    
     
    }
    
    
    
    
    
    // BUTTON 2
    
    
    $('#button1').click( function() {
      	  
       
        		if (typeof subtraktion_ergebnis == 'number') {
                
       	 				if (subtraktion_ergebnis == zahl1 - zahl2) { 
                extra_coins++; 
                $("#extra_coins").html(extra_coins), 
                coins = coins + 2; 
                $("#coins").html(coins);
                }
                
    	           else if (!(subtraktion_ergebnis == zahl1 + zahl2)) { 
                 extra_coins = extra_coins - extra_coins; 
                 $("#extra_coins").html(extra_coins); 
                 leben--; $("#leben").html(leben); 
                 } 
             }
        
        
        
        
         else if (typeof addition_ergebnis == 'number') {
                 
                 if (addition_ergebnis == zahl1 + zahl2) { 
                 extra_coins++; 
                 coins++; 
                 $("#coins").html(coins);  
                 $("#extra_coins").html(extra_coins)
                 } 
                 
                 else if (!(addition_ergebnis == zahl1 + zahl2)) { 
                 extra_coins = extra_coins - extra_coins; 
                 leben--; $("#leben").html(leben); 
                 $("#extra_coins").html(extra_coins) 
                 }
         }
         
         
         
         
         
         else if (typeof kette_plus_ergebnis == 'number') {
                 
                 if (kette_plus_ergebnis == zahl1 + zahl2 + zahl3) { 
                 extra_coins++; 
                 $("#extra_coins").html(extra_coins); 
                 coins = coins + 3; 
                 $("#coins").html(coins); 
                 }
                 
                  else if (!(kette_plus_ergebnis == zahl1 + zahl2 + zahl3)) {
                  extra_coins = extra_coins - extra_coins; 
                  $("#extra_coins").html(extra_coins); 
                  leben--; 
                  $("#leben").html(leben);}
           }
                  
                  
         
          else if (typeof kette_minus_ergebnis == 'number') {
                 
                 if (kette_minus_ergebnis == (zahl1 - zahl2) - (zahl3)) { 
                 extra_coins++; $("#extra_coins").html(extra_coins); coins = coins + 4; $("#coins").html(coins);}
            else if (!(kette_minus_ergebnis == (zahl1 - zahl2 - zahl3))) { 
            extra_coins = extra_coins - extra_coins; $("#extra_coins").html(extra_coins); leben--; $("#leben").html(leben); }
         }
         
    
         game();
        
    }); 
    
    
    
    
    // BUTTON 2
    
    
    $('#button2').click( function() {
      	  
       
        if (typeof subtraktion_ergebnis == 'number') {
                
                if (!(subtraktion_ergebnis == zahl1 - zahl2)) { 
                extra_coins++; $("#extra_coins").html(extra_coins); coins = coins + 2; $("#coins").html(coins);}
           else if (subtraktion_ergebnis == zahl1 - zahl2) { leben--; $("#leben").html(leben); } 
        }
        
        else if (typeof addition_ergebnis == 'number') {
                 
                 if (!(addition_ergebnis == zahl1 + zahl2)) { 
                 extra_coins++; $("#extra_coins").html(extra_coins); coins++; $("#coins").html(coins);} 
            else if (addition_ergebnis == zahl1 + zahl2) { leben--; $("#leben").html(leben);}
         }
         
         else if (typeof kette_plus_ergebnis == 'number') {
                 
                 if (!(kette_plus_ergebnis == zahl1 + zahl2 + zahl3)) { 
                 extra_coins++; $("#extra_coins").html(extra_coins); coins = coins + 3; $("#coins").html(coins);}        
                 else if (kette_plus_ergebnis == zahl1 + zahl2 + zahl3) { leben--; $("#leben").html(leben);}
         }
         
         
         game();
        
    }); 
    
    
    
    // addition 
    function addition() {
     
     		if (art[0] < 15) {
     		addition_ergebnis = zahl1 + zahl2; }
        
        else if (art[0] > 14 && art[0] < 19) {
        addition_ergebnis = zahl1 + zahl2 + zufall_zahl_fe; }
        
        else if (art[0] > 18 && art[0] < 29 ) {
        addition_ergebnis = zahl1 + zahl2 - zufall_zahl_fe; }
     
        $("#ergebnis").html(zahl1 + " + " + zahl2 + 
        " = " + addition_ergebnis);  }
    
    
    
    // minus
    function minus(){
     
     if (art[0] < 15) {
     		subtraktion_ergebnis = zahl1 - zahl2; }
        
        else if (art[0] > 14 && art[0] < 19) {
        subtraktion_ergebnis = zahl1 - zahl2 + zufall_zahl_fe; }
      
        else if (art[0] > 18 && art[0] < 29 ) {
        subtraktion_ergebnis = zahl1 - zahl2 - zufall_zahl_fe; }
     
        $("#ergebnis").html("Subtraktion: " + zahl1 + " - " + zahl2 + 
        " = " + subtraktion_ergebnis);  }
    
    
    
    // Kette Plus
    function kette_plus() {
         
         if (art[0] < 15) { kette_plus_ergebnis = zahl1 + zahl2 + zahl3; }
         
         else if (art[0] > 14 && art[0] < 19) {
                  kette_plus_ergebnis = zahl1 + zahl2 + zahl3 + zufall_zahl_fe; }
                  
         else if (art[0] > 18 && art[0] < 29) {
                  kette_plus_ergebnis = zahl1 + zahl2 + zahl3 + zufall_zahl_fe; }
         
         $("#ergebnis").html("Plus Kette: " + zahl1 + " + " + zahl2 + " + " + zahl3 + 
         " = " + kette_plus_ergebnis);  }
         
         
         
         
         
    // Kette Minus
    function kette_minus() {
        
         if (art[0] < 15) { kette_minus_ergebnis = zahl1 - zahl2 - zahl3; }
         
         else if (art[0] > 14 && art[0] < 19) {
                  kette_minus_ergebnis = zahl1 - zahl2 - zahl3 + zufall_zahl_fe; }
                  
         else if (art[0] > 18 && art[0] < 29) {
                  kette_minus_ergebnis = zahl1 - zahl2 - zahl3 + zufall_zahl_fe; }
         
         $("#ergebnis").html("Minus Kette: " + "(" + zahl1 + " - " + zahl2 + ")" + " - " + zahl3 + 
         " = " + kette_minus_ergebnis);  }
         
         
         
         
    
    // Next Level Button
    
    $('#next_level').click( function() { 
    level_auswahl++;
    $('#game').hide();
    $('#ziel').hide();
    $('#los_gehts').show();
    countdowner(); 
    
    })
    
    
    // Try again Button
    
    $('#try_again_button').click( function(){
    $('#game').hide();
    $('#game_over').hide();
    $('#los_gehts').show();
    countdowner();
          
    })
    
    
    // Try again Button 2
    
    $('#try_again_button2').click( function(){
    $('#ziel').hide();
    $('#game').hide();
    $('#los_gehts').show();
    countdowner();
          
    })
    
    // Zur Levelauswahl
    
    $('#back').click( function() {
    $('#game').hide();
    $('#game_over').hide();
    $('#levelwahl').show();
    
    })  
    
    
    // Zur Levelauswahl 2
    
    $('#back2').click( function() {
    $('#ziel').hide();
    $('#game').hide();
    $('#levelwahl').show();
    
    })  
    
    
    // Zur Stageauswahl
    
    $('#stage_wahl_button_game').click( function() {
    $('#game').hide();
    $('#game_over').hide();
    $('#ziel').hide();
    
    $('#stagewahl').show();
    
    })
    Geändert von Sasch (11-03-2016 um 00:36 Uhr)

  2. #2
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Button zeigt falsches Ergebnis an

    Kannst du uns nicht einen Link geben, wo wir uns das live ansehen können? Zusammen mit einer Beschreibung, wie wir das Problem reproduzieren können?

    PS: Dein "Zufallsarray" ist nicht zufällig und arbeitet ineffektiv. Die Verteilungsfunktion für die einzelnen Zahlen sind nicht gleichmäßig über das Array verteilt.

  3. #3
    Sasch ist offline Mitglied
    registriert
    01-09-2011
    Beiträge
    46

    AW: Button zeigt falsches Ergebnis an

    Hi,

    hier sieht man alles im Liveditor https://jsfiddle.net/Stecher/kamh73r4/

    nach dem 3. Level in Stage 1, schaltet sich Stage 2 frei.. ab da stimmt die Funktion der 2 Buttons nicht mehr...

    Links ist standardmäßig der "Wahr" Button und rechts der "Falsch" Button.

    Das Zufallsarray habe ich extra so gemacht, damit mehr wahre Rechenaufgaben entstehen und nicht so viel Falsche

  4. #4
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Button zeigt falsches Ergebnis an

    Ich konnte dein Problem jetzt nicht wirklich reproduzieren, da die Seite dauernd alerts wirft, ABER du hast ein massives Problem mit globalen Variablen. Die sind einfach gefährlich und produzieren schnell sehr komische Fehler. Ändere das. Dringend!

    Außerdem ist dein Datenmodell, in dem du speicherst, ob die Antwort jetzt richtig oder falsch ist, extrem fehleranfällig. Das solltest du überarbeiten. So ist es keine gute Idee, in den Callbacks für die Buttons die Rechnung nocheinmal komplett nachzuvollziehen. Ist unflexibel und außerdem in deiner Implementierung falsch. Du solltest einfach speichern, ob die Antwort falsch oder richtig ist.

    Zitat Zitat von Sasch Beitrag anzeigen
    Das Zufallsarray habe ich extra so gemacht, damit mehr wahre Rechenaufgaben entstehen und nicht so viel Falsche
    Das ist aber eine extrem unperformante und umständliche Methode das zu realisieren. V.a. da du ja immer nur den ersten Eintrag des Arrays benutzt. Vergleiche doch Math.random() direkt mit deinen Schwellwerten...
    Code:
    var rnd = Math.random();
    if (rnd < 0.8){
    	// richtige Antwort
    }
    else if (rnd < 0.9){
    	// + Zufallszahl
    }
    else {
    	// - Zufallszahl
    }

  5. #5
    Sasch ist offline Mitglied
    registriert
    01-09-2011
    Beiträge
    46

    Thumbs up AW: Button zeigt falsches Ergebnis an

    Ja das Alert hatte ich zum Testen drin..
    hier der richtige Link https://jsfiddle.net/Stecher/f8v8ofxj/

    Du hast meine Probleme gut erkannt^^

    ABER du hast ein massives Problem mit globalen Variablen. Die sind einfach gefährlich und produzieren schnell sehr komische Fehler. Ändere das. Dringend!
    Ich versteh nicht ganz wie ich die Variable minimum_zahl lokal, und nicht glaobal mache und trotzdem auch in anderen Funktionen verwenden kann... Da auch viele Variablen abhängig von einander sind.
    Deshalb habe ich alle Variablen global gemacht.


    Funktion 1
    Code:
    // Schwierigkeit Einfach Zahlen 1 - 20
            
         if (stage_auswahl == 1 && spielstaerkewahl == 1) { minimum_zahl = 1; maximal_zahl = 10; }
    else if (stage_auswahl == 2 && spielstaerkewahl == 1) { minimum_zahl = 2; maximal_zahl = 11; }
    else if (stage_auswahl == 3 && spielstaerkewahl == 1) { minimum_zahl = 3; maximal_zahl = 12; }

    Funktion 2
    Code:
    zahl1 = Math.round(Math.random() * (maximal_zahl - minimum_zahl + 1) - 0.5) + minimum_zahl;


    Außerdem ist dein Datenmodell, in dem du speicherst, ob die Antwort jetzt richtig oder falsch ist, extrem fehleranfällig. Das solltest du überarbeiten. So ist es keine gute Idee, in den Callbacks für die Buttons die Rechnung nocheinmal komplett nachzuvollziehen. Ist unflexibel und außerdem in deiner Implementierung falsch. Du solltest einfach speichern, ob die Antwort falsch oder richtig ist.
    Da muss ich dir Recht geben. Allerdings fällt mir kein anderer Weg ein..
    Das mit der "typeof" Abfrage ist auch nicht korrekt..

    Wie meinst du ich soll es einfach speichern, ob die Antwort richtig oder falsch ist?

    Vorallem habe ich auch mehrere Rechenarten..

    Code:
    // addition 
    function addition() {
     
     		if (art[0] < 15) {
     		addition_ergebnis = zahl1 + zahl2; }
        
        else if (art[0] > 14 && art[0] < 19) {
        addition_ergebnis = zahl1 + zahl2 + zufall_zahl_fe; }
        
        else if (art[0] > 18 && art[0] < 29 ) {
        addition_ergebnis = zahl1 + zahl2 - zufall_zahl_fe; }
     
        $("#ergebnis").html(zahl1 + " + " + zahl2 + 
        " = " + addition_ergebnis);  }
    
    
    
    // minus
    function minus(){
     
     if (art[0] < 15) {
     		subtraktion_ergebnis = zahl1 - zahl2; }
        
        else if (art[0] > 14 && art[0] < 19) {
        subtraktion_ergebnis = zahl1 - zahl2 + zufall_zahl_fe; }
      
        else if (art[0] > 18 && art[0] < 29 ) {
        subtraktion_ergebnis = zahl1 - zahl2 - zufall_zahl_fe; }
     
        $("#ergebnis").html("Subtraktion: " + zahl1 + " - " + zahl2 + 
        " = " + subtraktion_ergebnis);  }


    Wenn ich auf den Button klicke, überprüft dieser ob das Ergebnis korrekt ist und muss anschließend eine komplett neue Rechnung machen.. Ich weiß es nicht anders umzusetzen...


    Der Button soll eigentlich nur das Ergebnis überprüfen, und eine andere Funktion muss die neue Rechnung aufrufen.. Ich denke ständig, das Aufrufen der neuen Rechnung ist Aufgabe des Buttons,
    was aber wahrscheinlich falsch ist..
    vllt kannst du mir mit ein paar Zeilen und einer richtigen Struktur auf die Sprünge helfen
    Bei dem Teil hakt es wirklich mit meiner Implementierung^^


    Das ist aber eine extrem unperformante und umständliche Methode das zu realisieren. V.a. da du ja immer nur den ersten Eintrag des Arrays benutzt. Vergleiche doch Math.random() direkt mit deinen Schwellwerten...
    Das mit Math.random() habe ich jetzt auch verstanden
    Geändert von Sasch (19-03-2016 um 00:26 Uhr)

  6. #6
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Button zeigt falsches Ergebnis an

    Du musst kapseln. Ich hab' mal ein kleines Beispiel gemacht:
    Code:
    <!DOCTYPE html>
    
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Fenstertitel</title>
    </head>
    <body>
    Frage: <span id="frage"></span><br>
    <span id="buttons"><button id="richtig">richtig</button><button id="falsch">falsch</button></span>
    <script type="text/javascript">
    (function(){
    	function generateNumber(stage, difficulty){
    		return Math.floor(Math.random() * (stage.max[difficulty] - stage.min[difficulty])) + stage.min[difficulty];
    	}
    	function generateQuestion(equation){
    		var rnd = Math.random();
    		if (rnd < 0.8){
    			return {
    				text: equation.text + " = " + equation.solution,
    				correct: true
    			}
    		}
    		else if (rnd < 0.9){
    			return {
    				text: equation.text + " = " + (equation.solution + equation.noise),
    				correct: false
    			}
    		}
    		else {
    			return {
    				text: equation.text + " = " + (equation.solution - equation.noise),
    				correct: false
    			}
    			
    		}
    	}
    	var stages = [
    		{
    			numberOfLevels: 10,
    			min: [1, 1, 21],
    			max: [11, 22, 42],
    			generateEquation: function(difficulty){
    				var number1 = generateNumber(this, difficulty);
    				var number2 = generateNumber(this, difficulty);
    				var solution = number1 + number2;
    				return {
    					text: number1 + " + " + number2,
    					noise: generateNumber(this, difficulty),
    					solution: solution
    				}
    			}
    		},
    		{
    			numberOfLevels: 20,
    			min: [2, 12, 22],
    			max: [12, 24, 44],
    			generateEquation: function(difficulty){
    				var number1 = generateNumber(this, difficulty);
    				var number2 = generateNumber(this, difficulty);
    				var solution = number1 - number2;
    				return {
    					text: number1 + " - " + number2,
    					noise: generateNumber(this, difficulty),
    					solution: solution
    				}
    			}
    		},
    		{
    			numberOfLevels: 30,
    			min: [3, 13, 23],
    			max: [13, 26, 46],
    			generateEquation: function(difficulty){}
    		},
    		{
    			numberOfLevels: 40,
    			min: [4, 14, 24],
    			max: [14, 28, 48],
    			generateEquation: function(difficulty){}
    		},
    		{
    			numberOfLevels: 50,
    			min: [5, 15, 25],
    			max: [15, 30, 50],
    			generateEquation: function(difficulty){}
    		}
    	];
    	var gameSetting = {
    		difficulty: 0,
    		stage: 0,
    		level: 0
    	};
    	
    	var currentQuestion = generateQuestion(stages[gameSetting.stage].generateEquation(gameSetting.difficulty));
    	document.getElementById("frage").innerHTML = currentQuestion.text;
    	document.getElementById("buttons").addEventListener("click", function listener(ev){
    		if (ev.target.id === "richtig"){
    			if (currentQuestion.correct){
    				alert("Ja, die Antwort ist richtig.")
    			}
    			else {
    				alert("Nein, die Antwort ist falsch.");
    			}
    		}
    		if (ev.target.id === "falsch"){
    			if (currentQuestion.correct){
    				alert("Doch, die Antwort ist richtig.")
    			}
    			else {
    				alert("Ja, die Antwort ist falsch.");
    			}
    		}
    	}, false);
    	
    }());
    </script>
    </body>
    </html>

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 14-12-2009, 18:48
  2. Date hat falsches format
    Von SteiniKeule im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 01-02-2009, 18:52
  3. [javascript] FF öffnet falsches Element
    Von rene.klatt im Forum Script-Check
    Antworten: 2
    Letzter Beitrag: 06-10-2007, 13:01
  4. case liefert falsches Ergebnis
    Von slosd im Forum Serverseitige Programmierung
    Antworten: 15
    Letzter Beitrag: 21-05-2006, 14:49
  5. startet falsches Bild
    Von jensef im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 28-08-2005, 11:51

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •