Tworzenie gry Snake w GM

Klikipedia - klikowa encyklopedia
Skocz do: nawigacji, wyszukiwarki
Autor.jpg
Autorem tego artykułu jest
Marmot

Artykuł ten wyjaśnia, jak zrobić grę typu Snake w programie Game Maker.

Sprite

Tworzymy dwa sprity o wymiarach 32x32 w kształcie kwadratu. Pierwszy nazywamy glowa a drugi ogon. Tworzymy jeszcze jednego sprita o wymiarach 32x32 w kształcie koła i nazywamy go owoc.

Kierunki

Teraz bierzemy się za silnik. Tworzymy obiekt o nazwie obj_glowa i nadajemy mu sprite o nazwie glowa.

Tworzymy Create i piszemy kod:

direction=0; 
czasruchu=7; 
alarm[0]=czasruchu; 
dlugosc=10;

Teraz tworzymy w tym samym obiekcie akcję Alarm 0 i piszemy w nim kod:

instance_create(x,y,obj_ogon); 
nastepneX=x+32*cos(degtorad(direction)); 
nastepneY=y-32*sin(degtorad(direction)); 
if (instance_place(nastepneX,nastepneY,obj_ogon)) { 
    show_message("Porażka!"); 
    game_end(); 
} 
x=nastepneX; 
y=nastepneY; 
alarm[0]=czasruchu; 
image_single=direction div 90;

Tworzymy teraz akcję press <Left> i piszemy kod:

direction=180;

Tworzymy następnie press <Up> i piszemy kod:

direction=90;

Tworzymy press <Right> i piszemy kod:

direction=0;

Tworzymy press <Down> i piszemy kod:

direction=270;

Tworzymy zdarzenie Outside Room i piszemy kod:

move_wrap(true,true,32);

No to już większość pracy za nami ale do tego obiektu jeszcze wrócimy.

Ruch węża

Tworzymy obiekt o nazwie obj_ogon i nadajemy mu sprite o nazwie ogon.

Tworzymy w nim zdarzenie Create i piszemy kod:

alarm[0] = obj_glowa.dlugosc * obj_glowa.czasruchu;

Tworzymy akcję Alarm 0 i piszemy kod:

instance_destroy();

Teraz tworzymy obiekt obj_owoc i nadajemy mu sprite o nazwie owoc i nic w nim nie tworzymy.

Zbieranie jabłek

Teraz powracamy do obiektu obj_glowa i tworzymy akcję Collision with owoc i piszemy kod:

score += 5; 
instance_create(random(room_width-32), random(room_height-32), obj_owoc); 
with (other) instance_destroy(); 
dlugosc += 1;

I to koniec - można przetestować grę.


informacje na temat funkcji, użytych w artykule: instance_create(), instance_place(), cos(), sin(), degtorad(), show_message(), game_end(), move_wrap(), instance_destroy(), random()