Avatar billede soelle Nybegynder
24. september 2004 - 09:57 Der er 39 kommentarer og
1 løsning

Tælle variabler

Jeg har lavet et array med nogle bogstaver i. De bliver så smidt ind i et textfelt i et mc. Nu vil jeg så gerne tælle hvormange gange de forskellige bogstaver bliver brugt. Jeg har forsøgt med nedenstående men det virker ikke:

    if (bogstav == "a") {
    if (ataeller>=1) {
        ataeller += ataeller;
    } else {
        ataeller = 1;
    }
}
trace(ataeller);

Dette virker men der tæller den naturligvis kun til 2

    if (bogstav == "a") {
    if (ataeller=1) {
        ataeller += ataeller;
    } else {
        ataeller = 1;
    }
}
trace(ataeller);
Avatar billede barklund Nybegynder
24. september 2004 - 10:03 #1
atæller+=1 skal det vel være?

Men derudover er det en ret besværlig metode. Lav et array af bogstaver som:

var ord = "hej abba";
var tællere = new Object();
var i, bogstav;
for (i = 0; i < ord.length; i++) {
    bogstav = ord.charAt(i);
    if (tællere[bogstav] == undefined) tællere[bogstav] = 0;
    tællere[bogstav]++;
}

Så vil tællere["a"] eller tællere.a være 2 og så videre.

--
Morten Barklund
Avatar billede soelle Nybegynder
24. september 2004 - 10:16 #2
Jeg skal ikke tælle hvormange bogstaver der er i en streng. Hvert bogstav står i hvert sit mc og derinde skal jeg have talt hvor mange der er brugt når alle mc er fyldt med bogstaverne fra mit array. Det jeg ikke forstår lige nu er hvorfor min
if (ataeller>=1) ikke virker når min  if (ataeller=1) virker
Avatar billede barklund Nybegynder
24. september 2004 - 10:25 #3
if (ataeller=1) {
    ataeller += ataeller;
}

Betyder:

ataeller = 1;
if (ataeller) {
    ataeller = ataeller + ataeller;
}

Eller med andre ord:

ataeller = 2;

Den bliver altså _altid_ 2 uden undtagelse.

Jeg tror nu alligevel du vil kunne bruge min ide udover at sammentællingen foregår korrekt, så laves der ikke en variabel for hvert bogstav, der skal tælles, men blot et nyt element i et objekt.

--
Morten Barklund
Avatar billede soelle Nybegynder
24. september 2004 - 10:38 #4
ok. Det kan godt være jeg spørger lidt dumt, men hvad bruger du så din var ord til?
Avatar billede barklund Nybegynder
24. september 2004 - 10:45 #5
Blot for at have nogle bogstaver at tælle - jeg skulle jo bruge en eller anden kilde til at give mig nogle bogstaver :)
Avatar billede soelle Nybegynder
24. september 2004 - 11:24 #6
Jeg kan ikke få det til at virke.
bogstaveArray bliver defineret i root og ser sådan her ud:
var bogstavArray = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "æ", "ø", "å");

Dette indsættes så i mit bogstavholder_mc:

var tællere = new Object();
var i, bogstav;
for (i = 0; i < bogstavArray.length; i++) {
    bogstav = bogstavArray.charAt(i);
    if (tællere[bogstav] == undefined) tællere[bogstav] = 0;
    tællere[bogstav]++;
}

Men hvordan tracer jeg nu hvormange gange feks. a bliver brugt?
Avatar billede barklund Nybegynder
24. september 2004 - 11:36 #7
charAt kan ikke bruges på et array, der er til at bruge på en streng. Ved at array skal du skrive:

bogstav = bogstavArray[i];

Og bagefter kan du trace:

trace(tælere.a); // 1, der er nemlig ét a

--
Morten Barklund
Avatar billede soelle Nybegynder
24. september 2004 - 11:55 #8
Jeg vil jvf. min første kommentar ikke tælle hvormange bogstaver der er i Array strengen. Jeg vil tælle hvormange gange den har indsat et af bogstaverne fra array'et i de 50 bogstavholdere der bliver fyldt med randombogstaver fra array'et
Avatar billede rohaje Nybegynder
24. september 2004 - 12:08 #9
bare lige  ,, fucker den ikke up, nær der bruges æøå i variable-navne, eller var det kun de gamle versioner af flash?
Avatar billede barklund Nybegynder
24. september 2004 - 12:30 #10
Det har den aldrig gjort. Men du kan stadig bruge samme koncept, blot aner jeg ikke hvordan det skal indsættes i dit script, da jeg ikke har set dit script. Jeg gættede på at du skulle tælle nogle bogstaver og så lavede jeg et eksempel på at tælle bogstaver i en streng. At lave det om til at tælle bogstaverne på en anden måde kan vel ikke være det store problem.

Men hvis du vil have hjælp til at indsætte det i dit script, så er jeg da nødt til at se (hele) dit script.

Jeg kan /trods alt/ ikke gætte mig til det og mine telekinetiske evner fejler lidt i dag. :D

--
Morten Barklund
Avatar billede rohaje Nybegynder
24. september 2004 - 12:48 #11
taellerArray = new Array();
for(n=0;n<bogstavArray.length;n++){
taellerArray[n]=0;
}

// du sætter bogstaverne ind (random eller andet)
bogstav=bogstavArray[etellerandetIndexNr];
taellerArray[etellerandetIndexNr]+=1;
Avatar billede soelle Nybegynder
24. september 2004 - 13:02 #12
Nu ligger filen her:

www.caas.dk/temp/taeller.fla
Avatar billede rohaje Nybegynder
24. september 2004 - 13:31 #13
//placere randomBogstav i Bogstavholdere
//bogtavArray.sort(function () {
//    return random(3)-1;
//});
// hvorfor sorter du når du aligevel køre random
var bogstavArray = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "æ", "ø", "å");
   
taellerArray = new Array();
for(n=0;n<bogstavArray.length;n++){
taellerArray[n]=0;
}

// du sætter bogstaverne ind (random eller andet)
bogstav=bogstavArray[etellerandetIndexNr];
taellerArray[etellerandetIndexNr]+=1;
for (x=1; x<50; x++) {
    randomIndex = random(bogstavArray.length);
    randomBogstav = bogstavArray[randomIndex];
    taellerArray[randomIndex]+=1;
    eval("bogstavholder"+x+"_mc").bogstav =randomBogstav;

    }
bogstavholder_mc.bogstav=randomBogstav;


stop();
Avatar billede rohaje Nybegynder
24. september 2004 - 13:32 #14
var bogstavArray = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "æ", "ø", "å");
taellerArray = new Array();
for (n=0; n<bogstavArray.length; n++) {
    taellerArray[n] = 0;
}
for (x=1; x<50; x++) {
    randomIndex = random(bogstavArray.length);
    randomBogstav = bogstavArray[randomIndex];
    taellerArray[randomIndex] += 1;
    eval("bogstavholder"+x+"_mc").bogstav = randomBogstav;
}
bogstavholder_mc.bogstav = randomBogstav;
stop();
Avatar billede soelle Nybegynder
24. september 2004 - 13:37 #15
Skal jeg bruge den nederste? og hvordan tracer jeg så det talte?
Avatar billede rohaje Nybegynder
24. september 2004 - 13:43 #16
var bogstavArray = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "æ", "ø", "å");
taellerArray = new Array();
for (n=0; n<bogstavArray.length; n++) {
    taellerArray[n] = 0;
}
for (x=1; x<50; x++) {
    randomIndex = random(bogstavArray.length);
    randomBogstav = bogstavArray[randomIndex];
    taellerArray[randomIndex] += 1;
    eval("bogstavholder"+x+"_mc").bogstav = randomBogstav;
}

for (n=0; n<bogstavArray.length; n++) {
    trace("der er " + taellerArray[n]+" "+bogstavArray[n]+"'er");
}
bogstavholder_mc.bogstav = randomBogstav;
Avatar billede rohaje Nybegynder
24. september 2004 - 13:44 #17
bogstavholder_mc.bogstav = randomBogstav; ?
er det noget gammelt elle noget du bruger ?
Avatar billede soelle Nybegynder
24. september 2004 - 13:48 #18
Gammelt?
Avatar billede rohaje Nybegynder
24. september 2004 - 13:51 #19
har du et movieClip der hedder "bogstavholder_mc" ?
Avatar billede rohaje Nybegynder
24. september 2004 - 13:52 #20
du kan vist roligt fjerne den linie
Avatar billede rohaje Nybegynder
24. september 2004 - 14:03 #21
bare lige et forslag til hvordan du også kan gøre det

http://www.rohaje.dk/eksperten/taeller[1].fla
Avatar billede soelle Nybegynder
24. september 2004 - 14:10 #22
Ja, det er jo fantatastik! Jeg prøvede selv med noget duplicateMovie men opgav. Er der en simpel måde man kan sikre sig på at alle bogstaverne er der minimum 1 gang? Jeg skal nemlig have lavet sådan at man skal klikke på et randomBogstav, lige så mange gange som det er der. Altså når bogstaverne er delt ud i felterne skal man klikke på alle a'erne inden man kan komme videre.
Avatar billede rohaje Nybegynder
24. september 2004 - 14:13 #23
så er det vist tid til at barklund, kommer på banen så noget er han sej til :)
Avatar billede soelle Nybegynder
24. september 2004 - 14:21 #24
Ok ... det var jo også noget af et tillægsspørgmål... Men den er da for smart den fla du har lavet der, rohaje!

Smider du et svar for point?
Avatar billede rohaje Nybegynder
24. september 2004 - 14:27 #25
opret et nyt spørgsmål,, det var jo derfor du havde gang i noget sort,, det er også den vej du skal.

det var et gæt og ikke telekinetiske evner :)
Avatar billede rohaje Nybegynder
24. september 2004 - 14:30 #26
vede nærmere efter tanke, er det jo det samme spørgsmål, jeg gættede bare forkert,, afvis mit svar og hold den åben
Avatar billede soelle Nybegynder
24. september 2004 - 14:33 #27
Hvorfor vil du ikke have point?
Avatar billede rohaje Nybegynder
24. september 2004 - 14:37 #28
du bliver nød til at tælle op på en anden måde, med den mere komplicerede random funktion, der sikrer at der  er en af hver
Avatar billede rohaje Nybegynder
24. september 2004 - 14:42 #29
eller nej du gør prøv at se her

col = 7;
row = 7;
colSpace = 70;
rowSpace = 50;
d = 0;
bogstavholder_mc._visible = false;
for (c=0; c<col; c++) {
    for (r=0; r<col; r++) {
        navn = "bogstavholder"+d+"_mc";
        duplicateMovieClip("bogstavholder_mc", navn, d);
        this[navn]._x = bogstavholder_mc._x+(c*colSpace);
        this[navn]._y = bogstavholder_mc._y+(r*rowSpace);
        d++;
    }
}
ant = d;
var bogstavArray = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "æ", "ø", "å");
enafhver = new Array();
taellerArray = new Array();
for (n=0; n<bogstavArray.length; n++) {
    taellerArray[n] = 0;
    enafhver[n] = n;
}
enafhver.sort(function () {
    return random(3)-1;
});
for (x=0; x<ant; x++) {
    if (x<enafhver.length) {
        randomIndex = enafhver[x];
    } else {
        randomIndex = random(bogstavArray.length);
    }
    randomBogstav = bogstavArray[randomIndex];
    taellerArray[randomIndex] += 1;
    eval("bogstavholder"+x+"_mc").bogstav = randomBogstav;
}
for (n=0; n<bogstavArray.length; n++) {
    trace("der er "+taellerArray[n]+" "+bogstavArray[n]+"'er");
}
stop();
Avatar billede rohaje Nybegynder
24. september 2004 - 14:44 #30
Det virker vist
Avatar billede soelle Nybegynder
24. september 2004 - 14:48 #31
Ja, det virker!
Avatar billede barklund Nybegynder
24. september 2004 - 14:49 #32
Lav et array af alle bogstaver og fyld det op med tilfældige bogstaver til der er 50 - så er der mindst et af hvert. Herefter randomizes dette (med sort-metoden) og så kan man bare poppe det for at få næste bogstav:

http://actionscript.dk/eksperten/taeller/

Så skulle den være der ;)

--
Morten Barklund
Avatar billede soelle Nybegynder
24. september 2004 - 14:50 #33
Er det ikke det rohaje har svaret på?
Avatar billede rohaje Nybegynder
24. september 2004 - 14:51 #34
godt så
Avatar billede soelle Nybegynder
27. september 2004 - 09:00 #35
Hvis jeg opretter et spørgsmål mere er der der så en af jer der kan hjælpe med dette:

Jeg skal have lavet det sådan at man skal klikke på et randomBogstav, lige så mange gange som det er der i de felter der er oprettet i det script fra rohaje/barklund. Altså når bogstaverne er delt ud i felterne skal man klikke på f.eks alle a'erne inden man kan komme videre.
Avatar billede soelle Nybegynder
27. september 2004 - 11:13 #36
glem det, jeg fandt ud af det... men jeg har lige et andet spg til ovenstående script:
hvad gør row? Der sker nemlig ikke noget når jeg ændrer den. Jeg har en formodning om at det er den der skal styre hvor mange rækker der er, men det gør den ikke?!

Lige nu tracer den alle bogstaverne. Kan man lave så den ved et klik kun tæller hvor mange bogstaver der er af den man klikker på?
Avatar billede soelle Nybegynder
27. september 2004 - 11:56 #37
Fik løst den på denne måde:

taeller=0;
bogstaver.sort(function() {return random(3)-1;});
for (x=0; x<ant; x++) {
    var b = bogstaver.pop();
    taellerArray[b]++;
    eval("bogstavholder"+x+"_mc").bogstav = b;                           
_root["bogstavholder"+x+"_mc"].findDet = b;
if (b==randomBogstav) {
    taeller +=1;
    }   
    }

Men hvad med row?
Avatar billede rohaje Nybegynder
27. september 2004 - 12:05 #38
der en fejl i scriptet,,

for (r=0; r<col; r++) {

skal selvfølgelig ændres til

for (r=0; r<row; r++) {
Avatar billede soelle Nybegynder
19. januar 2005 - 12:48 #39
Jeg har nu testet en del på scriptet og har fundet har fundet et problem. Scriptet fungere fint, men hvordan sættet man den til at der max. må være 9 af det bogstav man skal klikke på? Jeg splicer nemlig array'et efterhånden som man har fundet bogstaverne, men så ender det med at der bliver flere og flere af af dem man skal finde.
Avatar billede barklund Nybegynder
22. januar 2005 - 16:02 #40
Jeg har slet ikke overblik over dette emne mere. Kan jeg ikke lokke dig til at tage det over i et nyt spørgsmål og forklare det helt fra bunden igen? :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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