1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

eigenschaften nach priorität erhöhen

  • Shavari
  • 2. August 2010 um 09:46
  • Unerledigt
  • Shavari
    3
    Shavari
    Mitglied
    Punkte
    90
    Beiträge
    16
    • 2. August 2010 um 09:46
    • #1

    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)

  • Shavari
    3
    Shavari
    Mitglied
    Punkte
    90
    Beiträge
    16
    • 2. August 2010 um 11:00
    • #2

    Ich glaube die Lösung gerade gefunden zu haben. Bin mir aber nicht sicher, ich probiere das mal schnell aus...

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 2. August 2010 um 11:21
    • #3

    [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)

  • Shavari
    3
    Shavari
    Mitglied
    Punkte
    90
    Beiträge
    16
    • 2. August 2010 um 12:17
    • #4

    @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 :)

    Code
    public static int[] eigenschaftenSystem(Object ausbildung, Object volk, int stufe, int erfahrungspunkte, int[] eigenschaften)
            {
                int[] rueckgabe = new int[17];
                int[] prioritaet = Operationen.Tabellen.TabellenDatenbankAuslesen.eigenschaftspriorität(ausbildung);
                int[] eigenschaftenNeu = new int[16];
                erfahrungspunkte += Operationen.Tabellen.TabellenDatenbankAuslesen.erfahrungspunkte(stufe);
                int zahl = 0;
                int volkZahl = 0;
                if ("Terraner".Equals(volk))
                    volkZahl = 1;
                for (int i = 0, j = 0; i < 4; i++)
                {
                    zahl = zufallZahl.Next(j, j +4);
                    if (Operationen.Tabellen.TabellenDatenbankAuslesen.aufstiegsKosten(eigenschaften[zahl])[volkZahl] >= erfahrungspunkte)
                    {
                        eigenschaftenNeu[zahl] += 1;
                        erfahrungspunkte -= Operationen.Tabellen.TabellenDatenbankAuslesen.aufstiegsKosten(eigenschaften[zahl])[volkZahl];
                    }
                    j += 4;
                }
                for (int i = 0; i < 16; i++)
                {
                    eigenschaften[i] = eigenschaftenNeu[prioritaet[i] -1];
                }
    
    
                rueckgabe[16] = erfahrungspunkte;
                return rueckgabe;
            }
    Alles anzeigen

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

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern