Array Grid

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

    • Array Grid

      Hi, das ist mein erster versuch ein Tutoial zu entwickeln, und ist noch nicht ganz ausgereift.
      Es stammt aus dem Spiele projekt "WALUK" ein Dame ähnliches Brettspiel.

      ich wollte meine Technik für ein Grid aus (Array's) presentieren.
      Das ganze ist für ein 12 * 6 Felder Grid gedacht. Jedes Feld kann ein Wert speichern(0 bis unendlich) das wird benutzt um zu zeigen ob das feld lehr ist(0), oder besetzt ist(1) oder (2).
      Jeder Spielstein hat ebenfals ein solches Array, wo gespeichert wird auf welchem Feld sich der Spielstein befindet.



      Das schreibe ich ins create event, am anfang des Levels.

      ein mal das Feld für die Werte (0-2):
      0 = leer
      1= eigener Spielstein
      2 = gegner Spielstein

      12 felder breit und 6 hoch.
      [x,y]

      schaut so aus:
      grid[1,1] = 0
      grid[1,2] = 0
      .........
      .....
      grid[12,6] = 0


      Dann das zweite grid für die Positionen:
      Der gedanke hier ist, das ich aus den zwei Koordinaten x und y das Feld bestimme und dann diesem die genaue Position zuweise.
      Also 12 Felder breit heißt: x ist 1 -12.
      Und 6 Felder hoch heißt: y ist 1-6.

      dabei sind es nun zwei variablen, einmal für x und einmal für y.
      Das ganze ist sehr klein vom code her und gut überschaubar.
      Die Felder sind immer 123pixel breit und hoch bei mir. Und die obere start ecke ist: x=124, y=141.

      Also geht das bei x immer um 123pixel nach rechts.

      schaut so aus:
      gridx[1] = 124
      gridx[2] = 247
      ...
      gridx[12] = 124 + (11*123) // ich weis die zahl grad nicht aus dem Kopf.

      und um die y Koordinaten zu bestimmen:
      gridy[1] = 141
      gridy[2] = 264
      ....
      gridy[12] = 141 + (11*123) // ich weis die zahl grad nicht aus dem Kopf.


      Nun wenn ich ein Objekt(Spielstein) auf das Spielfeld (in die linke obere ecke) positionieren möchte, kann man so vohrgehen:

      instance_create(x,y,obj_name)

      instance_create(gridx[1],gridy[1],obj_name)



      Um die Positionen zu verändern, kann man für die zwei neue werte verwenden, und diese veränderen.

      meine zwei start variablen für ein Spielstein:
      das kommt ins create event des ersten Spielsteines, der auf Position x=1 und y=1 ist.
      Die Programmiertechnik benötigt einen startpunkt für jeden Spielstein, von dem der ganze verlauf ausgeht.

      sx = 1
      sy = 1

      Nun klicke ich auf den Spielstein, dabei sollen Pfeile erscheinen auf den lehren feldern wo ich hin gehen kann.
      Da ich weis wo diese sind kann ich mit einer einfachen berechnung diese definieren.

      dafür verwende ich die weiteren zwei variablen, die den neuen Wert speichern. und fals ich dann ein feld weiter gehe, geben diese den wert an das Objekt zurück(sx,sy)

      ux = 0 // für diagonal rechts hoch laufen
      uy = 0

      dx = 0 // für diagonal recht unten laufen
      dy = 0

      --------------

      So nun kann man die neue Position berechnen...

      ux = sx + 1 // umm ein feld nach rechts zu springen
      uy = sy - 1 // um ein feld nach oben zuspringen

      dx = sx +1 // umm ein feld nach rechts zu springen
      dy = sy + 1 // um ein feld nach unten zuspringen

      dann prüfe ich ob das feld frei ist, also:

      if grid[ux,uy] = 0

      wenn ja, kann ich dort den Pfeil setzten.

      instance_create(gridx[ux],gridy[uy],obj_name)

      das gleiche gilt für dx,dy.

      ...
    • Wie wär's wenn du den Code in die

      GML-Quellcode

      1. GML-"Dinger"
      setzt? Macht das Ganze übersichtlicher... :)
      GML lernen geht leicht :)
      1. http://www.gm-d.de/help/ (deutsch)
      2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
      3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)