Dibujando formas

Game Maker dispone de una amplia colección de funciones para dibujar diferentes formas. También hay otras funciones para dibujar texto (consulta el capítulo siguiente). Estas funciones de dibujo sólo se pueden usar en el evento draw ya que no tienen sentido si se colocan en otro evento. Debes tener en cuenta que las colisiones entre las instancias se determinan según sus sprites y sus máscaras de colisión y no según lo que cada instancia dibuja en la pantalla. Las funciones siguientes sirven para dibujar las formas básicas:

draw_clear(col) Pinta todo el cuarto del color especificado.
draw_clear_alpha(col,alpha) Pinta todo el cuarto del color especificado y con el factor de transparencia indicado (muy útil para superficies).
draw_point(x,y) Dibuja un punto en (x,y) en el color de dibujo actual.
draw_line(x1,y1,x2,y2) Dibuja una línea desde (x1,y1) hasta (x2,y2).
draw_rectangle(x1,y1,x2,y2,outline) Dibuja un rectángulo. outline indica si sólo debe dibujarse el borde (true) o si el rectángulo debe estar relleno (false).
draw_roundrect(x1,y1,x2,y2,outline) Dibuja un rectángulo redondeado. outline indica si sólo debe dibujarse el borde (true) o si el rectángulo debe estar relleno (false).
draw_triangle(x1,y1,x2,y2,x3,y3,outline) Dibuja un triángulo. outline indica si sólo debe dibujarse el borde (true) o si debe estar relleno (false).
draw_circle(x,y,r,outline) Dibuja un círculo con su centro en (x,y) y radio r. outline indica si sólo debe dibujarse el borde (true) o si debe estar relleno (false).
draw_ellipse(x1,y1,x2,y2,outline) Dibuja una elipse. outline indica si sólo debe dibujarse el borde (true) o si debe estar rellena (false).
draw_arrow(x1,y1,x2,y2,size) Dibuja una flecha desde (x1,y1) hasta (x2,y2). size indica el tamaño de la flecha en píxeles.
draw_button(x1,y1,x2,y2,up) Dibuja un botón. up indica si está pulsado (0) o no (1).
draw_path(path,x,y,absolute) Con esta función puedes dibujar el path indicado en el cuarto con su comienzo en la posición (x,y). Si absolute es true el path se dibuja en la posición en la que fue definido y los valores de x e y son ignorados.
draw_healthbar(x1,y1,x2,y2,amount,backcol,mincol,maxcol,direction,showback,showborder) Con esta función puedes dibujar una barra de vida (o una barra que indique cualquier otra cosa como poder, magia,…). Los parámetros x1, y1, x2 e y2 indican el área total de la barra. amount indica el porcentaje de la barra que debe estar relleno (debe estar entre 0 y 100). backcol es el color de fondo de la barra. mincol y maxcol indican el color cuando el porcentaje de llenado (parámetro amount) es 0 y 100 respectivamente. Para un porcentaje intermedio el color se interpola entre estos dos. Así puedes crear fácilmente una barra que vaya de verde a rojo, por ejemplo. direction es la dirección en la que la barra se dibuja: 0 significa que la barra está fijada a la izquierda, 1 a la derecha, 2 arriba y 3 abajo. Finalmente, showback indica si debe mostrarse una caja de fondo y showborder si la caja de fondo y la barra deben tener un borde negro.

Muchas de las funciones anteriores utilizan los colores y transparencia generales de dibujo que pueden ser cambiados con estas funciones:

draw_set_color(col) Indica el color que debe usarse para dibujar primitivas.
draw_set_alpha(alpha) Indica el factor de transparencia que debe usarse para dibujar primitivas. Debe estar comprendido  en el rango 0-1. 0 significa totalmente transparente y 1 totalmente opaco.
draw_get_color() Devuelve el color general de dibujo utilizado para dibujar primitivas.
draw_get_alpha()Devuelve el factor de transparencia general de dibujo utilizado para dibujar primitivas.

Hay un gran rango de colores predefinidos:

c_aqua
c_black
c_blue
c_dkgray
c_fuchsia
c_gray
c_green
c_lime
c_ltgray
c_maroon
c_navy
c_olive
c_purple
c_red
c_silver
c_teal
c_white
c_yellow

Sin embargo, también puedes usar las funciones siguientes para crear tus propios colores:

make_color_rgb(red,green,blue) Devuelve un color con los componentes indicados de rojo, verde y azul. Los valores indicados deben estar entre 0 y 255 (ambos inclusive).
make_color_hsv(hue,saturation,value) Devuelve un color con los componentes indicados de brillo, saturación y valor. Los valores indicados deben estar entre 0 y 255 (ambos inclusive).
color_get_red(col) Devuelve el componente de rojo del color.
color_get_green(col) Devuelve el componente de verde del color.
color_get_blue(col) Devuelve el componente de azul del color.
color_get_hue(col) Devuelve el componente de brillo del color.
color_get_saturation(col) Devuelve el componente de saturación del color.
color_get_value(col) Devuelve el componente de valor del color.
merge_color(col1,col2,amount) Devuelve un color resultante de mezclar los dos colores indicados. La mezcla se determina por el parámetro amount: un valor igual a 0 corresponde a col1, un valor de 1 corresponde a col2 y un valor intermedio hace que se mezclen los dos colores.

También puedes utilizar las siguientes funciones misceláneas:

draw_getpixel(x,y) Devuelve el color del píxel en la posición (x,y) del cuarto. Esta función no es muy rápida, así que úsala con cuidado.
screen_save(fname) Salva una imagen bmp de la pantalla en el archive especificado. Útil para crear screenshots.
screen_save_part(fname,x,y,w,h) Salva la parte de la pantalla indicada a un archive bmp.