Pregunta

Estoy construyendo un juego de Boggle en VB .NET. En este momento, mis dados son como una matriz 2D (0,0 0,1), etc ...

Lo que yo quiero que haga es, como estoy escribiendo la palabra, que se pone de manifiesto en la pizarra con el sub button(x,y).doclick la que resalta. Ahora mismo mi aplicación se encuentra la primera letra, a continuación, sigue tratando cada letra hasta que se cumple la condición 8 esquina (es decir, se neighbored a la última), pero esto no siempre funciona. Si hay decir 2 "G" 's en el tablero y quiero que la de abajo, esto no funcionará. ¿Puede alguien dar un ejemplo de psuedocode de lo que debe suceder. Me han confundido por casi 6 horas tratando de resolver esto. Gracias

¿Fue útil?

Solución

Si he entendido bien, dada una cadena que desea resaltar una trayectoria a través de los dados que coincide con la cadena. A veces hay varias opciones posibles, por lo que añadir una letra pueden cambiar por completo lo que se puso de relieve. Puede ser un buen método para mantener los resultados de la subcadena anterior, por lo que no tiene que empezar de nuevo. A continuación, una cosa razonable para hacerlo sería la de calcular todos los caminos posibles.

La respuesta para una cadena dada s sería una lista de rutas, donde un camino es una lista de coordenadas de la cuadrícula. Cada camino es algo que razonablemente podría poner de relieve, por lo que sólo resalta la primera. Al agregar una carta a la cadena, a encontrar caminos que puede expandir y eliminar los que no se puede expandir.

Me temo que no sé cómo escribir código VB. Has solicitado que pseudocódigo, aquí hay algunos áspera pseudocódigo pitón similar en su lugar. Estoy codificación de la red Boggle como una lista de 16 elementos. La función de vecinos (x) devuelve una lista de las posiciones vecinas (excepto para casos de borde que va a ser [x-1, x + 1, x-4, x + 4]).

def firstLetter(typed):
  answer = []
  for pos in range(16): if grid[pos]==typed: answer += [pos]
  return answer

def addletter(partialanswer, typed):
  answer2 = []
  for partial in partialanswer:
      for neighbor in neighbors(partial[-1]):
          if grid[neighbor]==typed: 
             # partial+[neighbor] is a list. answer2 is a list of such lists.
             answer2 += partial + [neighbor]
  return answer2

Si el jugador escribe "Go", por ejemplo, entonces (A) tipos de jugadores "g", código llama firstLetter ( "g") y crear una lista de "respuesta" de las posiciones en la parrilla que tienen una "g" en ellos. Resaltar, por ejemplo, la primera. (B) los tipos de jugador "o", código llama addletter (respuesta "o") y crear una lista de las rutas en la red que dicen "ir". Una vez más, poner de relieve la primera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top