Tworzenie gry typu Arkanoid w GM

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

Dzisiaj spróbujemy zrobić prostą odmianę gry typu Arkanoid (bat and ball).

Realizacja

Na początku rysujemy 3 części palety o dowolnych wymiarch, dla przykładu niech będzie 24x24. Palety nazywamy kolejno lewa, srodkowa, prawa (nie używamy polskich znaków w nazwach).

Teraz rysujemy piłkę o dowolnych wymiarach i nazywamy ją pilka. Pozostało nam jeszcze narysowanie maski do palety, niech będzie o wymiarach 72x24 i wypełniona w środku. Wstukujemy nazwę maska.

Obiekty i kod

Przechodzimy do tworzenia obiektów. Tworzymy obiekt o nazwie paleta i nadajemy mu sprite’a maski. Zaznaczamy opcje solid (ang. trwały). Tworzymy event Draw (rysowanie) i piszemy kod:

draw_sprite(lewo,0,x-24,y) //rysujemy lewa czesc paletki 
draw_sprite(srotkowa,0,x,y) //rysujemy srodkowa czesc paletki 
draw_sprite(prawa,0,x+24,y) //rysujemy prawa czesc paletki 
if mouse_x<473 //jezeli mysz nie wychodzi poza ekran z prawej strony 
x=mouse_x //ustaw pozycje X na pozycje myszki 
else //jezeli mysz wychodzi poza ekran z prawej strony 
x=473 //ustaw pozycje X na 473 
if mouse_x<24 //jezeli mysz wychodzi poza ekran z lewej strony 
x=24 //ustaw pozycje X na 24 
draw_set_color(c_white) //ustawiamy bialy kolor rysowania 
draw_line(520,0,520,480) //rysujemy linie o podanych wspolrzednych  
draw_text(12,12,pilka.odl)  //piszemy tekst (wartosc zmiennej odl obiektu pilka) 

Teraz bierzemy się za piłkę. Tworzymy obiekt piłka o nazwie pilka. Dajemy event Create, dajemy klocek Set mouse to <undefined> (nie pokazuj myszy), a znajdziemy go w zakładce extra w przedziale Other. W evencie Create piszemy kod:

start=true //tworz zmienna START i wartosci 1 
spd=6 //tworz zmienna SPD 
odl=0 //tworz zmienna ODL

W tym samym obiekcie dajemy event Step i piszemy kod:

if start=true //jezeli start=1, to: 
{ 
 x=paleta.x+12 //ustaw pozycje X na pozycje paletki X+12 
 y=paleta.y-8 //ustaw pozycje Y na pozycje paletki Y-8 
 if mouse_check_button_pressed(mb_left) //jezeli nacisnieto lewy przycisk myszy 
 { 
   start=false //zmien wartosc START na 0 
   direction=60+random(60) //ustaw losowy kierunek z przedzialu 60-120 
   speed=spd //ustaw predkosc na 6 (taka jest poczatkowa wartosc zmiennej SPD) 
 } 
} 
if x>=514 or x<=6 //jezeli pozycja X jest wieksza badz rowna 514 lub mniejsza (albo równa) 6, to: 
{ 
 hspeed*=-1.05 //odbij poziomo i pomnoz wartosc predkosci horyzontalnej 1.05 
} 
if y<=5 //jezeli pozycja Y jest mniejsza badz rowna 5, to: 
{ 
 vspeed*=-1.05 //odbij pionowo i pomnoz wartossc predkosci wertykalnej 1.05 
} 
odl=round(paleta.x-x+12) //ustaw zmienna ODL na zaokraglona wartosc pozycja X paletki a pozycja X pilki 
if collision_point(x,y+8,paleta,1,0) //jezeli pilka koliduje z paletka, to: 
{ 
 direction=90+1.8*odl //ustaw kierunek na 90+pomnozona przez 1.8 wartosc zmiennej ODL 
}

Zakończenie

Teraz wystarczy stworzyć rooma i wrzucić do niego piłkę i paletę.

informacje na temat funkcji, użytych w artykule: draw_sprite(), draw_set_color(), draw_line(), draw_text(), mouse_check_button_pressed(), random(), round(), collision_point()