Herní doupě

Vytvořil jsem počítačovou hru – můžeš taky!

gamemaker Jak už jsem psal v minulém článku, Game maker je program určený pro tvorbu her. V tomto článku nebudu popisovat funkce programu ale jeho potenciál. Vytvořil jsem v GameMakeru hru zvanou Bulánci Copy bez znalosti programování. Moje hra však napodobuje již existující hru Bulánci, vytvořena českou firmou SleepTeam Labs. Velká část grafiky i samotná myšlenka hry byla převzata z originální hry za účelem lepšího srovnání. Můžete tak posoudit vy o kolik je moje hra Bulánci Copy horší nebo lepší  proti profesionální hře Bulánci. Bulánci Copy si můžete stáhnout v plně upravitelné verzi. Vyráběl jsem ji víc jak 50 hodin. Možná si říkáte že to není žádná senza hra, na druhou stranu byla to moje první „skutečná“ hra. Další hru už plánuji mnohem velkolepější která bude spustitelná přímo na webu v prohlížeči, s originální grafikou i nápadem. Pokud tě GameMaker zaujal, stačí to jen zkusit a uvidíš sám! Mohu ti už jen popřát hodně zdaru.

  • Ke stažení hra pro Windows 7/8/10 na Google: Bulánci Copy.exe
  • Ke stažení hra pro Windows 7/8/10 na uloz.to: Bulánci Copy opensorce GM
  • Ke stažení upravitelná verze: Bulánci Copy – opensorce (Tuto hru jsem však vyrobil ve starší verzi GM 8.0 která byla aji pirátská verze. Proto v jiné verzi GM nepůjde pustit i když ikonky a kód studovat můžete v libovolné verzi.) Přesto si myslím že v cizím výtvoru se stejně těkžo orientuje a většinou je lepší spíše dojít na své řešení kterému budete rozumět.

Moje hra – Bulánci OpenSorce – GameMaker vyrobena mnou (Agentem) v programu Game maker

Originální hra – Bulánci vyrobeny firmou SleepTeam Labs

 

GML kód hry Bulánci Copy

if (bulanek.otoceni_strely = 1)
sprite_index=strela_left;
if (bulanek.otoceni_strely = 2)
sprite_index=strela_up;
if (bulanek.otoceni_strely = 3)
sprite_index=strela_right;

if (bulanek.otoceni_strely = 4)
sprite_index=strela_down;

instance_create(bulanek.x, bulanek.y, obj_ripple);
part_particles_create(global.particles, bulanek.x, bulanek.y, global.partTypeConfetti, 32);
part_particles_create(global.particles,bulanek.x,bulanek.y - 32, global.partTypeMoreConfetti, 32);

bulanek.x = -500; bulanek.y = -50;
premistit = 1;
zbran2_nabita = 0;

zbran2_nabita = 1;
zasobnik = 5;

bulanek.x = obj_transport2.x; bulanek.y = obj_transport2.y;

if zasobnik >= 1
{
sound_play(eploze_brokovnice);
}

smer_chuze = choose(2 , 3 , 4);

//nastaví sprote podle proměné zásobník
if 0 == bulanek.zasobnik
sprite_index=img_naboje0;
if 1 == bulanek.zasobnik
sprite_index=img_naboje1;
if 2 == bulanek.zasobnik
sprite_index=img_naboje2;
if 3 == bulanek.zasobnik
sprite_index=img_naboje3;
if 4 == bulanek.zasobnik
sprite_index=img_naboje4;
if 5 == bulanek.zasobnik
sprite_index=img_naboje5;

if (bulanek.zbran2_nabita = 0)
sprite_index=img_pistol;
if (bulanek.zbran2_nabita = 1)
sprite_index=img_brokovnice;

if premistit = 1
{
if random (120) < 2
{
vyber_misto = choose(1 , 2 , 3, 4, 5,6);

if (vyber_misto = 1)
{bulanek.x = 650; bulanek.y = 400;}

if (vyber_misto = 2)
{bulanek.x = 550; bulanek.y = 300;}

if (vyber_misto = 3)
{bulanek.x = 200; bulanek.y = 400;}

if (vyber_misto = 4)
{bulanek.x = 230; bulanek.y = 200;}

if (vyber_misto = 5)
{bulanek.x = 600; bulanek.y = 220;}

if (vyber_misto = 6)
{bulanek.x = 240; bulanek.y = 250;}

premistit = 0;
instance_create(bulanek.x, bulanek.y, obj_ripple);
obj_random.skore_protivnik += 1;

}
}
if zasobnik = 0
{
if random (100) < 2
{bulanek.zasobnik = 5;}
}

if zasobnik = 0 && zbran2_nabita = 1
zbran2_nabita = 0;

//Jestliže stisknete dvě klávesy, panáček se nikam nepohybuje a nastaví směr

// up-right
if ((zbran2_nabita = 0) && keyboard_check(vk_up) && keyboard_check(vk_right))
{
x+=0; y-=0;
image_speed=0.3;
sprite_index=zeleny_right;
smer = 3;
}
else if ((zbran2_nabita = 1) && keyboard_check(vk_up) && keyboard_check(vk_right))
{
x+=0; y-=0;
image_speed=0.3;
sprite_index=zeleny2_right;
smer = 3;
}
//up-left 2x

else if ((zbran2_nabita = 0) && keyboard_check(vk_up) && keyboard_check(vk_left))
{
x-=0; y-=0;
image_speed=0.3;
sprite_index=zeleny_left;
smer = 1;
}
else if ((zbran2_nabita = 1) && keyboard_check(vk_up) && keyboard_check(vk_left))
{
x-=0; y-=0;
image_speed=0.3;
sprite_index=zeleny2_left;
smer = 1;
}

// right- down 2x

else if ( (zbran2_nabita = 0) &&keyboard_check(vk_down) && keyboard_check(vk_right))
{
x+=0; y+=0;
image_speed=0.3;
sprite_index=zeleny_right;
smer = 3;
}

else if ( (zbran2_nabita = 1) &&keyboard_check(vk_down) && keyboard_check(vk_right))
{
x+=0; y+=0;
image_speed=0.3;
sprite_index=zeleny2_right;
smer = 3;
}
// left-down 2x

else if ((zbran2_nabita = 0) && keyboard_check(vk_down) && keyboard_check(vk_left))
{
x-=0; y-=0;
image_speed=0.3;
sprite_index=zeleny_left_stop;
smer = 1;
}

else if ((zbran2_nabita = 1) && keyboard_check(vk_down) && keyboard_check(vk_left))
{
x-=0; y-=0;
image_speed=0.3;
sprite_index=zeleny2_left;
smer = 1;
}
//Jestliže stisknuta klávesa, panáček se pohybuje do směru

//up
else if ((zbran2_nabita = 0) && keyboard_check(vk_up))
{
x+=0; y-=4;
sprite_index=zeleny_top;
smer = 2;
}

else if ((zbran2_nabita = 1) && keyboard_check(vk_up))
{
x+=0; y-=4;
sprite_index=zeleny2_top;
smer = 2;
}
//left

else if ((zbran2_nabita = 0) && keyboard_check(vk_left))
{
x-=4; y-=0;
image_speed=0.3;
sprite_index=zeleny_left;
smer = 1;
}

else if ((zbran2_nabita = 1) && keyboard_check(vk_left))
{
x-=4; y-=0;
image_speed=0.3;
sprite_index=zeleny2_left;
smer = 1;
}

// down
else if ((zbran2_nabita = 0) && keyboard_check(vk_down))
{
x+=0; y+=4;
image_speed=0.3;
sprite_index=zeleny_down;
smer = 4;
}
else if ((zbran2_nabita = 1) && keyboard_check(vk_down))
{
x+=0; y+=4;
image_speed=0.3;
sprite_index=zeleny2_down;
smer = 4;
}
//right

else if (zbran2_nabita = 0) && keyboard_check(vk_right)
{
x+=4; y+=0;
image_speed=0.3;
sprite_index=zeleny_right;
smer = 3;
}

else if (zbran2_nabita = 1) && keyboard_check(vk_right)
{
x+=4; y+=0;
image_speed=0.3;
sprite_index=zeleny2_right;
smer = 3;
}

//jestliže pustím hráč klávesu .. změní se jeho sprite na stojícího panáčka

if ((zbran2_nabita = 0) && keyboard_check_released(vk_left))
sprite_index=zeleny_left_stop;

if ((zbran2_nabita = 1) && keyboard_check_released(vk_left))
sprite_index=zeleny2_left_stop;
if ((zbran2_nabita = 0) && keyboard_check_released(vk_up))
sprite_index=zeleny_top_stop;

if ((zbran2_nabita = 1) && keyboard_check_released(vk_up))
sprite_index=zeleny2_top_stop;
if ((zbran2_nabita = 0) && keyboard_check_released(vk_right))
sprite_index=zeleny_right_stop;

if ((zbran2_nabita = 1) && keyboard_check_released(vk_right))
sprite_index=zeleny2_right_stop;
if ((zbran2_nabita = 0) && keyboard_check_released(vk_down))
sprite_index=zeleny_down_stop;

if ((zbran2_nabita = 1) && keyboard_check_released(vk_down))
sprite_index=zeleny2_down_stop;
//jestliže space -1 zasobnik a nastavení otočení střely
if (keyboard_check_pressed(vk_space) && bulanek.smer == 1 && bulanek.zasobnik > 0 && bulanek.zbran2_nabita = 0)
{
action_create_object_motion(obj_strela,x-18,y+12,40,180);
bulanek.zasobnik -= 1;
bulanek.otoceni_strely = 1;
}
if (keyboard_check_pressed(vk_space) && bulanek.smer == 1 && bulanek.zasobnik > 0 && bulanek.zbran2_nabita = 1)
{
action_create_object_motion(obj_strela,x-18,y-8,40,180);
action_create_object_motion(obj_strela,x-18,y+2,40,180);
action_create_object_motion(obj_strela,x-18,y+12,40,180);
action_create_object_motion(obj_strela,x-18,y+24,40,180);
action_create_object_motion(obj_strela,x-18,y+34,40,180);
bulanek.zasobnik -= 1;
bulanek.otoceni_strely = 1;
}

if (keyboard_check_pressed(vk_space) && bulanek.smer == 2 && bulanek.zasobnik > 0 && bulanek.zbran2_nabita = 0)
{
action_create_object_motion(obj_strela,x-8,y-18,40,90);
bulanek.zasobnik -= 1;
bulanek.otoceni_strely = 2;

}

if (keyboard_check_pressed(vk_space) && bulanek.smer == 2 && bulanek.zasobnik > 0 && bulanek.zbran2_nabita = 1)
{
action_create_object_motion(obj_strela,x-28,y-18,40,90);
action_create_object_motion(obj_strela,x-18,y-18,40,90);
action_create_object_motion(obj_strela,x-8,y-18,40,90);
action_create_object_motion(obj_strela,x+8,y-18,40,90);
action_create_object_motion(obj_strela,x-18,y-18,40,90);
bulanek.zasobnik -= 1;
bulanek.otoceni_strely = 2;
}

if (keyboard_check_pressed(vk_space) && bulanek.smer == 3 && bulanek.zasobnik > 0 && bulanek.zbran2_nabita = 0)
{
action_create_object_motion(obj_strela,x+20,y-8,40,360);
bulanek.zasobnik -= 1;
bulanek.otoceni_strely = 3;
}

if (keyboard_check_pressed(vk_space) && bulanek.smer == 3 && bulanek.zasobnik > 0 && bulanek.zbran2_nabita = 1)
{
action_create_object_motion(obj_strela,x+20,y-28,40,360);
action_create_object_motion(obj_strela,x+20,y-18,40,360);
action_create_object_motion(obj_strela,x+20,y-8,40,360);
action_create_object_motion(obj_strela,x+20,y+8,40,360);
action_create_object_motion(obj_strela,x+20,y+18,40,360);
bulanek.zasobnik -= 1;
bulanek.otoceni_strely = 3;
}

if (keyboard_check_pressed(vk_space) && bulanek.smer == 4 && bulanek.zasobnik > 0 && bulanek.zbran2_nabita = 0)
{
action_create_object_motion(obj_strela,x+10,y+20,40,270);
bulanek.zasobnik -= 1;
bulanek.otoceni_strely = 4;
}
if (keyboard_check_pressed(vk_space) && bulanek.smer == 4 && bulanek.zasobnik > 0 && bulanek.zbran2_nabita = 1)
{
action_create_object_motion(obj_strela,x-10,y+20,40,270);
action_create_object_motion(obj_strela,x+0,y+20,40,270);
action_create_object_motion(obj_strela,x+10,y+20,40,270);
action_create_object_motion(obj_strela,x+20,y+20,40,270);
action_create_object_motion(obj_strela,x+30,y+20,40,270);
bulanek.zasobnik -= 1;
bulanek.otoceni_strely = 4;
}

// jestliže se srazím s hranicí místnosti

if (collision_circle(x, y, 20, obj_hranice, false, true) && keyboard_check(vk_left))
x+=6; y-=0;

if (collision_circle(x, y, 20, obj_hranice, false, true) && keyboard_check(vk_right))
x-=6; y-=0;
if (collision_circle(x, y, 20, obj_hranice, false, true) && keyboard_check(vk_down))
{
x-=0; y-=6;
}

if (collision_circle(x, y, 20, obj_hranice, false, true) && keyboard_check(vk_up))
{
x-=0; y+=6;
}

// jestliže se srazí s protivníkem

if (collision_circle(x, y, 20, obj_protivnik, false, true) && keyboard_check(vk_left))
x+=0; y-=0;

if (collision_circle(x, y, 20, obj_protivnik, false, true) && keyboard_check(vk_right))
x-=0; y-=0;
if (collision_circle(x, y, 20,obj_protivnik, false, true) && keyboard_check(vk_down))
{
x-=0; y-=0;
}

if (collision_circle(x, y, 20,obj_protivnik, false, true) && keyboard_check(vk_up))
{
x-=0; y+=0;
}

if premistit_zleho = 1
{
if random (120) < 2
{
vyber_misto = choose(1 , 2 , 3, 4, 5,6);

if (vyber_misto = 1)
{obj_protivnik.x = 650; obj_protivnik.y = 400;}

if (vyber_misto = 2)
{obj_protivnik.x = 600; obj_protivnik.y = 300;}

if (vyber_misto = 3)
{obj_protivnik.x = 200; obj_protivnik.y = 400;}

if (vyber_misto = 4)
{obj_protivnik.x = 230; obj_protivnik.y = 200;}

if (vyber_misto = 5)
{obj_protivnik.x = 600; obj_protivnik.y = 220;}

if (vyber_misto = 6)
{obj_protivnik.x = 240; obj_protivnik.y = 250;}
premistit_zleho = 0;
instance_create(obj_protivnik.x, obj_protivnik.y, obj_ripple);
obj_random.skore_bulanek += 1;

}
}

// nastaví sprite podle směru chůze
if ((obj_protivnik.smer_chuze) = 1)
{
sprite_index=nepritel_right;
motion_set(0, 4);
}

if ((obj_protivnik.smer_chuze) = 2)
{
sprite_index=nepritel_up;
motion_set(90, 4);
}
if ((obj_protivnik.smer_chuze) = 3)
{
sprite_index=nepritel_left;
motion_set(180, 4);
}

if ((obj_protivnik.smer_chuze) = 4)
{
sprite_index=nepritel_down;
motion_set(270, 4);
}

// nastaví strele2 smer a sprite

if ((bulanek.zbran2_nabita0 = 0) && (obj_protivnik.smer_chuze = 1))
{
motion_set(0, 20); //prava 0
sprite_index=strela_right;
}

if ((bulanek.zbran2_nabita0 = 1) && (obj_protivnik.smer_chuze = 1))
{
motion_set(0, 20);
sprite_index=strela2_right;
}

if ((bulanek.zbran2_nabita0 = 0) &&(obj_protivnik.smer_chuze = 2)) // up 90
{
motion_set(90, 20);
sprite_index=strela_up;
}

if ((bulanek.zbran2_nabita0 = 1) &&(obj_protivnik.smer_chuze = 2)) // up 90
{
motion_set(90, 20);
sprite_index=strela2_up;
}

if ((bulanek.zbran2_nabita0 = 0) && (obj_protivnik.smer_chuze = 3))
{
motion_set(180, 20);
sprite_index=strela_left;
}
if ((bulanek.zbran2_nabita0 = 1) && (obj_protivnik.smer_chuze = 3))
{
motion_set(180, 20);
sprite_index=strela2_left;
}

if ((bulanek.zbran2_nabita0 = 0) && (obj_protivnik.smer_chuze = 4))
{
motion_set(270, 20);
sprite_index=strela_down;
}
if ((bulanek.zbran2_nabita0 = 1) && (obj_protivnik.smer_chuze = 4))
{
motion_set(270, 20);
sprite_index=strela2_down;
}