Buenos dias/tardes/noches. Estoy haciendo un juego tipo Buscaminas solo por curiosidad de aprender a como hacer un juego de esos basicos, y realmente tengo casi todo listo, desde la generacion/posicion de las minas pero tengo un problema a la hora de registrar cuantas minas hay cerca

Si bien con la primera parte la tengo lista, es decir, el juego me calcula bien los 1 (como en la imagen) no encuentro la forma de que me registre 2 colisiones al mismo tiempo

El codigo para registrar cuantas minas hay cerca que yo uso es el siguiente (lo ejecuto por cada cuadricula)

[gml]//Create
cminas=0
minas = false[/gml]

[gml]//Step
if collision_circle (x+16,y+16,30,obj_mina,false,false) and minas = false
{cminas++
minas = true}[/gml]

[gml]//Draw

draw_text(x+16,y+16,cminas)[/gml]

Si bien el codigo es sencillo, lo explicare igualmente para retratar lo que pense a la hora de hacerlo. Con el Collision_circle registro cuantas minas hay cerca, pero como ese codigo solo almacena la ID y no la cantidad, solo me registra una. He estado pensando y ejecutando pero no me sirve nada para registrar 2 y 3 colisiones al mismo tiempo. Todos los comandos de Collision solo registran la Id de los objetos, no la cantidad

El codigo instance_nearest tambien es lo mismo y solo registra una

¿Alguna idea? Intente hacer todo por mi mismo, sin buscar tutoriales ni nada pero este ha sido algo que por mas que piense, no doy idea  :-[

El draw solo lo uso para saber si todo va bien.

Hola Momoni

El código dependerá de cómo creaste la cuadrícula, si usaste ojetos en la room o algún sistema de datos como la ds_grid o los arrays.

Para empezar, el código que calcula la cantidad de minas al rededor del bloque no debería ir en el Step Event porque eso hará que se ejecute en cada frame de tu juego, si corres el juego a 30fps, ese código se ejecutará 30 veces por segundo.
Basta con que se ejecute al inicio y ya, en el create event o en algún evento posterior (pero sólo 1 vez)

No hay forma de revisar múltiples colisiones sin hacer un loop, ya sea un "While", un "With" o un "For".

Pero como en tu caso sólo hay 8 bloques al rededor, lo puedes escribir a mano de la siguiente manera:
[gml]cminas = position_meeting(x-32,y-32,obj_mina) + position_meeting(x,y-32,obj_mina) + position_meeting(x+32,y-32,obj_mina) //Detecta la cantidad de minas de la fila de arriba
+ position_meeting(x-32,y,obj_mina) + position_meeting(x+32,y,obj_mina) //detecta colisión con minas en la fila del medio, a la izquierda y derecha del bloque
+ position_meeting(x-32,y+32,obj_mina) + position_meeting(x,y+32,obj_mina) + position_meeting(x+32,y+32,obj_mina) //detecta colisión en la fila de abajo[/gml]

Desconozco realmente si el código funciona separado por enter, pero tú lo pones todo en 1 misma línea en tu GM.

favor notar que estoy usando "position_meeting" en vez de "place_meeting", lo que hace la función es detectar si en un punto específico de la room se encuentra el objeto indicado, la detección de colisión la hace contra la colisión que tiene asignada el sprite, asumí que tu sprite mide 32x32 y la colisión también.
En caso de detectar colisión, devuelve "true" (que para Game Maker es 1), en caso contrario, devuelve "false" (que para GM es 0)

Entonces imagina que el bloque tiene una mina a la izquierda y una mina arriba a la derecha, la fórmula hará el siguiente cálculo:
cmina = 0 + 0 + 1
+ 1 + 0
+ 0 + 0 + 0

Y como resultado tendrás que ese bloque tiene 2 minas rodeandolo.

Saludos

Usar postion_meeting también me parece la mejor opción.
El código se puede hacer más compacto de esta forma
[gml]
cminas = 0; //cantidad de minas

for(i = x-32; i<=x+32; i+=32)
for(j = y-32; j<=y+32; j+=32)
{
    // No revisar la posición central
    if(i==x and j==y) continue;
   
    // Revisar las otras posiciones
    cminas += position_meeting(i, j, obj_mina);
}
[/gml]

El juego puede funcionar usando solo objetos, pero en algún punto creo que será necesario almacenar información en arrays o ds_grids.

Mil gracias. Funciona perfecto. Aun estoy aprendiendo y por ejemplo el "For" aun no lo domino ni se como implementarlo bien. Y las Arrays y Ds_grid apenas y se como crearlas pero no como usarlas, modificarlas y demas cosas jajaja. Pero seran cosas que con el tiempo, ire aprendiendo. Mil gracias  :)