PDA

Visualizza la versione completa : [java] Gioco del gomoku --- help


YuZzoLo
05-02-2005, 17:51
Il go-moku un gioco astratto che si gioca comunemente sul tavoliere del go (detto goban, formato da 19x19 intersezioni). Spesso non tutto il tavoliere utilizzato ma solo una sua zona, comunque di forma quadrata.
Due giocatori si alternano ponendo pedine del proprio colore nelle intersezioni del goban. Il primo a creare una sequenza orizzontale, verticale o diagonale di esattamente cinque pedine vince (se quindi una mossa crea una sequenza di pi di cinque pedine il giocatore di turno non vince e il gioco continua).
Scrivere un programma che accetti in input da riga di comando il nome di un file di testo che deve contenere la rappresentazione di un goban in cui in corso una partita di go-moku e visualizzi in output lo stato della partita (in corso, il bianco ha vinto, il nero ha vinto, patta; il caso in cui ci siano sequenze vincenti per entrambi i giocatori da considerarsi una situazione non valida e va segnalata).
La dimensione del campo di gioco (comunque quadrato) pu essere variabile con un lato massimo di 19 incroci.
La rappresentazione del campo di gioco formato da una sequenza di N (N <= 19) righe ognuna di N caratteri. Il carattere '.' usato per rappresentare una intersezione vuota, il carattere 'O' indica un pezzo bianco e il carattere 'X' indica un pezzo nero.

Esempio: a fronte del goban nella seguente rappresentazione

.O..XX.XX..
..........O
..O..O.....
.....O.O...
.X...OX....
.XX..OX....
.O...OX....
.....OX..O.
......X....
..O........
...........



Allora il problema a questo punto il seguente.
Il mio programma riesce a trovare le sequenze di 5 considerandole vincenti... l'unico problema e' che ad esempio nello schema qua sopra mi conta una vincita doppia per la X e altre due vincite per O

Le vencite per il O le considera 1 a partire dalla posizione 3-5 scendendo in basso
una a partire dalla posizione 7 -5 verso l'alto

Analogamente per le X conta due vittorie.


Come posso risolvere questo problema???
(non mi serve che scriviate il codice)

non so dove sbattere la testa
anzi si :dh: :dh: :dh:

Andrea1979
05-02-2005, 18:12
esegui il check solo in un verso per ciascuna direzione. tu esegui il check in entrambi i versi per ciascuna direzione. Saluti

Loading