Teile - Gruppen Verwaltung



  • Hiho,

    ich stehe vor folgendem Problem. Bin gerade dabei ein Puzzle zu programmieren, ist auch nahezu fertig. Teile die man bisher zusammengesetzt hat sollen zu einer Gruppe gehören.

    Meine Frage ist jetzt, wie verwalte ich das am besten ?! Bisher habe ich folgenden Ansatz :

    Es gibt ein Array Gruppe[Teil] ... z.B. Gruppe[3] = 4 --> würde bedeuten Puzzleteil 3 gehört zur Gruppe 4.

    Jetzt habe ich ein zweites 2 dimensionales Array :

    InGruppe[Gruppe][... Teile ...] ...

    über Gruppe[4] könnte ich jetzt auf die Teile Nummern zugreifen die in dieser Gruppe 4 sind.

    Allerdings ist das ganze ziemlich kompliziert finde ich aber ich komme einfach auf keine einfachere Lösung für die Gruppen Verwaltung.

    Sagen wir mal der Benutzer verschiebt gerade eine Gruppe mit 3 Teilen und setzt diese
    an eine andere Gruppe die schon aus 4 Teilen besteht. Jetzt muss man ja diese beiden
    Gruppen zusammenführen. Ich hoffe ich habe das Problem einigermaßen verständlich beschrieben 😕

    Weiß jemand wie das einfacher geht ?! Ich muss ja nur wissen zu welcher Gruppe welches Teil gehört und welche Gruppe welche Teile beinhaltet. Hmm ich steh aufm Schlauch.



  • Ich würde nur mir Gruppe[] = "Gruppe" arbeiten und wenn dieses Teil bewegt wird im Code die Gruppenzugehörigen raussuchen, ala:

    int* zugehoerig = new int[anzTeile];
    j=0;
    for(i=0;i<anzTeile;i++) {
      if(Gruppe[i] == Gruppe[betrachtet]) { zugehoerig[j] = i; j++ }
    }
    //Abarbeitung des zugehoerig-Arrays
    delete zugehoerig;
    

    Gruppen vereinigen kannst Du mit etwas like:

    for(i=0;i<anzTeile;i++) {
      if(Gruppe[i] == a) Gruppe[i] = b;
    }
    

    Dann hast Du in "zugehoerig" alle Teile, die zur betrachteten Gruppe gehören. Einfacher in der Anwendung wären dann natürlich Funktionen oder sogar Klassen, obwohl das für die Anwendung wahrscheinlich etwas übertrieben wäre.



  • Supi danke! Das ich da ned selbst drauf gekommen bin. Klappt gut und ist wesentlich einfacher als meine erste Überlegung 😉

    Gruß
    paddy


Anmelden zum Antworten