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. 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.
- Hra ke stažení zde
- (Tuto hru jsem však vyrobil ve starší verzi GM 8.0. 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; }
http://alternativeto.net/software/game-maker-studio/