Trivia World Flags es un juego móvil disponible para Android y próximamente en Play Store, desarrollado también en Game Maker Studio 2. Es un juego tipo trivia de 4 opciones con preguntas divididas en 3 secciones: A qué país pertenece la bandera mostrada, cuál es su capital y en qué continente se encuentra dicho país.
Para desarrollar la lógica y funcionalidad del juego, creé un archivo JSON donde almacené cada país, con su respectiva bandera, su capital, continente y 3 respuestas falsas para cada sección.
Opté por usar condicionales de verificación, listas para almacenar las preguntas superadas y no repetirlas, la función randomize() para aleatorizar el juego entre otras funciones y mecánicas.
herramientas utilizadas
Motor: Game Maker Studio 2
Lenguaje: GML (Game Maker Language)
Diseño: Figma
Compilación: Java JDK y Android SDK
Testing: Android Studio – Virtual Machine
Otras características: API AdMob, JSON Files
Fragmento de código del proyecto
//Código para seleccionar aleatoriamente el país de cada pregunta del archivo .json
randomize()
if (global.leng == 2) {
global.pais = undefined;
if file_exists("csvjson.json") {
var json = "";
var file = file_text_open_read("csvjson.json");
while(file_text_eof(file) == false){
json += file_text_readln(file);
}
file_text_close(file);
global.pais = json_parse(json);
json = undefined;
}
}
else {
global.pais = undefined;
if file_exists("csvjson_en.json") {
var json = "";
var file = file_text_open_read("csvjson_en.json");
while(file_text_eof(file) == false){
json += file_text_readln(file);
}
file_text_close(file);
global.pais = json_parse(json);
json = undefined;
}
}
i = ds_list_find_value(global.lista, 0);
global.bandera = (global.pais[i][$ "bandera"]);
global.p1=string(global.pais[i][$ "p1"]);
global.p2=string(global.pais[i][$ "p2"]);
global.p3=string(global.pais[i][$ "p3"]);
global.p4=string(global.pais[i][$ "p4"]);
global.cp1=string(global.pais[i][$ "cp1"]);
global.cp2=string(global.pais[i][$ "cp2"]);
global.cp3=string(global.pais[i][$ "cp3"]);
global.cp4=string(global.pais[i][$ "cp4"]);
global.ct1=string(global.pais[i][$ "ct1"]);
global.ct2=string(global.pais[i][$ "ct2"]);
global.ct3=string(global.pais[i][$ "ct3"]);
global.ct4=string(global.pais[i][$ "ct4"]);
ds_list_delete(global.lista, 0);
[
{
"p1": "Canadá",
"p2": "Estados Unidos",
"p3": "Perú",
"p4": "Austria",
"cp1": "Ottawa",
"cp2": "Toronto",
"cp3": "Nueva York",
"cp4": "Montreal",
"ct1": "América del Norte",
"ct2": "Europa",
"ct3": "Centro América",
"ct4": "Asia",
"bandera": "canada"
},
{
"p1": "Estados Unidos",
"p2": "Canadá",
"p3": "Malasia",
"p4": "Liberia",
"cp1": "Washington",
"cp2": "Los Ángeles",
"cp3": "Nueva York",
"cp4": "Miami",
"ct1": "América del Norte",
"ct2": "Europa",
"ct3": "Centro América",
"ct4": "Oceanía",
"bandera": "usa"
},
{
"p1": "México",
"p2": "Italia",
"p3": "Irán",
"p4": "Hungría",
"cp1": "Ciudad de México",
"cp2": "Cancún",
"cp3": "Monterrey",
"cp4": "Miami",
"ct1": "América del Norte",
"ct2": "América del Sur",
"ct3": "Centro América",
"ct4": "Asia",
"bandera": "mexico"
},
{
"p1": "Antigua y Barbuda",
"p2": "Trinidad y Tobago",
"p3": "Angola",
"p4": "Malaui",
"cp1": "Saint John's",
"cp2": "Saint George's",
"cp3": "Basseterre",
"cp4": "Kingstown",
"ct1": "Centro América",
"ct2": "Oceanía",
"ct3": "América del Norte",
"ct4": "África",
"bandera": "antigua"
},
{
"p1": "Bahamas",
"p2": "Nicaragua",
"p3": "Botsuana",
"p4": "Palaos",
"cp1": "Nassau",
"cp2": "La Habana",
"cp3": "Puerto Príncipe",
"cp4": "Roseau",
"ct1": "Centro América",
"ct2": "Oceanía",
"ct3": "América del Sur",
"ct4": "Asia",
"bandera": "bahamas"
},
{
"p1": "Barbados",
"p2": "Belice",
"p3": "Ruanda",
"p4": "Tuvalu",
"cp1": "Bridgetown",
"cp2": "Tegucigalpa",
"cp3": "Kingston",
"cp4": "Castries",
"ct1": "Centro América",
"ct2": "Oceanía",
"ct3": "América del Norte",
"ct4": "África",
"bandera": "barbados"
},
{
"p1": "Belice",
"p2": "Costa Rica",
"p3": "Camboya",
"p4": "Laos",
"cp1": "Belmopán",
"cp2": "Basseterre",
"cp3": "Managua",
"cp4": "Roseau",
"ct1": "Centro América",
"ct2": "Oceanía",
"ct3": "América del Norte",
"ct4": "África",
"bandera": "belice"
},
{
"p1": "Costa Rica",
"p2": "Filipinas",
"p3": "Puerto Rico",
"p4": "Corea del Norte",
"cp1": "San José",
"cp2": "Limón",
"cp3": "La Habana",
"cp4": "San Juan",
"ct1": "Centro América",
"ct2": "América del Norte",
"ct3": "América del Sur",
"ct4": "Europa",
"bandera": "costarica"
},
{
"p1": "Cuba",
"p2": "Taiwán",
"p3": "Puerto Rico",
"p4": "Samoa",
"cp1": "La Habana",
"cp2": "San José",
"cp3": "Holguín",
"cp4": "San Juan",
"ct1": "Centro América",
"ct2": "América del Norte",
"ct3": "América del Sur",
"ct4": "Oceanía",
"bandera": "cuba"
},
{
"p1": "Dominica",
"p2": "Jamaica",
"p3": "San Vicente Y Las Granadinas",
"p4": "Mozambique",
"cp1": "Roseau",
"cp2": "Basseterre",
"cp3": "Belmopán",
"cp4": "San Juan",
"ct1": "Centro América",
"ct2": "América del Norte",
"ct3": "Asia",
"ct4": "Oceanía",
"bandera": "dominica"
},
{
"p1": "República Dominicana",
"p2": "Panamá",
"p3": "Puerto Rico",
"p4": "Tonga",
"cp1": "Santo Domingo",
"cp2": "San Juan",
"cp3": "San Salvador",
"cp4": "La Habana",
"ct1": "Centro América",
"ct2": "América del Norte",
"ct3": "América del Sur",
"ct4": "Oceanía",
"bandera": "republicadominicana"
}
]
//Código para asignar una de las cuatro opciones a la opción correcta
randomize();
act = true;
check = false;
global.acierto = false;
lugar = irandom_range(1,4);
if (lugar == 1 ){
if (place_free(720,1440)){
x=720;
y=1440-8;
}
else {
instance_destroy();
instance_create_depth(0,0,-1,obj_op1);
}
}
if (lugar == 2 ){
if (place_free(720,1672)){
x=720;
y=1672-8;
}
else {
instance_destroy();
instance_create_depth(0,0,-1,obj_op2);
}
}
if (lugar == 3 ){
if (place_free(720,1904)){
x=720;
y=1904-8;
}
else {
instance_destroy();
instance_create_depth(0,0,-1,obj_op3);
}
}
if (lugar == 4 ){
if (place_free(720,2136)){
x=720;
y=2136-8;
}
else {
instance_destroy();
instance_create_depth(0,0,-1,obj_op4);
}
}
with (obj_sel){
sprite_index = spr_box;
}