Přeskočit na obsah

Game Maker Language

Z Wikipedie, otevřené encyklopedie

Šablona:Infobox Software Game maker language je programovací jazyk, který vytvořil Mark Overmars. K tomuto skriptovací programovacímu jazyku je potřeba vývojové prostředí Game Maker. Toto IDE se stará i překlad do spustitelného souboru. Má syntaxi podobnou C s možností použití i syntaxe Pascalu.

Příklady kódu

Následují příklady kódu.

Úsek kódu Hello world zobrazující text ve vyskakovacím okně:

show_message("Hello World!");

Stejný příklad jako minulý, avšak text vypisuje do herního okna na počátek souřadnic. Většinou je nutné tento kód psát do draw eventu.

draw_text(0, 0, "Hello World!");

Komentovaná ukázka z kódu hry napsaná v GML.

// Toto je komentar.
/* Toto je blokovy komentar. */

/* Deklarace lokalnich promennych, ktere budou uvolneny na konci skriptu. 
   Vsimnete si, ze deklarace neobsahuje typy promennych */
var xx, yy, nn;

// Podminka. Muze byt zkracena na "if (can_shoot)".
if (can_shoot = true) // "=" a "==" muze oboji byt pouzito v podminkach jako zapis porovnani.
{  // Zacatek bloku kodu. Je mozno taky pouzit "begin" jako v Pascalu.

   /* Nastaveni promenne na false. Muze byt taky napsano takto: "can_shoot = 0;",
      protoze GML nerozlisuje mezi typy boolean a integer. */
   can_shoot = false;

   /* Zde se nastavi nulty alarm na pet. Promenna alarm bude automaticky snizovana.
      Kdyz bude dosazena nula bude vyvolan alarm0 event. */
   alarm[0] = 5;

   /* Zde lokalni promenna xx definovana jako cele cislo (integer)
      a funkce lengthdir_x je pouzita. */
   xx = x + lengthdir_x(14, direction);
   yy = y + lengthdir_y(14, direction);

   // Toto vytvori obj_bullet a nasledne vrati jeji instance id do nn.
   nn = instance_create(xx, yy, obj_bullet);

   /* Klicové slovo with zpristupnuje clenske promenne objektu primo,
      bez nutnosti zapisovat vyrazy jako nn.speed nebo nn.direction. */
   with (nn)
   {
      speed = obj_tank.speed + 3;
      direction = obj_tank.direction;
   }
}

GML podporuje vice typu syntaxe. Jako příklad může být přepsaní předchozího příkladu v syntaxi podobné Pascalu:

var xx, yy, nn;
if can_shoot = true then begin
   can_shoot := false
   alarm[0] := 5
   xx := x + lengthdir_x(14, direction)
   yy := y + lengthdir_y(14, direction)
   nn := instance_create(xx, yy, obj_bullet)
   with nn begin
      speed := obj_tank.speed + 3
      direction := obj_tank.direction
   end
end

Toto je příklad jednoduchého pohybu ovládaného klávesnicí. Funkce motion_set má dva parametry: směr ve stupních a rychost v pixelech za krok programu. Její volání nastaví vestavěné lokání proměnné "speed" and "direction" , které Game Maker používá automatickou změnu pozice instance. Tato změna nastává v každém kroku. Pozice instance může být změněná i přímo pomocí nastavení vestavěných proměnných "x" a "y".

if (keyboard_check(vk_left))  motion_set(180,4);
if (keyboard_check(vk_up))    motion_set(90,4);
if (keyboard_check(vk_right)) motion_set(0,4);
if (keyboard_check(vk_down))  motion_set(270,4);
if (keyboard_check(vk_nokey)) motion_set(0,0);

Zde je uvedena komplexnější alternativa volání motion_set(180, 4), která kontroluje zda je místo ve směru posunu.

if (!place_free(x-4,y))
{
   if (place_free(x-4,y-4))
   {
      x-=4;
      y-=4;
   }
   else if (place_free(x-3,y-5))
   {
      x-=3;
      y-=5;
   }
   else if (place_free(x-2,y-6))
   {
      x-=2;
      y-=6;
   }
}
else
   x-=4;

Ukázka volání OpenGL procedury.

d3d_draw_floor(0,0,0,500,600,1,background_get_texture(background1),.01,.01);

V tomto článku byl použit překlad textu z článku Game Maker Language na anglické Wikipedii.