Ciao a tutti, con tutto l'impegno che potevo metterci ieri ho cappellato anche l'ultimo esame di programmazione java che potevo dare questa sessione di esame perciò in seguito riporto la traccia d'esame, nella speranza che qualcuno possa aiutarmi a capire come risolverlo. grazie

Esercizio: laser and mirrors

Scrivere un programma che accetti in input da riga di comando il nome di un file di testo contenente la rappresentazione di una partita di laser and mirrors in corso e il colore del giocatore di turno. Il programma deve analizzare la partita e determinare se il giocatore di turno ha vinto.
L. and m. è il rappresentante di una vasta famiglia di giochi che si sviluppano attorno allo stesso tema.
In questo caso due giocatori (il bianco in fondo al tavoliere e il nero in cima) manovrano due emettitori laser e spostano/ruotano gli specchi sul tavoliere al fine di colpire l’emettitore dell’avversario.
Il campo di gioco è un quadrato di NxN caselle, gli emettitori possono essere posizionati in corrispondenza delle N colonne.
Quando da un emettitore parte il raggio questo sarà in direzione del tavoliere, parallelo alle colonne del campo di gioco e centrato rispetto alla colonna in cui è posizionato l’emettitore.
Il raggio può essere riflesso dagli specchi (inclinati di 45 gradi) che si trovano sul tavoliere. Se alla fine del proprio percorso il raggio colpisce l’emettitore dell’avversario il giocatore di turno vince.

Il file di testo che rappresenta il tavoliere usa il carattere ‘B’ per rappresentare l’emettitore del bianco, il carattere ‘N’ per rappresentare l’emettitore del nero, il carattere ‘.’ per rappresentare una posizione libera nel tavoliere e i caratteri ‘/’ e ‘\’ per rappresentare gli specchi.
Esempio.

Lanciando il programma con:

java Esercizio tavoliere.txt bianco
dove tavoliere.txt contiene:


codice:
    N   
/.\...\.
........
\......\
...../..
..\./...
/....../
..\.\...
......./
B

Il programma dovrà visualizzare:

il bianco vince


Ora prima di mettermi a programmare, ho seguito un mio ragionamento per l'implementazione dei metodi, vi riporto le mie idee nella speranza che qualcuno possa darmi una mano, e magari mi sappia dare dei suggerimenti utili...


- cercoInizioBianco(): sulla stessa colonna di B cerco la presenza del carattere N e se non lo trovo cerco il primo carattere / o \ prima aumentando l'indice delle righe, poi se non trovo diminuendo l'indice delle righe. Se lo trovo lo contrassegno con una X.
- perocorsoBianco(): partendo da X, guardo prima sulla stessa riga aumentando l'indice delle colonne, poi se non trovo un carattere uguale a / o \ guardo sempre sulla stessa riga ma diminuisco le colonne, se trovo uno dei due caratteri lo contrassegno con X e quello precedentemente contrassegnato con X lo faccio diventare un +. E cosi via..
Ora come faccio a mettere insieme i due metodi, in modo che mi arrivi dall'altra parte il bianco...ma sopratutto sono buone le mie idee?

grazie