eigenschaften nach priorität erhöhen

  • Ein herzliches Hallo an alle

    Ich habe ein Problem mit meinem Programm das ich grad schreibe. Mein Problem dabei ist der Lösungsweg. Wie stelle ich das an?? Ich habe mir jetzt Tagelang das Hirn darüber zermartert wie es gehen könnte aber das einzige was dabei herausgekommen ist sind Gehirnknoten. Was ich nämlich tun will ist folgendes:

    Ich brauche eine Methode die ein Integer-Array mit 17 Stellen zurückgibt.
    Ich habe 16 verschiedene Eigenschaften die die Integer 0 - 15 im Array bilden (diese haben im gesamten Programm immer die selbe Reihenfolge):

    • [0] = Kontaktwurf
    • [1] = Fernwurf
    • [2] = PSI-Wurf
    • [3] = Kraft
    • [4] = Geschicklichkeit
    • [5] = Schnelligkeit
    • [6] = Widerstandskraft
    • [7] = Kommunikation
    • [8] = Technik
    • [9] = Wissen
    • [10] = Soziale Kompetenz
    • [11] = Lebensenergie
    • [12] = PSI-Potenz
    • [13] = Mentale Energie
    • [14] = Belastbarkeit
    • [15] = Ausdauer


    Array Nummer 16 ist die Anzahl an Erfahrungspunkten die überbleibt.

    Ich habe ein weiteres Array das die Priorität einer jeden Eigenschaft enthält (die Prioritäten sind jedesmal anders vergeben), also z.B. Kontaktwurf hat Priorität 7. Das wäre dann im Array ungefähr so: eigenschaften[0] /*[0] = Kontaktwurf*/ hat Priorität prioritaet[0] /*den Wert davon*/

    Code
    public static int[] eigenschaftenSystem(Object ausbildung, int stufe, int erfahrungspunkte)
    {
         int[] eigenschaften = new int[17];
         erfahrungspunkte += Operationen.Tabellen.TabellenDatenbankAuslesen.erfahrungspunkte(stufe);
         int[] prioritaet = Operationen.Tabellen.TabellenDatenbankAuslesen.eigenschaftspriorität(ausbildung);
    
    
         eigenschaften[16] = erfahrungspunkte;
         return eigenschaften
    }

    die Eigenschaften müssen jetzt zu 4 Werten in je 4 Gruppen unterteilt werden wo per Randomzahl von 1 - 4 in jeder Gruppe eine einzelne Eigenschaft ausgewählt wird und einmal um 1 erhöht wird. Allerdings müssen sie so in die 4 Gruppen unterteilt werden, dass die Eigenschaften mit den Prioritäten 1 - 4 in Gruppe 1 sind, die mit 5 - 8 in Gruppe 2,..., dabei muss am Ende bei der rückgabe aber die Reihenfolge wieder die selbe sein, also: [0] = Kontaktwurf, [1] = Fernwurf,...
    Was am Ende also dabei rauskommt ist ein Array mit 17 Werten wovon der letzte die Erfahrungspunkte sind und wo 4 der 16 übrigen Werte den Wert 1 besitzen, die restlichen alle 0.

    Da ihr vielleicht verstehen könnt, dass mir dabei das Hirn raucht, könntet ihr mir dabei vielleicht helfen?
    bin für jeden Vorschlag offen, danke schonmal im vorraus

    Einmal editiert, zuletzt von Shavari (2. August 2010 um 09:58)

  • [Hier stand vorher eine Teillösung, weil ich die Problembeschreibung nicht völlig verstanden hab. Tu ich noch immer nicht, aber...]

    Pack deine ganzen Daten in Strukturen (structs, classes, wie immer man sie in C# nennt) mit zwei Feldern: Nummer der Eigenschaft und Prioritätswert. Sortiere nach Prioritätswert. Wähle in dieser sortierten Liste aus Blöcken von je vier benachbarten Elementen eines aus. Erhöhe die Eigenschaft mit der Eigenschaftsnummer im ausgewählten Element.

    *plantsch*

    2 Mal editiert, zuletzt von Plantschkuh! (2. August 2010 um 11:28)

  • @plantschkuh Danke für die schnelle Hilfe aber ich bin vorhin selber auf die Lösung gestoßen, wäre aber eine gute Idee mit den Feldern.

    Ich schreibe meine Lösung der Methode hier rein, vielleicht hilft sie ja später noch jemandem (bezweifle ich aber).
    Ich habe keine Kommentare hingeschrieben, weil ich einen Geistesblitz hatte und den so schnell wie möglich umsetzen wollte. Das mit den Erfahrungspunkten hab ich vorher vergessen, hier ist es jetzt schon dabei. Ich könnte jetzt auch nicht mehr genau erklären wie das jetzt funktioniert aber es geht glaube ich. Falls jemandem Fehler oder Sachen die man kürzer lösen könnte auffallen aber trotzdem in dieser einen Methode zu lösen sind, bin ich offen für Verbesserungen :)

    Einmal editiert, zuletzt von Shavari (4. August 2010 um 09:57)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!