Algoritmo per controllare le mosse legali nel gioco da tavolo Cluedo

3

Sto realizzando un gioco da tavolo Clue (do) in Java per migliorare le mie capacità di programmazione. Ho lavorato molto finora, ma ora sono bloccato a trovare un algoritmo per assicurarmi che un giocatore possa fare una determinata mossa.

Disegna rapidamente come è organizzato:

  • Superclass GameTile
  • Sottoclassi per ogni tipo di camera (RoomTile, DefaultTile, StartTile e EsternoTile)

L'obiettivo è mostrare ai giocatori tutte le possibili mosse che un giocatore può fare quando lancia i dadi. Ho trovato un modo per guardare "intorno" al giocatore per vedere quali tessere può raggiungere, ma il problema è vedere se un giocatore può entrare nella stanza attraverso una porta (o se il giocatore può raggiungere quella tessera predefinita), rimane.

Tutti i quadrati che puoi vedere presentano una delle classi precedentemente citate:

  • Nero: esterno
  • bianco / rosa: predefinito
  • lightblue: stanze (le porte sono all'interno della stanza contrassegnate con booleano, nessuna rappresentazione visiva ancora)
  • colorato: avvia le tessere

Qualcuno ha un'idea per risolvere questo?

    
posta JC97 29.10.2016 - 15:53
fonte

1 risposta

6

Il problema che hai è che stai cercando di usare il quadrato di destinazione per determinare il percorso che il giocatore dovrebbe prendere per raggiungerlo, ma in realtà non è come si fa un algoritmo di ricerca del percorso. Ci sono molti modi per farlo a seconda di come vuoi ottimizzare le tue cose, ma qui c'è un semplice algoritmo che si adatta alle tue necessità per un gioco basato su tessere.

  1. Contrassegna tutta la tua bacheca eccetto la posizione del giocatore irraggiungibile dalla posizione del giocatore.
  2. In base al punteggio dei dadi, inizia un'esplorazione. Inizi una ricerca con la profondità X, essendo X il punteggio dei tuoi dadi. Ogni passaggio consiste di:
    • Se la profondità viene superata, torna e non fare nulla
    • Per tutte le tessere adiacenti, controlla se lo spostamento è legale e non già taggato raggiungibile. Se lo è, tagga come raggiungibile e pianifica una chiamata di esplorazione con profondità - 1.

Tuttavia, c'è una trappola, è che è necessario iterare in una ampiezza della moda, non in profondità -Prima.

Alla fine avrai la tua tavola taggata con tutte le tessere raggiungibili dalla tua posizione con un dato punteggio di dadi. Puoi evidenziarli. Il giocatore può cliccarne uno e teletrasportarti lì. In una prima versione, non è necessario creare il percorso:)

Se vuoi costruire il percorso per visualizzarlo o qualcosa del genere, durante l'esplorazione tagghi ogni tessera con la tessera precedente (quella che l'ha scoperta). Quindi, quando muovi il mouse su una tessera, crei l'elenco di tessere che vi conducono.

    
risposta data 29.10.2016 - 16:50
fonte

Leggi altre domande sui tag