2D Classic Puzzle es un videojuego móvil para Android y próximamente disponible en Play Store, desarrollado en el motor Game Maker Studio, con su lenguaje GML (Game Maker Studio Language).
Este proyecto representó un reto lógico para resolver la creación y resolución del orden de los bloques del rompecabezas, usando secuencias aleatorias de números enteros, listas, y condicionales de verificación.
herramientas utilizadas
Motor: Game Maker Studio 2
Lenguaje: GML (Game Maker Language)
Diseño: Adobe Photoshop
Compilación: Java JDK y Android SDK
Testing: Android Studio – Virtual Machine
Otras características: API AdMob
Fragmento de código del proyecto
//Código para generar las 9 posiciones de los cubos del rompecabezas al azar
randomize()
//Valor a1
r = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr = ds_list_find_value(global.lista_uno,r);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r);//borra ese valor de la lista
a1 = nr;//Da el valor seleccionado
//Valor a2
r2 = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr2 = ds_list_find_value(global.lista_uno,r2);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r2);//borra ese valor de la lista
a2 = nr2;//Da el valor seleccionado
//Valor a3
r3 = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr3 = ds_list_find_value(global.lista_uno,r3);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r3);//borra ese valor de la lista
a3 = nr3;//Da el valor seleccionado
//Valor a4
r4 = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr4 = ds_list_find_value(global.lista_uno,r4);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r4);//borra ese valor de la lista
a4 = nr4;//Da el valor seleccionado
//Valor a5
r5 = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr5 = ds_list_find_value(global.lista_uno,r5);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r5);//borra ese valor de la lista
a5 = nr5;//Da el valor seleccionado
//Valor a6
r6 = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr6 = ds_list_find_value(global.lista_uno,r6);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r6);//borra ese valor de la lista
a6 = nr6;//Da el valor seleccionado
//Valor a7
r7 = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr7 = ds_list_find_value(global.lista_uno,r7);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r7);//borra ese valor de la lista
a7 = nr7;//Da el valor seleccionado
//Valor a8
r8 = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr8 = ds_list_find_value(global.lista_uno,r8);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r8);//borra ese valor de la lista
a8 = nr8;//Da el valor seleccionado
//Valor a9
r9 = floor(random(ds_list_size(global.lista_uno)));//escoge una posición al azar de la lista
nr9 = ds_list_find_value(global.lista_uno,r9);//determina el valor en esa posición
ds_list_delete(global.lista_uno,r9);//borra ese valor de la lista
a9 = nr9;//Da el valor seleccionado
global.comb_uno = string(a1) + string(a2) + string(a3) + string(a4) + string(a5) + string(a6) + string(a7) + string(a8) + string(a9);
global.comb_uno = string(global.comb_uno);
global.lista_tres = ds_list_create();
ds_list_add(global.lista_tres,a1)
ds_list_add(global.lista_tres,a2)
ds_list_add(global.lista_tres,a3)
ds_list_add(global.lista_tres,a4)
ds_list_add(global.lista_tres,a5)
ds_list_add(global.lista_tres,a6)
ds_list_add(global.lista_tres,a7)
ds_list_add(global.lista_tres,a8)
ds_list_add(global.lista_tres,a9)
///Creación de piezas A
//Espacio 1
if a1 = 1 {
instance_create (obj_e1_a.x,obj_e1_a.y,obj_pv_a);
}
if a1 = 2 {
instance_create (obj_e1_a.x,obj_e1_a.y,obj_pa_a);
}
if a1 = 3 {
instance_create (obj_e1_a.x,obj_e1_a.y,obj_pr_a);
}
//Espacio 2
if a2 = 1 {
instance_create (obj_e2_a.x,obj_e2_a.y,obj_pv_a);
}
if a2 = 2 {
instance_create (obj_e2_a.x,obj_e2_a.y,obj_pa_a);
}
if a2 = 3 {
instance_create (obj_e2_a.x,obj_e2_a.y,obj_pr_a);
}
//Espacio 3
if a3 = 1 {
instance_create (obj_e3_a.x,obj_e3_a.y,obj_pv_a);
}
if a3 = 2 {
instance_create (obj_e3_a.x,obj_e3_a.y,obj_pa_a);
}
if a3 = 3 {
instance_create (obj_e3_a.x,obj_e3_a.y,obj_pr_a);
}
//Espacio 4
if a4 = 1 {
instance_create (obj_e4_a.x,obj_e4_a.y,obj_pv_a);
}
if a4 = 2 {
instance_create (obj_e4_a.x,obj_e4_a.y,obj_pa_a);
}
if a4 = 3 {
instance_create (obj_e4_a.x,obj_e4_a.y,obj_pr_a);
}
//Espacio 5
if a5 = 1 {
instance_create (obj_e5_a.x,obj_e5_a.y,obj_pv_a);
}
if a5 = 2 {
instance_create (obj_e5_a.x,obj_e5_a.y,obj_pa_a);
}
if a5 = 3 {
instance_create (obj_e5_a.x,obj_e5_a.y,obj_pr_a);
}
//Espacio 6
if a6 = 1 {
instance_create (obj_e6_a.x,obj_e6_a.y,obj_pv_a);
}
if a6 = 2 {
instance_create (obj_e6_a.x,obj_e6_a.y,obj_pa_a);
}
if a6 = 3 {
instance_create (obj_e6_a.x,obj_e6_a.y,obj_pr_a);
}
//Espacio 7
if a7 = 1 {
instance_create (obj_e7_a.x,obj_e7_a.y,obj_pv_a);
}
if a7 = 2 {
instance_create (obj_e7_a.x,obj_e7_a.y,obj_pa_a);
}
if a7 = 3 {
instance_create (obj_e7_a.x,obj_e7_a.y,obj_pr_a);
}
//Espacio 8
if a8 = 1 {
instance_create (obj_e8_a.x,obj_e8_a.y,obj_pv_a);
}
if a8 = 2 {
instance_create (obj_e8_a.x,obj_e8_a.y,obj_pa_a);
}
if a8 = 3 {
instance_create (obj_e8_a.x,obj_e8_a.y,obj_pr_a);
}
//Espacio 9
if a9 = 1 {
instance_create (obj_e9_a.x,obj_e9_a.y,obj_pv_a);
}
if a9 = 2 {
instance_create (obj_e9_a.x,obj_e9_a.y,obj_pa_a);
}
if a9 = 3 {
instance_create (obj_e9_a.x,obj_e9_a.y,obj_pr_a);
}
//Código para verificar si el rompecabezas está completado igual a la referencia
if string (global.comb_uno) == string (global.comb_dos) && global.centro == false {
global.revisar = true;
global.completo = true;
audio_stop_sound(snd_clock);
with (obj_clock) {instance_destroy()};
//Reiniciar figuras
if alarm[0] <0 {
alarm[0] = 15;
}
if global.sonar == true {
instance_create (obj_e5_a.x,obj_e5_a.y,obj_ea_c);
instance_create (obj_e5_b.x,obj_e5_b.y,obj_eb_c);
}
}
//Códogo para la creación de bloques en el rompeabezas
//Espacio 1
if b1 = 1 {
instance_create (obj_e1_b.x,obj_e1_b.y,obj_pv_b);
}
if b1 = 2 {
instance_create (obj_e1_b.x,obj_e1_b.y,obj_pa_b);
}
if b1 = 3 {
instance_create (obj_e1_b.x,obj_e1_b.y,obj_pr_b);
}
//Espacio 2
if b2 = 1 {
instance_create (obj_e2_b.x,obj_e2_b.y,obj_pv_b);
}
if b2 = 2 {
instance_create (obj_e2_b.x,obj_e2_b.y,obj_pa_b);
}
if b2 = 3 {
instance_create (obj_e2_b.x,obj_e2_b.y,obj_pr_b);
}
//Espacio 3
if b3 = 1 {
instance_create (obj_e3_b.x,obj_e3_b.y,obj_pv_b);
}
if b3 = 2 {
instance_create (obj_e3_b.x,obj_e3_b.y,obj_pa_b);
}
if b3 = 3 {
instance_create (obj_e3_b.x,obj_e3_b.y,obj_pr_b);
}
//Espacio 4
if b4 = 1 {
instance_create (obj_e4_b.x,obj_e4_b.y,obj_pv_b);
}
if b4 = 2 {
instance_create (obj_e4_b.x,obj_e4_b.y,obj_pa_b);
}
if b4 = 3 {
instance_create (obj_e4_b.x,obj_e4_b.y,obj_pr_b);
}
//Espacio 5
if b5 = 1 {
instance_create (obj_e5_b.x,obj_e5_b.y,obj_pv_b);
}
if b5 = 2 {
instance_create (obj_e5_b.x,obj_e5_b.y,obj_pa_b);
}
if b5 = 3 {
instance_create (obj_e5_b.x,obj_e5_b.y,obj_pr_b);
}
//Espacio 6
if b6 = 1 {
instance_create (obj_e6_b.x,obj_e6_b.y,obj_pv_b);
}
if b6 = 2 {
instance_create (obj_e6_b.x,obj_e6_b.y,obj_pa_b);
}
if b6 = 3 {
instance_create (obj_e6_b.x,obj_e6_b.y,obj_pr_b);
}
//Espacio 7
if b7 = 1 {
instance_create (obj_e7_b.x,obj_e7_b.y,obj_pv_b);
}
if b7 = 2 {
instance_create (obj_e7_b.x,obj_e7_b.y,obj_pa_b);
}
if b7 = 3 {
instance_create (obj_e7_b.x,obj_e7_b.y,obj_pr_b);
}
//Espacio 8
if b8 = 1 {
instance_create (obj_e8_b.x,obj_e8_b.y,obj_pv_b);
}
if b8 = 2 {
instance_create (obj_e8_b.x,obj_e8_b.y,obj_pa_b);
}
if b8 = 3 {
instance_create (obj_e8_b.x,obj_e8_b.y,obj_pr_b);
}
//Espacio 9
if b9 = 1 {
instance_create (obj_e9_b.x,obj_e9_b.y,obj_pv_b);
}
if b9 = 2 {
instance_create (obj_e9_b.x,obj_e9_b.y,obj_pa_b);
}
if b9 = 3 {
instance_create (obj_e9_b.x,obj_e9_b.y,obj_pr_b);
}