tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
2309
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mewX mewX ist offline Mitglied Gold
    Registriert seit
    Jul 2006
    Ort
    Berlin
    Beiträge
    129
    Hi! Gibt es irgendeine fertige Funktion oder einen Alogarythmus um Arrays durcheinander zu bringen? Und zwar mächte ich ein Kartenspiel mischen, d.h. der Array hat 32 Elemente...

    Gruß und schönes neues Jahr
     

  2. #2
    Avatar von Online-Skater
    Online-Skater Online-Skater ist offline Mitglied Brillant
    Registriert seit
    Sep 2004
    Ort
    Rostock
    Beiträge
    891
    Hi da ich ein ähnliches Projekt vorhabe, habe ich mal gegoogelt und es sieht nicht so aus, als wenn es eine fertige Funktion gibt. Das ist aber eine interessante Alternative Mischen

    mfg
     

  3. #3
    mewX mewX ist offline Mitglied Gold
    Registriert seit
    Jul 2006
    Ort
    Berlin
    Beiträge
    129
    OK, hab's jetzt geschafft.
    Meine Lösung:
    Gibt halt zwei Stapel, immer eine Karte wird zufällig vom ersten genommen und auf den zweiten gelegt und dann im ersten als "weggelegt" gekennzeichnet.

    Code :
    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
    30
    31
    32
    
      TYPE
         Karte = RECORD
                Farbe : STRING [10];
                Bild  : STRING [10];
              END;
      PROCEDURE shuffle_kartenspiel ;
      { Mischt das Kartenspiel, das im Array 'kartenspiel' steht }
      VAR karten_in_vorher, karten_in_nachher,rand,counter : INTEGER;
      VAR cur_karte : Karte;
      BEGIN
      karten_in_nachher := 0;
      counter := 0;
     
      REPEAT  { Solange bis Stapel 2 voll ist } 
        { Eine Karte nehmen }
        rand := random(33);
        IF rand > 0 THEN
        BEGIN
            cur_karte := stapel[rand];
            IF cur_karte.Bild <> "WEG" THEN { Wenn sie noch nicht in Stapel 2 vorhandne ist }
            BEGIN
                counter := counter + 1;
                { Sie auf neuen Stapel packen }
                stapel_nachher[counter] := cur_karte;
        
                { Karte aus Vorher-Stapel entfernen }
                stapel[rand].Bild := "WEG";
            END;
        END;
        { Usw. }
      UNTIL counter = 32;
      END;
    geht so nur für ein skatspiel; ne herz-zehn ist z.B:
    kartenspiel[1].Farbe := "Herz";
    kartenspiel[1].Bild := "10";

    gruß
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 26.11.10, 11:08
  2. Tabelle/Arrays und Arrays ausgeben
    Von Meitli im Forum ASP
    Antworten: 1
    Letzter Beitrag: 09.02.06, 13:01
  3. verzweifle an Arrays: Arrays veraendern
    Von supersalzi im Forum PHP
    Antworten: 6
    Letzter Beitrag: 01.06.05, 16:00
  4. Turbo Pascal: Arrays
    Von mmdj im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 07.01.05, 20:10
  5. Pascal in XP?
    Von henningd im Forum Delphi, Kylix, Pascal
    Antworten: 2
    Letzter Beitrag: 17.02.04, 22:59