Ergebnis 1 bis 13 von 13

Thema: Problem beim Umgang mit Array

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Problem beim Umgang mit Array

    Hallo, ich habe hier folgende Funktion, die leider nicht das macht, was sie machen soll.
    Sinn ist folgender: Manche Waffen haben einen eigenen Parameter im Name (gekennzeichnet durch !...) und durch den bekommt der Kämpfer neue Skills. Alle Angriffe sind so quasi von Waffen abhängig.
    Unterschiedliche Waffen, unterschiedliche Parameter, unterschiedliche Angriffe.
    Funktioniert auch alles soweit, Problem ist die for-Schleife zum Schluss:
    Diese löscht das 0. Element aus dem Array skills_neu UND aus @skills. dadurch wird das eigentlich 1. Element zum 0. und dann übersprungen.
    Das ist aber Quatsch, der soll das Element doch nur aus skills_neu löschen...
    Warum löscht der das auch aus @skills?
    Code:
      def angriffe_setzen(waffe)
        skills_neu = @skills
        if waffe.include?("!M")
    # Machtwaffen      
          skills_neu.push(3)        # Angriff
        elsif waffe.include?("!S")
    # Schusswaffen      
          skills_neu.push(2)        # Angriff
          skills_neu.push(5)        # Gezielter Angriff
        elsif !waffe.include?("")
    # Normale Waffen
          skills_neu.push(1)        # Angriff
          if waffe.include?("!r") or waffe.include?("!m")
            skills_neu.push(4)      # Gezielter Angriff
          end
          if waffe.include?("!m")
            skills_neu.push(24)      # Meucheln
          end
        end  
        for i in 0..@skills.size
          if @skills[i] < 25
            skills_neu.delete_at(i)
          else
            break
          end
        end
        @skills = skills_neu
        @skills.sort!
      end
    Außerdem bin ich für Optimierungsvorschläge dankbar "

    Geändert von Rettan (11.12.2011 um 21:23 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •