Koordinaten in einem Spiel

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Koordinaten in einem Spiel

    Hallo,

    Erstmal im Voraus: Ich bin neu hier und das ist meine erste Frage. Also bitte nicht meckern, sondern nett und freundlich auf Fehler hinweisen ;D .
    Außerdem bin ich mir gar nicht sicher, ob ich das ganzen im richtigen Ordner poste.

    Also, jetzt zu meiner Frage:

    Ich bin im Objective C Bereich noch recht neu und gelernt habe ich mit zwei Büchern. Das eine ist für die Grundlagen, das andere für die Spieleentwicklung.
    Jetzt bin ich gerade dabei ein kleines Spiel zu schreiben.

    Jetzt geht es darum, Objekten die in einem Array sind Koordinaten zu geben.

    Im Buch steht jetzt folgendes:

    Quellcode

    1. ​ [[Array objectAtIndex: i] setCenter: fmod(arc4random(),screenWidth-20))+20 y: -80];


    Das verstehe sogar ich als Anfänger:

    Dem Objekt, dass an i-ter Stelle im Array steht wird die Mitte gesetzt...

    Aber darum geht es nicht, sondern. Wenn ich für X einen Variable setzten möchte, kann ich mir vorstellen, dass ich das einfach wie bei Y schreiben soll, bloß statt die Zahl einen Variablennamen, aber das gibt mir Xcode Fehlermeldungen.
    Also wie könnte man das machen?

    Auch wenn es eine dumme Frage ist (und es ist wahrscheinlich eine dumme Frage), wäre es nett, wenn ihr mir hilft, denn als Anfänger scheitert man immer an den einfachsten Sachen, ne ;) ?

    LG

    asteiger
  • Du benutzt nicht Sprite Kit, oder?
    Es sieht nicht so aus und deshalb nehme ich jetzt einfach mal an, dass die Objekte im Array UIImageViews sind.

    Ich finde den Code etwas Einsteiger unfreundlich und würde es so formulieren.

    Quellcode

    1. UIImageView *gameObject = [Array objectAtIndex: i];
    2. gameObject.center = CGPointMake(xVar, -80);


    xVar ist dann deine Varibale.
  • Okay, danke euch beiden, jetzt funktioniert das.

    An die CG... Methoden habe ich auch schon gedacht, nur wusste ich nicht wie genau.

    Aber zum Code von Ioscampus:

    Wenn ich ihn so angucke fällt auch eine hohe Ähnlichkeit auf, denn gameObject ist ja dann gleich dem [Array objectAtIndex: i] und gameObject.center ist eine andere Schreibweise zu GameObject setCenter. Dennoch finde ich deinen Code viel übersichtlicher für den Anfang, und ich habe ihn direkt beim ersten ansehen verstanden. Danke ;D

    Es werden wahrscheinlich noch ein paar weiteren Fragen zu meinem Spiel kommen, denn ein Buch kann ja leider nicht alle Fragen beantworten..
  • asteiger schrieb:

    Meinst du beim Code von ioscampus?
    Da wird sie doch verwendet, oder?

    Ich habe das so verstanden, dass man statt GameObject.center auch GameObject setCenter nutzen kann. Ist das nicht so?
    Oder meinst du was anderes?


    in deinem code verwendest du "setCenter:y:". das ist eine andere methode als "setCenter:" (die hat nämlich keinen parameter "y").
    .center ist nur die dot-notation für setCenter.
  • asteiger schrieb:

    Meinst du beim Code von ioscampus?

    Vermutlich meint er Deinen Code.

    Im Eingangspost schreibst Du:
    [spielstein setCenter:<@X-Koordinate@> y:<@Y-Koordinate@>];

    ioscampus nutzt (sinngemäß) das von Dir übernommene:
    [spielstein setCenter:<@Punkt-Struktur@>];

    Du benutzt also zwei völlig unterschiedliche Methoden. Das muss beim Lernen nicht unbedingt von Vorteil sein.
    (Vielleicht ruft –setCenter:(CGPoint) einfach nur –setCenter:(int) y:(int) mit den Parametern point.x und point.y auf… Aber das weiß man nicht genau und ist auch völlig unerheblich.)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Achso, den Y Parameter habe ich jetzt übersehen. Den Code, den ich im ersten Beitrag gezeigt habe, war aus dem Buch abgeschrieben. Und ich weiß nicht ob ich das jetzt richtig verstanden habe, wurde dort setCenter:y verwendet, oder?
    Jetzt im neuen Code wird der Parameter Y aber nicht benutzt, also eine normale setCenter: Methode.

    Aber wo habe ich denn eine setCenter:y Methode beschrieben? Meinst du jetzt im ersten Codeschnipsel?
  • Marco Feltmann schrieb:

    asteiger schrieb:

    Meinst du beim Code von ioscampus?

    Vermutlich meint er Deinen Code.

    Im Eingangspost schreibst Du:
    [spielstein setCenter:<@X-Koordinate@> y:<@Y-Koordinate@>];

    ioscampus nutzt (sinngemäß) das von Dir übernommene:
    [spielstein setCenter:<@Punkt-Struktur@>];

    Du benutzt also zwei völlig unterschiedliche Methoden. Das muss beim Lernen nicht unbedingt von Vorteil sein.
    (Vielleicht ruft –setCenter:(CGPoint) einfach nur –setCenter:(int) y:(int) mit den Parametern point.x und point.y auf… Aber das weiß man nicht genau und ist auch völlig unerheblich.)



    Okay, danke jetzt habe ich das verstanden. Aber die CG Methoden sind auch nicht komplett neu für mich, die habe ich ja schon mal benutzt und damit finde ich sie leichter. Dass jetzt im Buch die neue Methode benutzt wurde, hat mich verwirrt, deshalb wusste ich nicht wie ich sie anpassen sollte. Also benutze ich lieber die CGPoint Methode, weil sie mir bekannter ist.
    Dass die andere Methode jetzt im Buch vorkam, war ja auch das Problem, dass mich zu der Frage geführt hat. Jetzt weiß ich wie man das mit der CG Methode umsetzt und würde dann eher diese benutzen.
  • asteiger schrieb:

    nur mal so aus Interesse:

    Wenn ich jetzt setCenter:y: benutzen würde, wie sollte ich das machen?

    So wie ich das jetzt verstanden habe:

    Quellcode

    1. [[Array ObjectAtIndex: i] setCenter: Var1 y:-80];


    Xcode gibt da keine Fehlermeldung, also ist das richtig?


    keine ahnung was in dem array für ein objekt liegt.
    der compiler weiß es auch nicht und warnt also nur wenn er die methode überhaupt nicht kennt.
    kann also gut sein dass es korrekt ist, kann aber auch falsch sein - das musst du wissen!