Avatar billede riishoj Nybegynder
07. januar 2002 - 21:14 Der er 21 kommentarer og
1 løsning

Videreudvikling af taltræneren

Ved eksperternes og især jacobas hjælp har jeg fået strikket nedenstående sammen, som jeg nu gerne vil videreudvikle.
Jeg kunne tænke mig at lave progression i programmet, således at man skal kunne tallene fra 1-10 for at komme videre til 1-20 osv. Jeg kan godt lave de 10 opgavefiler ved at ændre AntalTal, men jeg vil gerne have lavet en knap, som fører videre til næste side (opgave), men kun hvis den foregående opgave er løst rigtigt (10 rigtige). Det er her progressionen ligger.
Det er sikkert lige en opgave for jacoba?

<html>
<head>
<title>Den lille taltaltræner</title>
<script>
antalTal =99; //Antallet af tal-lyde
antalRigt = 5; //Så mange korrekte gæt, man skal have, før man vinder!

alert(\"HEJ!\\n\\nOm et øjeblik vil du høre et tal fra 1 til \" + antalTal + \"!\\nDu skal høre godt efter og skrive tallet ved at trykke på knapperne!\\n\\nEr du klar?\");

tilf = 0;
rigt = 0;

function tf() {
    temp = Math.floor(Math.random() * antalTal) + 1;
    if (temp == tilf) return tf();
    return temp;
}

function afspilLyd( nr ) { // KUN denne funktion er blevet ændret.
    tilf = nr;
    parent.lydFrame.document.open(\'text/html\',\'replace\');
    parent.lydFrame.document.write( \"<embed src=\'\" +tilf +\".wav\' loop=0 \"
                                  +\"autostart=\'true\'></embed>\" );
    parent.lydFrame.document.close();
}

function tjekTal(felt) {
    if (felt.value == \"\" || !felt.value.match(/^[0-9]+$/)) {
        alert(\"Du skal skrive et tal fra 1-\" + antalTal + \"!\");
        felt.value = \"\";
        felt.focus();
    }
    else if (felt.value == tilf) {
        if (++rigt >= antalRigt) {
            alert(\"Tillykke!\\nDu har fået \" + rigt + \" rigtige!\\nFlot klaret!\");
            felt.form.rigtige.value = rigt;
            felt.maxlength = 3;
            felt.value = \":-)\";
            felt.form.subm.value=\"Hurraaa!\";
            return;
        }
        alert(\"Rigtigt!\\n\\nNu kommer der et et nyt tal!\");
        felt.value = \"\";
        afspilLyd( tf() );
        felt.focus();
        felt.form.rigtige.value = rigt;
    }
    else {
        alert(\"Desværre!\\nTallet var forkert! Vær klar til at høre tallet igen!\");
        felt.value = \"\";
        felt.focus();
        afspilLyd( tilf );      // her blev afspillet en lyd somom de mange embed\'s var der endnu
    }
}
</script>
<base target=\"_self\">
</head>
<body onLoad=\"afspilLyd( tf() ); document.frm.tal.focus();\" bgcolor=\"#39AE8B\">


<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
  <tr>
    <td width=\"20%\">
      <p align=\"center\"><font size=\"6\" color=\"#009999\">&nbsp;</font><font size=\"6\" color=\"#00FFCC\">72</font></p>
    </td>
    <td width=\"33%\">
      <p align=\"center\"><b><font size=\"6\" color=\"#660066\" face=\"Arial\">Den lille taltræner</font></b></td>
    <td width=\"20%\">
      <p align=\"center\"><font size=\"6\" color=\"#99CC00\">96</font></p>
    </td>
  </tr>
</table>
<p align=\"center\"><b><font color=\"#804000\" size=\"4\" face=\"Arial\">Når du<font size=\"6\" color=\"#FFFFFF\" face=\"Arial\">
</font><font color=\"#804000\">hører et tal, skal du trykke tallet og derefter
trykke på den nederste knap.</font></font></b>
<form name=\"frm\" action=\"#\" onSubmit=\"tjekTal(this.tal); return false;\">
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" height=\"1\">
  <tr>
    <td width=\"100%\" colspan=\"5\" height=\"21\"></td>
  </tr>
  <tr>
    <td width=\"17%\" valign=\"top\" align=\"right\" height=\"1\">
      <font size=\"7\" color=\"#CCCC00\">24</font>
    </td>
    <td width=\"17%\" valign=\"top\" align=\"right\" height=\"1\">
      <font size=\"7\" color=\"#006600\">96</font>
    </td>
    <td width=\"33%\" rowspan=\"3\" height=\"1\">
      <div align=\"center\">
        <center>
        <table BORDER=\"4\" cellpadding=\"5\">
          <tr>
            <td align=\"center\">
              <p align=\"left\"><font face=\"Arial\" color=\"#FFFFFF\">Tal:</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
              <input type=\"text\" name=\"tal\" size=\"2\" maxlength=\"2\"><br>
              <br>
              <font face=\"Arial\" color=\"#FFFFFF\">
              Rigtige:</font><input type=\"text\" name=\"rigtige\" size=\"2\" readonly></p>
            </td>
          </tr>
        </center>
        <tr>
          <td>
            <p align=\"left\"><input TYPE=\"button\" NAME=\"seven\" VALUE=\"  7  \" OnClick=\"frm.tal.value += \'7\'\">
            <input TYPE=\"button\" NAME=\"eight\" VALUE=\"  8  \" OnCLick=\"frm.tal.value += \'8\'\">
            <input TYPE=\"button\" NAME=\"nine\" VALUE=\"  9  \" OnClick=\"frm.tal.value += \'9\'\"><br>
            <input TYPE=\"button\" NAME=\"four\" VALUE=\"  4  \" OnClick=\"frm.tal.value += \'4\'\">
            <input TYPE=\"button\" NAME=\"five\" VALUE=\"  5  \" OnCLick=\"frm.tal.value += \'5\'\">
            <input TYPE=\"button\" NAME=\"six\" VALUE=\"  6  \" OnClick=\"frm.tal.value += \'6\'\"><br>
            <input TYPE=\"button\" NAME=\"one\" VALUE=\"  1  \" OnClick=\"frm.tal.value += \'1\'\">
            <input TYPE=\"button\" NAME=\"two\" VALUE=\"  2  \" OnCLick=\"frm.tal.value += \'2\'\">
            <input TYPE=\"button\" NAME=\"three\" VALUE=\"  3  \" OnClick=\"frm.tal.value += \'3\'\"><br>
            <input TYPE=\"button\" NAME=\"zero\" VALUE=\"      0    \" OnClick=\"frm.tal.value += \'0\'\">
            <input TYPE=\"button\" NAME=\"clear\" VALUE=\"  c  \" OnClick=\"frm.tal.value = \'\'\">
            <br>
            <input type=\"submit\" name=\"subm\" value=\"  Tjek tal!  \"></p>
          </td>
        </tr>
        </table>
      </div>
      <p>&nbsp;
    </td>
    <td width=\"17%\" valign=\"top\" height=\"1\">
      <font size=\"7\" color=\"#CC0066\">39</font>
    </td>
    <td width=\"16%\" valign=\"top\" height=\"1\">
      <font size=\"7\" color=\"#808080\">88</font>
    </td>
  </tr>
  <tr>
    <td width=\"17%\" valign=\"middle\" align=\"right\" height=\"0\">
      <p align=\"left\"><font size=\"6\" color=\"#FFFF00\">72</font>
    </td>
    <td width=\"17%\" valign=\"middle\" align=\"right\" height=\"0\">
      <p align=\"left\"><font size=\"7\" color=\"#008000\" face=\"Monotype Corsiva\">41</font>
    </td>
    <td width=\"17%\" valign=\"middle\" height=\"0\">
      <p align=\"right\"><font size=\"7\" color=\"#00FF00\" face=\"Comic Sans MS\">48</font>
    </td>
    <td width=\"16%\" valign=\"middle\" height=\"0\">
      <p align=\"right\"><font size=\"6\" color=\"#FF0000\">56</font>
    </td>
  </tr>
  <tr>
    <td width=\"17%\" valign=\"top\" align=\"right\" height=\"10\">
      <font size=\"7\" color=\"#00CCFF\">62</font>
    </td>
    <td width=\"17%\" valign=\"top\" align=\"right\" height=\"10\">
      <font size=\"7\" color=\"#FFFF00\">30</font>
    </td>
    <td width=\"17%\" valign=\"top\" height=\"10\">
      <font size=\"7\" color=\"#00CC00\">75</font>
    </td>
    <td width=\"16%\" valign=\"top\" height=\"10\">
      <font size=\"7\" color=\"#FF9966\">43</font>
    </td>
  </tr>
</table>
</form>

</body>
</html>

mvh. riishøj
PS. Er 30 point for fedtet. Hvis ja, så giv et bud
Avatar billede jakoba Nybegynder
08. januar 2002 - 09:42 #1
som her:

<script type=\'text/javascript\'>
                                                      // ÆNDRINGER HERFRA
antalTal = 9; //antal tal-lyde i første runde
maxAntalTal =99; //Antallet af tal-lyde
antalRigt = 5; //Så mange korrekte gæt, man skal have, før man vinder runden!
              // Efter hver vundet runde øges antalTal med 10
                                                      // OG HERTil

alert(\"HEJ!\\n\\nOm et øjeblik vil du høre et tal fra 1 til \" + antalTal + \"!\\nDu skal høre godt efter og skrive tallet ved at trykke på knapperne!\\n\\nEr du klar?\");

tilf = 0;
rigt = 0;

function tf() {
    temp = Math.floor(Math.random() * antalTal) + 1;
    if (temp == tilf) return tf();
    return temp;
}

function afspilLyd( nr ) { // KUN denne funktion er blevet ændret.
    tilf = nr;
    parent.lydFrame.document.open(\'text/html\',\'replace\');
    parent.lydFrame.document.write( \"<embed src=\'\" +tilf +\".wav\' loop=0 \"
                                  +\"autostart=\'true\'></embed>\" );
    parent.lydFrame.document.close();
}

function tjekTal(felt) {
    if (felt.value == \"\" || !felt.value.match(/^[0-9]+$/)) {
        alert(\"Du skal skrive et tal fra 1-\" + antalTal + \"!\");
        felt.value = \"\";
        felt.focus();
    }
    else if (felt.value == tilf) {                // ÆNDRINGER HERFRA
        if (++rigt >= antalRigt) {
            if ( antalTal < maxAntalTal ) {
                alert(\"Tillykke!\\nDu har fået \" + rigt + \" rigtige!\\nFlot klaret!\\n\\nSå nu bliver det sværere.\");
                antalTal += 10;
                rigt = 0;
            } else {
                alert(\"Tillykke!\\nDu har bestået alle 10 runder!\\nSuper Flot klaret!\");
                felt.form.rigtige.value = \'50\';
                felt.maxlength = 3;
                felt.value = \":-)\";
                felt.form.subm.value=\"Hurraaa!\";
                return;
        } else {
            alert(\"Rigtigt!\\n\\nNu kommer der et et nyt tal!\");
        }
                                                  // OG HERTIL
        felt.value = \"\";
        afspilLyd( tf() );
        felt.focus();
        felt.form.rigtige.value = rigt;
    }
    else {
        alert(\"Desværre!\\nTallet var forkert! Vær klar til at høre tallet igen!\");
        felt.value = \"\";
        felt.focus();
        afspilLyd( tilf );      // her blev afspillet en lyd somom de mange embed\'s var der endnu
    }
}
</script>

30 er fint.

mvh JakobA
Avatar billede riishoj Nybegynder
08. januar 2002 - 15:44 #2
Jeg kan ikke få det til at virke. Har lagt hele balladen ud på http://www.assens-guiden.dk/taltraener2/frame.html, også de 100 lydfiler. Kigger du på det?

mvh. riishøj
Avatar billede riishoj Nybegynder
08. januar 2002 - 16:46 #3
Der var lige smuttet et komma med efter .html.
Det er selvfølgelig http://www.assens-guiden.dk/taltraener2/frame.html , men det havde du jo nok fundet ud af.
mvh. riishøj
Avatar billede jakoba Nybegynder
08. januar 2002 - 17:18 #4
min fejl. der manglede en sluttuborg }

jeg har tilføjet:
            }                  // < - - - - - - - - - - - - I DENNE LIBIE
tuborgen er alt hvad du behøver. resten af linien er kommentar.

function tjekTal(felt) {
    if (felt.value == \"\" || !felt.value.match(/^[0-9]+$/)) {
        alert(\"Du skal skrive et tal fra 1-\" + antalTal + \"!\");
        felt.value = \"\";
        felt.focus();
    }
    else if (felt.value == tilf) {                // ÆNDRINGER HERFRA
        if (++rigt >= antalRigt) {
            if ( antalTal < maxAntalTal ) {
                alert(\"Tillykke!\\nDu har fået \" + rigt + \" rigtige!\\nFlot klaret!\\n\\nSå nu bliver det sværere.\");
                antalTal += 10;
                rigt = 0;
            } else {
                alert(\"Tillykke!\\nDu har bestået alle 10 runder!\\nSuper Flot klaret!\");
                felt.form.rigtige.value = \'50\';
                felt.maxlength = 3;
                felt.value = \":-)\";
                felt.form.subm.value=\"Hurraaa!\";
                return;
            }                  // < - - - - - - - - - - - - I DENNE LIBIE
        } else {
            alert(\"Rigtigt!\\n\\nNu kommer der et et nyt tal!\");
        }
                                                  // OG HERTIL
        felt.value = \"\";
        afspilLyd( tf() );
        felt.focus();
        felt.form.rigtige.value = rigt;
    }
    else {
        alert(\"Desværre!\\nTallet var forkert! Vær klar til at høre tallet igen!\");
        felt.value = \"\";
        felt.focus();
        afspilLyd( tilf );      // her blev afspillet en lyd somom de mange embed\'s var der endnu
    }
}
Avatar billede riishoj Nybegynder
08. januar 2002 - 19:43 #5
Ja, nu virker det fint, men jeg kunne godt tænke mig at første opgave skal laves med 10 rigtige for at gå videre (klares ved at sætte AntalRigt=10) og næste opgave skal laves med 20 rigtige for at gå videre osv. Kan det mon lade sig gøre?
mvh. riishøj
Avatar billede jakoba Nybegynder
08. januar 2002 - 20:06 #6
10+20+30+40+... = 550  Har de tålmodighed til det?

    else if (felt.value == tilf) {                // ÆNDRINGER HERFRA
        if (++rigt >= antalTal) {
            if ( antalTal < maxAntalTal ) {

jeg har blot udskiftet antalRigt med antalTal i midterste linie.

mvh JakobA
Avatar billede riishoj Nybegynder
09. januar 2002 - 11:59 #7
Ork ja, fynske børn er tålmodige, men det ideelle ville selvfølgelig være, at man kan stoppe et sted og forsætte senere fra det sted man slap, men det bliver nok for kompliceret. Man kunne også indlægge en konkurrencefaktor i programmet. Det må kunne lade sig gøre at indbygge et stopur, som viser den tid man har brugt på at løse opgaverne. Jeg synes, at det er spændende at prøve at udvikle en ide, men det er jo ikke sikkert at du har tid og lyst til at arbejde videre. Jeg sætter gerne flere point på spil. Du skal nok få dine 30 point, når jeg har testet dit senestse forslag.
mvh. riishøj
Avatar billede jakoba Nybegynder
09. januar 2002 - 12:41 #8
et script i dokumentets <head sektion:

<script type=\'text/javascript\'> <!-- // et lille stopurs script
// nede i dokumentet skal der være en <form mad navnet \'xxxform\' og et felt med navnet \'vis\'

var stopUrIgang = false;
var stopUrHandle;
var stopUrTeller;

function stopUrStart() {  // start stopur så det tæller op fra nul
    clearInterval( stopUrHandle );
    stopUrTeller = 0;
    setInterval( \"stopUrSekund()\", 1000 );
}; //end stopUrStart()

function stopUrStop() {  // stands stopuret
    clearInterval( stopUrHandle );
}; //end stopUrStop()

function stopUrAflaes() {  // returnerer minutter og sekunder en streng i formaltet mm:ss
    var min = Math.floor( stopUrTeller / 60 );
    var sec = stopUrTeller % 60;  // % er modolo operator. rest efter division
    if ( min < 10 ) min = \"0\" +min;
    if ( sec < 10 ) sec = \"0\" +sec;
    return \"\" +min +\":\" +sec;
}; //end stopUrAflaes() -> string

function stopUrSekund() {  // intern funktion der tælle op en gang hvert sekundt
    stopUrTeller += 1;
    document.xxxform.vis.value = stopUrAflaes();
}; //end stopUrSekund()

// --> </script>


i <body sektionen laver du formen et sted (NB ikke indeni en anden form)

<form name=\'xxxform\' onsubmit=\"return false\">
<input name=\'vis\' type=\'text\' size=6 readonly onfocus=\'this.blur()\'>
</form>

du kan så sætte stopuret igang med en linie:
    stopUrStart();
og stoppe det igen med:
    stopUrStop();

mvh JakobA
Avatar billede riishoj Nybegynder
09. januar 2002 - 17:48 #9
Ændringen med antal tal virker fint, så du har så rigeligt fortjent dine 30 point. Jeg har ikke fået testet stopursfunktionen endnu, men den vil jeg da også gerne give 30 point for.
Er det muligt af lave en randomfunktion, som afspiller alle tallene i tilfældig rækkefølge uden at nogle af tallene bliver gentaget? Jeg ved godt, at det så ikke er specielt \"random\" men det ville passe bedre til mit program.
mvh. riishøj
Avatar billede jakoba Nybegynder
10. januar 2002 - 03:24 #10
indenfor hvert interval er det nemt at lave. især nu hvor samtlige tal i intervallet skal bruges.

function lavListe( fra, til, lengde ) { // opretter et array med tallene 1..lengde
                              // i tilfældig orden.
    var resArr = new Array();
    var i,j,tmp;
    for ( i=fra; i<=til; i++ ) resArr[i-mini] = i;
    for ( i=resArr.length; i>1; ) {
        tmp = resArr[ j = Math.floor( Math.random()*i-- ) ];
        resArr[j] = resArr[i];
        resArr[i] = tmp;
    }
    if ( lengde < resArr.length ) resArr.length = lengde;
    return resArr;
}; //end lavListe( number ) -> Array of numbers

efter linien
  rigt = 0
indsætte du så en ny linie:
var facitListe = lavListe( 1, antalTal, altalTal );

og efter linien
                antalTal += 10;
tilføjer du også en ny linie:
                facitListe = lavListe( 1, antalTal, altalTal );

og tilsidst skrives funktionen tf helt om:
function tf() {
    return facitListe[ rigt ];
}

mvh JakobA
Avatar billede riishoj Nybegynder
10. januar 2002 - 13:09 #11
Hvor skal jeg indsætte

function lavListe( fra, til, lengde ) { // opretter et array med tallene 1..lengde
                              // i tilfældig orden.
    var resArr = new Array();
    var i,j,tmp;
    for ( i=fra; i<=til; i++ ) resArr[i-mini] = i;
    for ( i=resArr.length; i>1; ) {
        tmp = resArr[ j = Math.floor( Math.random()*i-- ) ];
        resArr[j] = resArr[i];
        resArr[i] = tmp;
    }
    if ( lengde < resArr.length ) resArr.length = lengde;
    return resArr;
}; //end lavListe( number ) -> Array of numbers

mvh. riishøj
Avatar billede riishoj Nybegynder
10. januar 2002 - 13:20 #12
Jeg er ved at lege lidt med stopuret, men jeg ved ikke hvordan det startes og stoppes. Har pasted scriptet ind som du beskrev.
mvh. riishøj
Avatar billede riishoj Nybegynder
10. januar 2002 - 14:25 #13
Hvis jeg indsætter

<input type=\"button\" value=\"Start\" onclick=\"stopUrStart()\";>
<input type=\"button\" value=\"Stop\" onclick=\"stopUrStop()\";>

kan jeg starte uret, men jeg kan ikke stoppe det!
Avatar billede jakoba Nybegynder
10. januar 2002 - 18:19 #14
Jep, der er også en fejl i scriptet. stopUrStart skal være:

function stopUrStart() {  // start stopur så det tæller op fra nul
    clearInterval( stopUrHandle );
    stopUrTeller = 0;
    stopUrHandle = setInterval( \"stopUrSekund()\", 1000 );
}; //end stopUrStart()

så man kan bruge stopUrHandle til at stoppe den igen.

----------------

lavListe funktionen skal stå i forenden af scriptet. Før første gang den bliver brugt.
Avatar billede riishoj Nybegynder
10. januar 2002 - 20:45 #15
Ja nu virker det, men det er altså \'stopUrStop\' som stopper uret.

--------------

Hvad mener du med forenden af scriptet?
Avatar billede jakoba Nybegynder
10. januar 2002 - 21:16 #16
fx her:

antalTal = 9; //antal tal-lyde i første runde
maxAntalTal =99; //Antallet af tal-lyde
              // Efter hver vundet runde øges antalTal med 10

alert(\"HEJ!\\n\\nOm et øjeblik vil du høre et tal fra 1 til \" + antalTal + \"!\\nDu skal høre godt efter og skrive tallet ved at trykke på knapperne!\\n\\nEr du klar?\");

function lavListe( fra, til, lengde ) { // opretter et array med tallene 1..lengde
                              // i tilfældig orden.
    var resArr = new Array();
    var i,j,tmp;
    for ( i=fra; i<=til; i++ ) resArr[i-mini] = i;
    for ( i=resArr.length; i>1; ) {
        tmp = resArr[ j = Math.floor( Math.random()*i-- ) ];
        resArr[j] = resArr[i];
        resArr[i] = tmp;
    }
    if ( lengde < resArr.length ) resArr.length = lengde;
    return resArr;
}; //end lavListe( number ) -> Array of numbers

tilf = 0;
rigt = 0;
var facitListe = lavListe( 1, antalTal, altalTal );

...

mvh JakobA
Avatar billede riishoj Nybegynder
10. januar 2002 - 22:07 #17
Jeg kan ikke få de sidste ændringer til at fungere, og jeg har vist også mistet overblikket, så jeg har valgt at smide de hele op på

http://www.assens-guiden.dk/taltraener2/frame.html

Gider du kigge på det?
Sætter gerne point op til 100
(hvis du synes, at jeg er lidt fedtet, så er det fordi jeg ikke har så mange point tilbage)
mvh. riishøj
Avatar billede jakoba Nybegynder
10. januar 2002 - 22:51 #18
Jeg havde fejlstavet  antalTal  i de linier med  lavListe

Dine start og stopknapper var korrekt lavet, men jeg har fjernet dem alligevel og har istedet kommet start og stop ind i koden så stopuret starter og stopper automatisk. (så kan man ikke snyde og vente til sidste runde med at starte uret. (eller har det en psykologisk \"jeg har kontrol!\" værdi at ku snyde? så sæt knapperne ind igen og fjern mine start/stop kald.) ).

Lad være at sætte points op. Det er ikke, og bør ikke være, points der driver værket. Det er der en større kampagne om igang herinde (erikjacobsen fx nægter simpelthen at svare på spm med over 60 pts). Og jeg ønsker også at få bremset den inflation i points der er.

mvh JakobA

<html>
<head>
<title>Den lille taltaltræner</title>

<script type=\'text/javascript\'> <!-- // et lille stopurs script
// nede i dokumentet skal der være en <form mad navnet \'xxxform\' og et felt med navnet \'vis\'

var stopUrIgang = false;
var stopUrHandle;
var stopUrTeller;

function stopUrStart() {  // start stopur så det tæller op fra nul
    clearInterval( stopUrHandle );
    stopUrTeller = 0;
    stopUrHandle = setInterval( \"stopUrSekund()\", 1000 );
}; //end stopUrStart()

function stopUrStop() {  // stands stopuret
    clearInterval( stopUrHandle );
}; //end stopUrStop()

function stopUrAflaes() {  // returnerer minutter og sekunder en streng i formaltet mm:ss
    var min = Math.floor( stopUrTeller / 60 );
    var sec = stopUrTeller % 60;  // % er modolo operator. rest efter division
    if ( min < 10 ) min = \"0\" +min;
    if ( sec < 10 ) sec = \"0\" +sec;
    return \"\" +min +\":\" +sec;
}; //end stopUrAflaes() -> string

function stopUrSekund() {  // intern funktion der tælle op en gang hvert sekundt
    stopUrTeller += 1;
    document.xxxform.vis.value = stopUrAflaes();
}; //end stopUrSekund()

// --> </script>

<script type=\'text/javascript\'>
                                                      // ÆNDRINGER HERFRA
antalTal = 9; //antal tal-lyde i første runde
maxAntalTal =99; //Antallet af tal-lyde
antalRigt = 10; //Så mange korrekte gæt, man skal have, før man vinder runden!
              // Efter hver vundet runde øges antalTal med 10
                                                      // OG HERTil

alert(\"HEJ!\\n\\nOm et øjeblik vil du høre et tal fra 1 til \" + antalTal + \"!\\nDu skal høre godt efter og skrive tallet ved at trykke på knapperne!\\n\\nEr du klar?\");

stopUrStart();  // stopuret starter når brugeren trykker ok til \"Er du klar?\"

function lavListe( fra, til, lengde ) { // opretter et array med tallene 1..lengde
                              // i tilfældig orden.
    var resArr = new Array();
    var i,j,tmp;
    for ( i=fra; i<=til; i++ ) resArr[i-fra] = i;
    for ( i=resArr.length; i>1; ) {
        tmp = resArr[ j = Math.floor( Math.random()*i-- ) ];
        resArr[j] = resArr[i];
        resArr[i] = tmp;
    }
    if ( lengde < resArr.length ) resArr.length = lengde;
    return resArr;
}; //end lavListe( number ) -> Array of numbers

tilf = 0;
rigt = 0;
var facitListe = lavListe( 1, antalTal, antalTal );


function tf() {
    return facitListe[ rigt ];
}


function afspilLyd( nr ) { // KUN denne funktion er blevet ændret.
    tilf = nr;
    parent.lydFrame.document.open(\'text/html\',\'replace\');
    parent.lydFrame.document.write( \"<embed src=\'http://www.assens-guiden.dk/taltraener2/\" +tilf +\".wav\' \"
                                  +\"></embed>\" );
    parent.lydFrame.document.close();
}

function tjekTal(felt) {
    if (felt.value == \"\" || !felt.value.match(/^[0-9]+$/)) {
        alert(\"Du skal skrive et tal fra 1-\" + antalTal + \"!\");
        felt.value = \"\";
        felt.focus();
    }
    else if (felt.value == tilf) {                // ÆNDRINGER HERFRA
        if (++rigt >= antalTal) {
            if ( antalTal < maxAntalTal ) {
                alert(\"Tillykke!\\nDu har fået \" + rigt + \" rigtige!\\nFlot klaret!\\n\\nSå nu bliver det sværere.\");
                antalTal += 10;
                facitListe = lavListe( 1, antalTal, antalTal );
                rigt = 0;
            } else {
                alert(\"Tillykke!\\nDu har bestået alle 10 runder!\\nSuper Flot klaret!\");
                felt.form.rigtige.value = \'50\';
                felt.maxlength = 3;
                felt.value = \":-)\";
                felt.form.subm.value=\"Hurraaa!\";
                stopUrStop(); // stopuret stopper når alle runder er klaret
                return;
                }
        } else {
            alert(\"Rigtigt!\\n\\nNu kommer der et et nyt tal!\");
        }
                                                  // OG HERTIL
        felt.value = \"\";
        afspilLyd( tf() );
        felt.focus();
        felt.form.rigtige.value = rigt;
    }
    else {
        alert(\"Desværre!\\nTallet var forkert! Vær klar til at høre tallet igen!\");
        felt.value = \"\";
        felt.focus();
        afspilLyd( tilf );      // her blev afspillet en lyd somom de mange embed\'s var der endnu
    }
}
</script>

<base target=\"_self\">
</head>
<body onLoad=\"afspilLyd( tf() ); document.frm.tal.focus();\" bgcolor=\"#39AE8B\" topmargin=\"1\">


<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" height=\"1\">
  <tr>
    <td width=\"20%\" valign=\"top\" height=\"1\">
      <p align=\"center\"><font size=\"6\" color=\"#009999\">&nbsp;</font><font size=\"6\" color=\"#00FFCC\">72</font></p>
    </td>
    <td width=\"33%\" valign=\"top\" height=\"1\">
      <p align=\"center\"><b><font size=\"6\" color=\"#660066\" face=\"Arial\">Den lille taltræner</font></b></td>
    <td width=\"20%\" valign=\"top\" height=\"1\">
      <p align=\"center\"><font size=\"6\" color=\"#99CC00\">9
      </font></p>
    </td>
  </tr>
</table>
<form name=\"frm\" action=\"#\" onSubmit=\"tjekTal(this.tal); return false;\">
<p align=\"center\"><font color=\"#804000\" size=\"3\" face=\"Arial\"><b>Når du<font size=\"6\" color=\"#FFFFFF\" face=\"Arial\">
</font><font color=\"#804000\">hører et tal, skal du trykke tallet og derefter
trykke på den nederste knap.</font></b></font></p>
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" height=\"1\">
  <tr>
    <td width=\"17%\" valign=\"top\" align=\"right\" height=\"1\">
      <font size=\"7\" color=\"#CCCC00\">24</font>
    </td>
    <td width=\"17%\" valign=\"top\" align=\"right\" height=\"1\">
      <font size=\"7\" color=\"#006600\">96</font>
    </td>
    <td width=\"33%\" rowspan=\"2\" height=\"1\">
      <div align=\"center\">
        <center>
        <table BORDER=\"4\" cellpadding=\"5\">
          <tr>
            <td align=\"center\">
              <p align=\"left\"><font face=\"Arial\" color=\"#FFFFFF\">Tal:</font> &nbsp; &nbsp; &nbsp;
              <input type=\"text\" name=\"tal\" size=\"2\" maxlength=\"2\"><br>
              <br>
              <font face=\"Arial\" color=\"#FFFFFF\">
              Rigtige:</font><input type=\"text\" name=\"rigtige\" size=\"2\" readonly></p>
            </td>
          </tr>
        </center>
        <tr>
          <td>
            <p align=\"left\"><input TYPE=\"button\" NAME=\"seven\" VALUE=\"  7  \" OnClick=\"frm.tal.value += \'7\'\">
            <input TYPE=\"button\" NAME=\"eight\" VALUE=\"  8  \" OnCLick=\"frm.tal.value += \'8\'\">
            <input TYPE=\"button\" NAME=\"nine\" VALUE=\"  9  \" OnClick=\"frm.tal.value += \'9\'\"><br>
            <input TYPE=\"button\" NAME=\"four\" VALUE=\"  4  \" OnClick=\"frm.tal.value += \'4\'\">
            <input TYPE=\"button\" NAME=\"five\" VALUE=\"  5  \" OnCLick=\"frm.tal.value += \'5\'\">
            <input TYPE=\"button\" NAME=\"six\" VALUE=\"  6  \" OnClick=\"frm.tal.value += \'6\'\"><br>
            <input TYPE=\"button\" NAME=\"one\" VALUE=\"  1  \" OnClick=\"frm.tal.value += \'1\'\">
            <input TYPE=\"button\" NAME=\"two\" VALUE=\"  2  \" OnCLick=\"frm.tal.value += \'2\'\">
            <input TYPE=\"button\" NAME=\"three\" VALUE=\"  3  \" OnClick=\"frm.tal.value += \'3\'\"><br>
            <input TYPE=\"button\" NAME=\"zero\" VALUE=\"      0    \" OnClick=\"frm.tal.value += \'0\'\">
            <input TYPE=\"button\" NAME=\"clear\" VALUE=\"  c  \" OnClick=\"frm.tal.value = \'\'\">
            <br>
            <input type=\"submit\" name=\"subm\" value=\"  Tjek tal!  \"></p>
          </td>
        </tr>
        </table>
      </div>
    </td>
    <td width=\"17%\" valign=\"top\" height=\"1\">
      <font size=\"7\" color=\"#CC0066\">39</font>
    </td>
    <td width=\"16%\" valign=\"top\" height=\"1\">
      <font size=\"7\" color=\"#808080\">88</font>
    </td>
  </tr>
  <tr>
    <td width=\"17%\" valign=\"middle\" align=\"right\" height=\"0\">
      <p align=\"left\"><font size=\"6\" color=\"#FFFF00\">72</font>
    </td>
    <td width=\"17%\" valign=\"middle\" align=\"right\" height=\"0\">
      <p align=\"left\"><font size=\"7\" color=\"#008000\" face=\"Monotype Corsiva\">41</font>
    </td>
    <td width=\"17%\" valign=\"middle\" height=\"0\">
      <p align=\"right\"><font size=\"7\" color=\"#00FF00\" face=\"Comic Sans MS\">48</font>
    </td>
    <td width=\"16%\" valign=\"middle\" height=\"0\">
      <p align=\"right\"><font size=\"6\" color=\"#FF0000\">56</font>
    </td>
  </tr>
</table>
</form>
<form name=\'xxxform\' onsubmit=\"return false\">
<p align=\"center\">
<input name=\'vis\' type=\'text\' size=6 readonly onfocus=\'this.blur()\'>
</form>
<p align=\"center\">
&nbsp;

</body>
</html>
Avatar billede riishoj Nybegynder
10. januar 2002 - 23:12 #19
Rigtig fint at uret starter og stopper automatisk. Det var faktisk sådan jeg havde tænkt mig fra starten.
Desværre er lyden forsvundet. Jeg har lagt din seneste ændring ud på

http://www.assens-guiden.dk/taltraener2/frame.html

så du også kan teste lyden.

mvh. riishøj
Avatar billede riishoj Nybegynder
10. januar 2002 - 23:29 #20
Undskyld. Jeg fik ikke smidt ændringerne på serveren. De er der om 5 min.
Avatar billede jakoba Nybegynder
11. januar 2002 - 00:11 #21
det er linien:
    parent.lydFrame.document.write( \"<embed src=\'http://www.assens-guiden.dk/taltraener2/\" +tilf +\".wav\' \"
                                  +\"></embed>\" );

der skal ændres tilbage til:
    parent.lydFrame.document.write( \"<embed src=\'\" +tilf +\".wav\' \"
                                  +\"></embed>\" );

Avatar billede riishoj Nybegynder
11. januar 2002 - 15:02 #22
Nu fungerer det bare perfekt!

Meeeeen kan det lade sig gøre, at 1. runde afspiller tallene fra 1-9, 2. runde 10-19, 3.runde 20-29 osv.?

mvh. riishøj
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester