Array per Zufall mischen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array per Zufall mischen

    Hallo ich möchte ein Kartenspiel programmieren. Die Kartenwerte befinden sich in einem Array. Dies soll vor jedem Spielbeginn erneut gemischt werden.

    Ich benutze dazu folgende Funktionen:

    srand ((double)microtime()*1000000);
    shuffle ($Cards);

    Das funktioniert auch ganz gut, allerdings mischt shuffle die Karten ziemlich schlecht.
    Kann man da noch was anderes machen?


    Vielen Dank

    Manu

  • #2
    probier mal array_rand()
    Kissolino.com

    Kommentar


    • #3
      Vielen Dank

      Vielen Dank,

      dass hat geholfen. Ist zwar mehr Aufwand, aber funktioniert entschieden besser.


      Gruß und schönes Wochenende

      Manu

      Kommentar


      • #4
        Hallo,

        ich hoffe, dass wird jetzt auch noch gelesen.

        Ich habe mein Array nun mit array_rand gemischt. Funktioniert auch prima.
        Aber das Array wird immer gleich gemischt, obwohl ich vorher die Funktion srand aufrufe:

        srand ((float) microtime() * 10000000);
        $rand_keys = array_rand ($Cards, count($Cards));

        Wieso?

        Kommentar


        • #5
          hier wird (fast) alles gelesen

          - welche php-version hast du?
          - wie sieht dein array aus?
          Kissolino.com

          Kommentar


          • #6
            PHP Version 4.2.1

            Mein Array :

            $Cards[1] = "c - c.jpg"
            $Cards[2] = "d - d.jpg"
            $Cards[3] = "e - e.jpg"
            $Cards[4] = "f - f.jpg"
            $Cards[5] = "g - g.jpg"
            $Cards[6] = "a - a.jpg"

            Ist jedoch immer verschieden, je nach dem wieviele Karten gewählt wurden und welche Tabelle aus der Datenbank abgefragt wird.

            Die Werte ändern sich zwar aber nur sehr selten und wenn dann auch immer nur 2 gleiche Werte des neuen Arrays z.B. Position 2 mit Position 5.

            Kommentar


            • #7
              je grösser dein array ist, umso gravierender sollten die änderungen
              ausfallen ... bei mir läuft es eigentlich zufriedenstellend ... du kannst
              übrigens das srand weglassen.

              wenn die daten jedoch aus der datenbank kommen, kannst du auch dort
              mit "ORDER BY rand()" direkt beim select arbeiten ... vielleicht ist das für
              deine belange besser ?
              Kissolino.com

              Kommentar

              Lädt...
              X