Parameter verändern mit Funktion

  • So leute.. ich habe folgendes Problem und komm nach stundenlangem suchen einfach nicht weiter. :mad:

    Im Anhang befinden sich screenshots meines codes.

    Ich programmiere zur zeit ein Spiel, und will dass sich beliebig viele Gegner zufällig über den screen bewegen.
    In meiner getRndDirection() Methode werden eine x und eine y Koordinate, sowie 4 weitere "richtungswerte" (left, up, down, right, entweder 0 oder 1) übergeben, die innerhalb der methode verändert werden sollen. (Screenshot1)

    Dazu gibt es natürlich eine Methode moveRnd(), welche die x und y koordinaten des Gegners je nach den (durch getRndDirection) vorherig erstellen werten der richtungen verändert. (Screenshot2)


    Ich habe zum Test ein array enemy1 (6 felder groß) erstellt, welches im ersten feld enemy1[0] den x wert speichert, in enemy[1] den y wert, und von enemy1[2] bis enemy1[5] die richtungen left, up, down, und right (gespeichert als int, entweder 0 oder 1).

    Im spiel selbst wende ich dann die oben genannten methoden nacheinander auf das array enemy1 an, und gebe anschließend den Gegner als Bild bei den koordinaten x und y aus. (screenshot3)

    Die Werte des Arrays werden jedoch nicht durch die Methode verändert und der gegner bewegt sich nicht. (ja ich weiß, hat irgendwas mit call-by-value zu tun, habe auch schon lang genug gesucht und versucht es zu lösen....aber war wohl nichts)

    BITTE HELFT MIR


  • Ja hat etwas mit call-by-value zu tun^^. Du könntest der Methode das Array an sich übergeben (Damit übergibst du dann eine Kopie der Speicherddresse vom Array). So wie du es jetzt implementiert hast, übergibst du nur Kopien der Werte und somit hat das verändern von diesen keinen Effekt nach außen.

    Einmal editiert, zuletzt von klaza (16. Juni 2015 um 17:41)

Jetzt mitmachen!

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