Klammern, Symikolon und andere gereimtheiten

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

    • Klammern, Symikolon und andere gereimtheiten

      Hi, wenn ich mir so einige projekte ansehe, Frage ich mich manchmal, warum die einen diesen Code so schreiben:

      GML-Quellcode

      1. if (global.variable = true)

      und die anderen

      GML-Quellcode

      1. if global.variable = true
      .
      Dazu kommt, warum manchmal die geschweiften Klammern ({}) weggelassen werden:

      GML-Quellcode

      1. if global.soundso = true
      2. score+=1

      anstatt:

      GML-Quellcode

      1. if global.soundso = true
      2. {
      3. score+=1
      4. }

      Weiter gehts hiermit: Ich habe schon so einiges über das Simikolon (;) gesehen und frag mich, wozu es gut ist und ob es codes schneller oder so macht.
      Ich habe mich nie wirklich damit beschäftigt, weil mir keine Veränderungen aufgefallen sind.
    • Also schneller machts das auf keinen fall, weil ja der code vorm ausführen sowieso compiliert wird.
      Ich setz das Semikolon auch immer, weil es in andern Programmiersprachen Pflicht ist. Aber der GM ist halt so Programmiert, dass er das Ende eines Befehls auch am zeilenumbruch erkennt. Die geschweiften klammern müssen bei einzelanweisungen nicht hin, können aber, ist also ne sache des proggers (vielleicht findets der eine schöne und ein anderer nicht).
      Bei dem ersten Beispiel mach ich persönlich die Klammern hin weils einfach schöner aussieht. Aber ich glaub auch hier wollen das manche Programmiersprachen mit Klammern. Also denk ich mal, dass die meisten Schreibweisen durch Gewohnheit bei anderen Programmiersprachen kommen.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Bl@ckSp@rk ()

    • der gammaker macht de keine großen unterschieden, es gibt aber progr.sprachen die das sehr wohl unterschieden. es ist also eher geschmaksache was du da machst.
      ixh persönlich habe mir die javaähnliche schreibweise angewöhnt, weil mir die einfach gut liegt. du kanst es aber handhabe we du willst.

      nur bei den geschweiften klammern ({}) gibt es wesentliche unterschiede. wen du sie weglässt bezieht sich die abfrage nur auf die nächste zeile. ih mache imer die klammer, da es dan viel einfacher ist eine zusätzliche zeile einzufügen.
      :) Nobody is perfect (-:

      "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
    • Original von ghostrider
      @Symikolon:
      Bei mir ging z.B.

      GML-Quellcode

      1. if global.sprite=1
      2. {
      3. sprite_index=spr_player1
      4. }
      5. else
      6. {
      7. sprite_index=spr_player1
      8. }


      Nur mit ;
      Also:

      GML-Quellcode

      1. if global.sprite=1
      2. {
      3. sprite_index=spr_player1;
      4. }
      5. else
      6. {
      7. sprite_index=spr_player1;
      8. }


      Ähm ja...warum machst du denn auch ne Extra Variable? sprite_index ist doch schon eine.
      Wenn du z.B. einen Sprite ändern lässt, machst du es so: ?
      if schiessen = true
      {
      global.sprite= spr_sprite2
      }
      anstatt
      if schiessen = true
      {
      sprite_index = spr_sprite2
      }
      denn dazu brauchste doch keine Extra Var oO
    • Nein eigentlich war es so... die Variable wird im create festgelegt (random).

      Das sollte ein Modus werden. Entweder ist der Modus 1 oder etwas anderes. Die Variable wird immer wieder abgefragt das mit sprite_index war nur ein kleiner Teil ;)

      EDIT: global.sprite war die Modus variable ;) ;) ;)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ghostrider ()

    • Das mit der Schreibweise ist ein sehr interessantes Thema. Ich mach es ebenfalls so, dass ich mich an echte Programmiersprachen anlehne. Ich mach zB. auch den Unterschied zwischen = und ==. In anderen Programmiersprachen würde sonst in

      GML-Quellcode

      1. if (x=10)
      x auf 10 gesetzt, anstatt verglichen ob x 10 ist und dann eben true oder false zurückgegeben. Ich würde jedem davon abraten, sich die vereinfachte Schreibweise anzugewöhnen, man hat es dann deutlich schwerer, wenn man mal was richtiges programmieren will.

      Bei mir sieht sowas dann zB. so aus:

      GML-Quellcode

      1. if (global.weapon==true) // oder nur: if (global.weapon)
      2. {
      3. sprite_index=spr_weapon;
      4. image_speed=0.2;
      5. }


      Das Semikolon ist natürlich praktisch, wenn man mehrere Anweisungen in eine Zeile schreiben will:

      GML-Quellcode

      1. a=1;b=4;c=3;d=31;


      Was allerdings ein hundsgemeiner Fehler ist (weil man ihn sehr leicht übersieht), wäre folgendes:

      GML-Quellcode

      1. if (global.weapon==true);
      2. {
      3. sprite_index=spr_weapon;
      4. image_speed=0.2;
      5. }

      Es gibt keine Fehlermeldung, aber die Anweisungen in den geschweiften Klammern werden IMMER ausgeführt. Da nach dem if, nur die nächste Anweisung oder der nächste Block von Anweisungen ausgeführt wird und das Semikolon eine Anweisung beendet, ist die if-Abfrage mit dem Semikolon sofort wieder beendet. Also: Aufpassen, ich bin mir sicher, dass den meisten sowas mal passieren wird und jetzt hat mans zumindest schonmal gesehen...
      Einige meiner Spiele:
    • So weit ich weiß, kann man statt "{" und "}" auch "begin" und "end" schreiben. Ich habe mir leider die vereinfachte Schreibweise angewöhnt , deshalb könnte man meinen (Beispiel) 200 Zeichen-Code auch zu einem 250 Zeichen-Code machen, ohne das irgendetwas verändert wird, es würde nur schicker aussehen :D
      woku

    • Hi, wenn ich mir so einige projekte ansehe, Frage ich mich manchmal, warum die einen diesen Code so schreiben:


      GML-Quellcode

      1. if (global.variable = true)



      und die anderen

      GML-Quellcode

      1. if global.variable = true


      Die Rundenklammern sind eigentlich unötig aber das gewöhnt man sich schnell an wegen den andere Funktionen die GM noch zu bieten hat.

      Es ist auch übrigens quatsch "if variable = true" zu machen weil die Funktion if nur das in den {} Klammern ausführt wenn das argument 1 ist (true = 1). Also kann man sich das "= true" sparen.
    • Hast recht aber sobald man schreibt "if blub = false" hat man schnell was vergessen. Natürlich kann man auch schreiben "if blub !=true" oder sonstiges. ber ich hab es mir so angewöhnt immer etwas dahinterzuschreiben. Das dient nicht zuletzt der allgemeinen Übersichtlichkeit.
    • Als, wenns so ist, ich habe immer gedacht, das Semikolon sei wichtig, jetzt muss ich endlich nicht mehr jedes Script 'Ausbessern'. Meistens schreibe ich so:

      if (global.xyz==true) {
      instance_create("obj_abc","x","y")
      }

      Und noch eine Frage: kann man eigentlich statt den doppelten Anführungszeichen (") auch einfache (') machen?

      gn
      Kaldor - Das erste echte MMORTS
    • oO
      normalerweise kommen da garkeine Anführungszeichen hin... kann mir nicht vorstellen das es mit funktioniert

      Aber ansonsten überall wo man Anführungszeichen setzten kann/muss ist es egal welche man setzt, vorrausgesetzt man schließt es auch mit dem selben zeichen
    • anfürungszeichen sind dazu da, strings darzustellen
      es gibt zwei versiedene afz (") und (') die sind dafür da wenn man

      GML-Quellcode

      1. object_event_add(...,'
      2. {
      3. abc = "hallabaluza"
      4. }
      5. ')

      schreibt, damit beim zweiten afz nicht der string '{ ... }' durch irgendwas unterbrochen wird

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von copyboy ()