-

sábado, 25 de octubre de 2014

TUTORIAL 3,Juego tipo snake

Sencillo ejemplo de como crear un juego tipo "SNAKE" .



Creamos los "SPRITES",en esta ocasiòm usaremos 8 y los denominaremos asì:

sprite_cabeza
sprite_cuerpo
sprite_cola
sprite_rat_arriba
sprite_rat_abajo
sprita_rat_izq
sprite_rat_der
sprite_seta



Ahora creamos 6 objetos que llamamos asì:

object_cabeza
object_cuerpo
object_cola
object_seta
object_rata
object_control


Vamos con el objetct_cabeza al que añadimos en el evento "create" el siguiente codigo:

speed=8;
direction=0;
image_angle=0;
x=room_width/2;
y=room_height/2;

En el evento "step" este otro:

instance_create(self.x,self.y,object_cuerpo);

En el evento "colision" con el object_seta este:

lives+=-1;
if lives<1 then {game_end()}
else
{room_restart()}

Ahora tanto en el evento "keyboard left pressed" y "keyboard right pressed" estos còdigos respectivamente:

//left

image_angle+=+5;
direction+=+5;

//right

image_angle+=-5;
direction+=-5;



Ahora vamos con el object_cuerpo al cuàl añadimos lo siguiente en el evetno "create":

alarm[0]=global.longitud;
image_angle=object_cabeza.image_angle;

Y en el evento "alarm 0" este otro:

instance_create(self.x,self.y,object_cola);
global.angulo=self.image_angle;
instance_destroy();



El object_cola va ha ser parecido,pero es un objeto diferente,en el "create" este còdigo:

alarm[0]=2;
image_angle=global.angulo;

Y en el evento "alarm 0" unicamente:

instance_destroy();



En el object_seta sòlo añadimos la cualidad de que use una subimagen aleatoria cuando lo creamos,ya que el evento de "colisiòn" se lo hemos dado al object_cabeza,insertamos el siguiente còdigo en el evento "create":

image_index=random(4);
image_speed=0;



Ahora vamos con el object_rata,bièn en el evento "outside room" hacemos como se visualiza en la imagen,le damos una "alarma" para que el objeto no se pierda en la pantalla ya que ninguno de los objetos que hemos usado en este tutorial es sòlido.













En el 
"create" creamos este còdigo:

speed=8;
dir=1+(irandom(3));
if dir=1 then {sprite_index=sprite_rat_abajo;direction=270;}
if dir=2 then {sprite_index=sprite_rat_arriba;direction=90;}
if dir=3 then {sprite_index=sprite_rat_izq;direction=180;}
if dir=4 then {sprite_index=sprite_rat_der;direction=0;}
alarm[0]=100+random(100);


En el evento"alarm 0" este otro còdigo:

dir=1+(irandom(3));
alarm[0]=100+random(100);
if dir=1 then {sprite_index=sprite_rat_abajo;direction=270;}
if dir=2 then {sprite_index=sprite_rat_arriba;direction=90;}
if dir=3 then {sprite_index=sprite_rat_izq;direction=180;}
if dir=4 then {sprite_index=sprite_rat_der;direction=0;}

En el evento"colision" con object_cabezaeste otro:

instance_create(random(room_width),random(room_height),object_rata);
instance_create(random(room_width),random(room_height),object_seta);
global.longitud+=+3;
score+=+10;
if score>global.proximo then 
{instance_create(random(room_width),random(room_height),object_rata);global.proximo*=2;global.nivel+=+1;lives+=+1;room_speed+=-1;}
instance_destroy()

Y en el evento "draw" unicamente este:

draw_sprite(sprite_index,-1,x,y);



Ahora vamos con el ùltimo objeto que hemos llamado object_control,en el evento "create" atribuimos los valores iniciales del juego de esta manera:

global.nivel=1;
global.proximo=50;
global.longitud=10;
global.angulo=0;
score=0;
lives=3;

Y en el evento "draw" mostramos al jugador dichos valores de esta otra forma:

draw_text(view_xview+130,view_yview+10,score);
draw_text(view_xview+10,view_yview+10,'score=');
draw_text(view_xview+150,view_yview+440,lives);
draw_text(view_xview+10,view_yview+440,'snakes=');
draw_text(view_xview+580,view_yview+440,global.nivel);
draw_text(view_xview+480,view_yview+440,'level=');

Ahora vamos a los valores de la "room" y añadimos este còdigo con esto evitamos que se cree màs de una vez el object_control evitando problemas ya que a este objeto le hemos añadido la caracterìstica de "persistent".






miércoles, 22 de octubre de 2014

TUTORIAL 2,juego tipo asteroids

Aquì un sencillo ejemplo de como crear un juego tipo "ASTEROIDS"con lo màs bàsico.

TUTORIAL 2,juego tipo asteroids

Como siempre primero crearemos los "SPRITES",unicamente usaremos 5 que llamaremos asì:

sprite_nave1
sprite_disp1
sprite_meteoro1
sprite_meteoro2
sprite_meteoro3

sprites bàsicos

Ahora crearemos 7 objetos que llamaremos asì:

object_nave
object_disp
object_parent_meteoros
object_meteoro_grande
object_meteoro_mediano
object_meteoro_pequeno
object_control


Bièn al objetct_nave le añadiremos las siguientes caracterìsticas:
en el evento "create" este còdigo:

image_speed=0.5;
image_angle=0;
direction=0;
friction=0.1;
x=room_width/2;
y=room_height/2;


el evento "colision" con el
object_parent_meteoros pondremos efectos de explosiòn,escribiremos este còdigo y destruiremos el objeto:

lives+=-1;
if lives<1 then game_end();
object_control.alarm[1]=10;



Gamemaker studio














Tanto en el evento "key press left" y "key press right" estos còdigos respectivamente:
//left

direction+=+4;
image_angle+=+4;


//right

direction+=-4;
image_angle+=-4;

en el evento "key press up" este

speed=8;

y en el evento "press space" este otro

instance_create(self.x,self.y,object_disp);




En el object_parent_meteoros sòlo pondremos un evento que tambièn deberemos atribuir al object_nave

Gamemaker studio





Ahora en los objetos llamados object_meteoro_grande,object_meteoro_mediano y object_meteoro_pequeno insertaremos este còdigo en el evento "create" y emparentaremos los 3 objetos con object_parent_meteoros:

image_index=0;
image_speed=0.1+random(0.4);
speed=4+random(4);
direction=random(360);


Y en el evento "colisiòn" con object_disp este otro còdigo para object_meteoro_grande:

score+=+50;
instance_create(object_meteoro_mediano,x,y);
instance_create(object_meteoro_mediano,x,y);
instance_destroy();

para object_meteoro_mediano:

score+=+50;
instance_create(object_meteoro_pequeno,x,y);
instance_create(object_meteoro_pequeno,x,y);
instance_destroy();

y para object_meteoro_pequeno unicamente:

score+=+50;
instance_destroy();


Vamos con el ùltimo objeto denominado object_control en el que insertaremos el siguiente còdigo en el evento "create":

background_index[0]=back_fondo1a;
score=0;
lives=3;
global.nivel=1;
alarm[0]=2;

y en el evento "alarm 0" este otro para animar el background de la pantalla de juego:

alarm[0]=2;
if background_index[0]=back_fondo1a then {background_index[0]=back_fondo1b;exit};
if background_index[0]=back_fondo1b then {background_index[0]=back_fondo1c;exit};
if background_index[0]=back_fondo1c then {background_index[0]=back_fondo1d;exit};
if background_index[0]=back_fondo1d then {background_index[0]=back_fondo1e;exit};
if background_index[0]=back_fondo1e then {background_index[0]=back_fondo1f;exit};
if background_index[0]=back_fondo1f then {background_index[0]=back_fondo1a;exit};


En el evento "alarm 1" este pequeño còdigo:

instance_create(0,0,object_nave);
En el evento "step" este otro còdigo:

if not instance_exists(object_parent_meteoros) then {
global.nivel+=+1;
lives+=+1;
{repeat(4+global.nivel);
instance_create(random(room_width),random(room_height),object_meteoro_grande);
}
}
if global.nivel>10 then game_end();



Por ùltimo en el evento "draw" insertaremos el còdigo para visualizar los valores del juego,nivel,puntos,etc.ademàs de hacer que se vea la segunda view de la "room" en forma de minimapa.

if view_current=0 then
{draw_rectangle(view_xview+530,view_yview,view_xview+640,view_yview+110,0);
draw_text(view_xview+20,view_yview+15,'Score:');
draw_text(view_xview+150,view_yview+15,score);
draw_text(view_xview+500,view_yview+440,'Level:');
draw_text(view_xview+600,view_yview+440,global.nivel);
}


Gamemaker studio















Las 6 subimàgenes del background en forma de gif animado.


background animado

Ahora para terminar vemos los valores de las dos "view" que hemos usado en la "room" que tiene 1280x960 pixels.

Gamemaker studio

Y ya tenemos la estructura bàsica de nuestro juego.

TUTORIAL 2,juego tipo asteroids




lunes, 20 de octubre de 2014

TUTORIAL 1,juego tipo Arkanoid

Este es un ejemplo muy apropiado para los/as que empiezan a usar la heramienta Gamemaker studio.


TUTORIAL 1,juego tipo Arkanoid

En primer lugar cargaremos o crearemos los "SPRITES",
usaremos 4 que llamaremos asì:

spr_raqueta1
spr_bola
spr_bloque_solido 
spr,bloque_basico


sprites_bàsicos

Seguidamente crearemos 5 objetos que llamaremos asì:

object_raqueta
object_bola
object_bloque_solido
object_bloque1
object_control


Bièn al objetct_raqueta le añadiremos las siguientes cualidades:
Gamemaker studio

Como se puede ver en el evento "press space key" la velocidad se la damos al object_bola desde este mismo objeto,yo le he dado una velocidad de 8 en direcciòn 110,ahora bièn en el evento "step" crearemos el siguiente còdigo:

if keyboard_check(vk_left) then 
{if not place_meeting(x-8,y,object_bloque_solido) then x+=-8;}
if keyboard_check(vk_right) then {
if not place_meeting(x+8,y,object_bloque_solido) then x+=+8;}




Ahora vamos a definir el object_bola de la siguiente forma en los eventos de "colisiòn" contra los bloques sòlidos igual que con la raqueta:


Gamemaker studio


En el evento "step" añadimos este còdigo:

if global.saca=0 then 
{x=object_raqueta1.x;y=object_raqueta1.y-12;exit;}
if not instance_exists(object_bloque1) then game_end();

y en el evento 
"outside room" añadimos este otro:

lives+=-1;
speed=0;
global.saca=0;
if lives<1 then game_end();



El object_bloque_solido lo dejamos tal cual y el object_bloque1 lo haremos asì:
en el evento "create" escribimos este còdigo para que cada ladrillo utilice una subimagen del sprite diferente:

image_speed=0;
image_index=random(5);


Gamemaker studio




Ahora vamos con el ùltimo objeto de este tutorial que hemos denominado object_control.


Gamemaker studio


















En el evento "create" este còdigo:

score=0;
lives=5;
global.nivel=1;

En el evento "room start" este otro:

global.saca=0;

Y en el evento "draw" es donde tras seleccionar fuente y color añadimos el còdigo que mostrarà algunos valores como,score,vidas y nivel.

draw_text(140,10,lives);
draw_text(20,10,'Lives x');
draw_text(140,720,score);
draw_text(20,720,'Score x');
draw_text(540,10,global.nivel);
draw_text(420,10,'Level x');

Por ùltimo atribuiremos a la "room" la siguiente configuraciòn:

TUTORIAL 1,juego tipo Arkanoid
y en settings dentro de la room añadimos este còdigo:

if not instance_exists(object_control) then instance_create(0,0,object_control);