-

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".




No hay comentarios:

Publicar un comentario