Trivia World Flags – Juego Android (GML)

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;
	
}