Avatar billede Slettet bruger
29. juli 2004 - 23:42 Der er 3 kommentarer og
1 løsning

Blande et spil kort

Hejsa,

Jeg har lavet mig en lille klasse som skal blandet et ArrayList. Dertil bruger jeg randomize klassen, problemmet er bare som jeg ser det at når den skal genere det tilfældige tal kan den lande på det samme tal mere end en gang. Jeg har oplevet at jeg har haft det samme kort 4 gange i samme spilkort, det dur jo ikke helt :-)

Min kode:


    public ArrayList shuffle(ArrayList curArray) {
       
        Random rnd = new Random();
        Cards curCardFirst;
        Cards curCardSecond;
        shuffledArray = new ArrayList();
        for (int i = 0; i < curArray.size(); i++) {
            int j = rnd.nextInt(curArray.size() - 1);
            //Nu har vi det første kort ude af bunken
            curCardFirst = new Cards();
            curCardFirst = (Cards) curArray.get(j);
            System.out.println(curCardFirst.getColour() + " " + curCardFirst.getValue() + " : "+i);
            shuffledArray.add(curCardFirst);
        }
        //System.out.println("Stop");
   
    return shuffledArray;
    }
Avatar billede lagermus Nybegynder
30. juli 2004 - 00:03 #1
så er det vel et spørgsmål om at du fjerner det kort som allerede er blevet valgt ud...
ala curArray.remove(j);
Avatar billede Slettet bruger
30. juli 2004 - 00:06 #2
Jeg ved faktisk ikke om det virker, men da jeg bruger ArrayList har jeg faktisk fået den funktion foræret i Collections (DOH)

Collections.shuffle(curArray) - så er den blandet
Avatar billede lagermus Nybegynder
30. juli 2004 - 00:11 #3
ja - hvorfor ikke :-)
Avatar billede jakoba Nybegynder
31. juli 2004 - 00:05 #4
så fejlen er der du genererer dine 52 kort. den der
    rnd.nextInt(curArray.size() - 1);
laver bare problemer (og mere end et af samme kort).

bruge en for-løkke istedet, fra mindste til største kortnummer
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
Kurser inden for grundlæggende programmering

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