Juer, ¿he llegado a leer ángulos?
Si que os gusta a algunos complicaros la vida
A ver, ¿conoces la posición inicial de la reina no? Supongamos que está en la posición [i,j]
Pues a partir de ahí, todas las casillas [i+1 ... 7, j] [0...i-1,j] son posiciones válidas. Ese es el movimiento horizontal. Ídem para el movimiento vertical para la j.
Por supuesto estoy suponiendo un tablero de 8x8, pero todo esto es aplicable a un tablero de cualquier tamaño.
Para las diagonales la cosa está en unir los dos movimientos con todas sus combinaciones, las casillas válidas serán
[i+1 ...7, j+1 ... 7]
[0...i-1, 0... j-1]
[i+1...7, 0 ... j-1]
[0 ... i-1, j+1 ... 7]
para hacer las 4 diagonales.
Lo único que has de hacer es una matriz de 8x8 y marcar esas casillas válidas, para luego imprimir cada casilla del tablero de forma correcta, o bien puedes calcularlo "on the fly" cuando pulses la opción de imprimir. Lo primero ocupa más memoria pero es más cómodo a la hora de imprimir (sólo tienes que recorrer la matriz e imprimir '-' o '?' según la casilla esté marcada o no) Pero tienes que acordarte de borrar la matriz de nuevo al mover la reina.
Y si quieres hacer la mayor burrada de tu vida, busca sobre algoritmos de búsqueda en espacios de estados, que es una rama de la intelligencia artificial, pero te aconsejo que NO te molestes tanto para una práctica así
De hecho una BEE es la otra cosa que te recomendaba eTc_84,(lo de recorrer las casillas colindantes y todo eso) lo que pasa que sin seguir ninguna optimización (poda o heurística)