1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Community
  3. Gaming

Parameter verändern mit Funktion

  • lion_heart
  • 16. Juni 2015 um 17:10
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • lion_heart
    Punkte
    15
    Beiträge
    2
    • 16. Juni 2015 um 17:10
    • #1

    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

  • klaza
    Punkte
    11
    Beiträge
    2
    • 16. Juni 2015 um 17:32
    • #2
    Zitat von lion_heart

    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

    Alles anzeigen


    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)

  • lion_heart
    Punkte
    15
    Beiträge
    2
    • 16. Juni 2015 um 17:42
    • #3

    und schon gelöst.. echt nice, dank dir! :wave:

  1. Datenschutzerklärung
  2. Impressum