-

jueves, 22 de enero de 2015

TUTORIAL 5,juego shooter con mirilla 1

Tutorial juego tipo mirilla con el "mouse" vol.1


Tutoriales gamemaker

Juego shooter con lo màs bàsico para jugar con el "mouse".
Creamos 11 sprites y les damos los nombramos:

sprite_enemy1
sprite_enemy1_run
sprite_enemy1_die
sprite_enemy1_shoot
sprite_copter_fly
sprite_copter_shoot
sprite_copter_die
sprite_huella
sprite_ammo
sprite_mirilla
sprite_shoot


Tutoriales gamemaker

Creamos unicamente 6 objetos que seràn los siguientes:

object_mirilla
object_control
object_shoot
object_enemy1
object_copter
object_ammo



El object_mirilla serà con el que interactuaremos en el juego y le añadimos este còdigo en el evento "step":

x=mouse_x;y=mouse_y;
depth=-2000;

y en el evento "global left button"este otro:

if global.ammo<1 then exit;
if instance_exists(object_shoot) then exit;
instance_create(x,y,object_shoot);global.ammo+=-1;




El object_control serà el que determina el desarrollo del juego, 
Tutoriales gamemaker

le añadimos este còdigo en el evento "create":

health=100;
score=0;
global.ammo=100;
global.nivel=1;
global.pasar=500;
global.dif=60;
alarm[0]=100+random(global.dif);
alarm[1]=100+random(global.dif);
alarm[11]=200;

en los eventos de alrma añadiremos los siguientes còdigos correpondientes a cada una de ellas:
"alarm 0":
alarm[0]=100+random(global.dif);
instance_create(random(view_xview+640),350+random(50),object_enemy1);
"alarm 1":
alarm[1]=100+random(global.dif);
instance_create(random(view_xview+640),350+random(50),object_enemy1);
"alarm 2":
alarm[2]=150+random(global.dif);
instance_create(random(view_xview+640),random(200)+50,object_copter);
"alarm 3":
alarm[3]=50+random(global.dif);
instance_create(random(view_xview+640),350+random(50),object_enemy1);
y este otro en "alarm 11":
alarm[11]=200;
instance_create(random(view_xview+640),(view_yview+300)+40,object_ammo);

ahora insertamos este en el evento"step":

if score>global.pasar then {
health+=+25;
if health>100 then health=100;
global.pasar*=2;global.nivel+=+1;
if global.nivel=2 then alarm[2]=200;
if global.nivel>2 then alarm[3]=200;}

y este en el evento "draw":

draw_set_colour(c_green);
draw_set_font(font0);
draw_text(80,10,global.ammo);
draw_sprite(sprite_ammo,0,40,30);
draw_healthbar(220,20,500,40,health,c_black,c_red,c_lime,1,1,1);
draw_text(510,10,'HEALTH');
draw_text(140,440,score);draw_text(20,440,'score');
draw_text(600,440,global.nivel);draw_text(500,440,'stage');




El object_shoot tendrà un depth igual al object_mirilla o algo superior y unicamente tendrà este còdigo en el evento 
"animation end":  

instance_destroy();




En el object_enemy1 insertamos lo siguiente en el evento "create"

alarm[0]=12;
sprite_index=sprite_enemy1;
amplia=0.5;
energia=10;

y destruiremos el object_shoot en el evento de "colisiòn" con èste como podemos ver en la imagen:


Tutoriales gamemaker

e insertaremos este còdigo despuès en el mismo evento:

energia+=-1;
if energia<1 then 
{sprite_index=sprite_enemy1_die;image_speed=0.5;score+=+10;}

en los eventos de alrma añadimos siguientes còdigos:
"alarm 0":
sprite_index=sprite_enemy1_run;
alarm[1]=5;
"alarm 1":
if sprite_index=sprite_enemy1_die then exit;
if sprite_index=sprite_enemy1_run then {amplia+=0.1;depth+=-0.1;alarm[1]=5;}
if amplia>2 then {sprite_index=sprite_enemy1_shoot;alarm[2]=5;}
"alarm 2":
if sprite_index=sprite_enemy1_die then exit;
alarm[2]=5;health+=-1
"alarm 3":
instance_destroy();

en el evento "animation end" este còdigo:


if  sprite_index=sprite_enemy1_die then {image_speed=0;image_index=3;alarm[3]=10;}

y en el evento "draw" este otro:

draw_sprite_ext(sprite_index,-1,x,y,amplia,amplia,0,c_white,1);



En el object_copter insertamos lo siguiente en el evento "create":

alarm[0]=12;
sprite_index=sprite_copter_fly;
amplia=0.1;
energia=20;

el evento de "colisiòn" con object_shoot serà igual que en el object_enemy1 salvo que el còdigo añadido sera asì:

energia+=-1;
if energia<1 ten
{sprite_index=sprite_copter_die;image_speed=0.5;score+=+10;}

los eventos de alrma tambièn seràn parecidos:
"alarm 0":
if sprite_index=sprite_copter_fly then {amplia+=0.1;alarm[0]=5;}
if amplia>2 then {sprite_index=sprite_copter_shoot;alarm[1]=5;}
"alarm 1":
if sprite_index=sprite_copter_die then exit;
alarm[1]=5;health+=-1;

en el evento "animation end" este:

if  sprite_index=sprite_copter_die then {instance_destroy()}

y en el evento "draw" este:

draw_sprite_ext(sprite_index,-1,x,y,amplia,amplia,0,c_white,1);




el ùltimo objeto de este tutorial es el object_ammo al que añadiremos este còdigo en el evento "create"

dir=irandom(2);speed=8;
if dir=0 then direction=0;
if dir=1 then direction=180;
visible=false;
alarm[0]=10;

en el evento "alarm 0" unicamente:

visible=true;

en el evento "colision" con object_mirilla este:


if dir=3 or visible=false then exit;
global.ammo+=+100;dir=3;move_towards_point(40,30,16);

y el evento "outside room" lo hacemos como podemos ver en la imajen:


Tutoriales gamemaker


Por ùltimo muestro las propiedades de la "room" usada 640x480 y un grid de 8x8.



Tutoriales gamemaker




viernes, 2 de enero de 2015

TUTORIAL 4,crear un juego tipo PAC-MAN

Como empezar a crear un juego tipo "pac-man" .



Creamos los "SPRITES",que van ha ser 11 y le damos sus correspondientes nombres:

sprite_pac_left
sprite_pac_right
sprite_pac_up
sprite_pac_down
sprite_wall
sprite_punto_basico
sprita_punto_especial
sprite_live
sprite_bonus
sprite_ghost
sprite_pac_die



Ahora vamos a crear los objetos que seràn 7 y los denominamos de la siguiente forma:

object_pac
object_wall
object_punto
object_punto_especial
object_bonus
object_ghost
object_control



Bueno vamos al tema empezaremos con los dos objetos màs complejos que son el objetct_pac y el object_ghost al objetct_pac en el evento "create" insertamos este còdigo:

sprite_index=sprite_pac_right;
hspeed=0;
vspeed=0;
estado=1;
alarm[0]=50;

tendrà estas cualidades: 



el còdigo en el evento "step" serà asì:

if keyboard_check_direct(vk_right) then 
{
if not place_meeting(x+4,y,object_wall) then 
{sprite_index=sprite_pac_right;
vspeed=0;
hspeed=4;}
}
if keyboard_check_direct(vk_left) then 
{
if not place_meeting(x-4,y,object_wall) then 
{sprite_index=sprite_pac_left;
vspeed=0;
hspeed=-4;}
}
if keyboard_check_direct(vk_up) then 
{
if not place_meeting(x,y-4,object_wall) then 
{sprite_index=sprite_pac_up;
vspeed=-4;
hspeed=0;}
}
if keyboard_check_direct(vk_down) then 
{
if not place_meeting(x,y+4,object_wall) then 
{sprite_index=sprite_pac_down;
vspeed=4;
hspeed=0;}
}
en el evento "draw" insertamos este còdigo:

draw_set_alpha(1);
if estado=1 then draw_set_alpha(0.2+random(0.3));
draw_sprite(sprite_index,-1,x,y);
draw_set_alpha(1);

en el evento "animation end" insertamos este otro:

if estado=2 then 
{image_speed=0;image_index=4;}

el evento "alarm 0" unicamente esto:
estado=0;

y en el evento "alarm 1" un còdigo seguido de un "jump to start position".

sprite_index=sprite_pac_right;
image_speed=1;
hspeed=0;
vspeed=0;
estado=1;
alarm[0]=50;

en el evento "colision"  con el object_wall este còdigo:

hspeed=0;
vspeed=0;


y en el evento "colision"  con el object_ghost este otro:

if other.bulnerable>0 then exit
if estado>0 then exit
sprite_index=sprite_pac_die;
image_speed=0.2;
hspeed=0;
vspeed=0;
estado=2;
lives+=-1;
alarm[1]=20;

y hemos acabado con el object_pac ahora vamos con el object_ghost.







en el evento "create" le damos al objeto 4 posibles direciones y le añadimos este còdigo:

bulnerable=0;image_speed=0;image_index=0;

en el evento "alarm 0" le añadimos este otro seguido de un "jump to start position".

bulnerable=0

en el evento "step" insertamos lo siguiente:


if bulnerable>0 then bulnerable+=-1
  if (hspeed == 0)
  {
    if (random(3)<1 && place_free(x-4,y))
      { hspeed = -4; vspeed = 0;}
    if (random(3)<1 && place_free(x+4,y))
      { hspeed =  4; vspeed = 0;}
  }
  else
  {
    if (random(3)<1 && place_free(x,y-4))
      { hspeed = 0; vspeed = -4;}
    if (random(3)<1 && place_free(x,y+4))
      { hspeed = 0; vspeed =  4;}
  } 
if direction=0 then image_index=0;
if direction=180 then image_index=1;
if direction=90 then image_index=2;
if direction=270 then image_index=3;

en el evento "colision" con el object_pac este còdigo:

if bulnerable>0 then {x=-1000;alarm[0]=100;score+=+100;hspeed=0;vspeed=0;}


y en el evento "colision" con el object_wall estas cualidades:


en el evento "draw" este còdigo:

draw_set_alpha(1);
if bulnerable>0 then draw_set_alpha(0.2+random(0.3));
draw_sprite(sprite_ghost,image_index,x,y);
draw_set_alpha(1);


El object_wall serà unicamente asì,le atribuimos la cualidad de sòlido.



El object_punto tendrà unicamente un evento de "colisiòn" con el object_pac donde añadiremos lo siguiente:

score+=+10;
instance_destroy();

y el object_punto_especial serà parecido lo emparentamos con object_punto y en el evento de "colisiòn" con el object_pac hacemos que la direciòn del object_ghost se revierta.



y su còdigo serà este:

score+=+10;
if instance_exists(object_ghost) then object_ghost.bulnerable=200;
instance_destroy();






el object_bonus serà asì:



en el evento "alarm 0" esto:

visible=true;

y en el evento "alarm 1" eso otro:

object_control.alarm[0]=100+random(100);
instance_destroy();


en el evento "colisiòn" con object_pac este còdigo:

score+=+500;
object_control.alarm[0]=100+random(100);
instance_destroy();

y en el evento "colisiòn" con object_wall este otro:


instance_create(random(room_width),random(room_height),object_bonus);
instance_destroy();



ahora vamos con el ùltimo objeto denominado object_control,bièn en el evento "create" añadimos esto:

score=0;
lives=3;
global.nivel=1;
alarm[0]=100;

en el evento "alarm 0" esto:

instance_create(random(room_width),random(room_height),object_bonus);

y en el evento "step" esto:

if not instance_exists(object_punto) then game_end();

ahora en el evento "draw" dibujamos en la pantalla el nùmero de vidas y demàs valores del juego.




draw_set_font(font0);
draw_set_colour(c_yellow);
draw_text(140,560,score);
draw_text(15,560,'score x');
draw_text(550,5,global.nivel);
draw_text(425,5,'stage x');



Nuestra "room" tiene unas dimensiones de 608x608 y un "grid" de 8x8 y ya tenemos la estructura elemental de nuestro juego.