Newsgroup: it.comp.lang.c
Titolo: Controlli da effettuare per tris/forza 4

Salve,
dal subject potete capire che:
a) sono un niubbo;
b) la domanda non riguarda il linguaggio C nello specifico, sebbene 
voglia implementare la soluzione in questo linguaggio.
Volendomi fare del male, ho provato a scrivere un programmino che simuli 
un tris (i due giocatori inseriscono la loro mossa a turni). La base 
dati è una matrice 3x3 di enum {VUOTO, PED_GIOC1, PED_GIOC2}.
La difficoltà sta ovviamente nel rilevare la condizione per cui uno dei 
due giocatori fa tris. Vorrei usare una soluzione la più flessibile 
possibile (niente "if" giganteschi del tipo if((tris[0][0] == tris[0][1] 
== tris[0][2]) || (tris[1][0] == tris[1][1] == tris[1][2]) || eccetera), 
anche perché vorrei adattarlo al caso del forza 4, e se usassi questo 
metodo le condizioni crescerebbero in maniera inaccetabile.
Potreste darmi qualche suggerimento? Esiste un modo non masochista per 
risolvere il problema?
Ciau!
-- 
We've all heard that a million monkeys banging on a million typewriters
will eventually reproduce the entire works of Shakespeare. Now, thanks
to the internet, we know this is not true.      -- Robert Silensky
~> 
http://scriverefantascienza.blogspot.com/

 risolvere il problema?
Mi auto-rispondo (per favore ditemi se trovate soluzioni migliori/più 
eleganti): faccio 8 for negli 8 versi possibili a partire dalle 
coordinate dell'ultima mossa, sommando a due a due il numero di pedine 
dello stesso giocatore nella stessa direzione. Non è difficile 
aggiustarlo ad un eventuale "forza 4" o "forza n". Dovrebbe funzionare 
perché, se c'è stato un tris/quadris/pentis/enn-is, è stato originato 
proprio dall'ultima pedina posizionata.
Altre proposte? :)
ciau!
ps: la domanda non è fine a sé stessa, è che devo preparare il primo 
esame di informatica... ;)


> risolvere il problema?
onestamente non ho letto con molta attenzione il tuo post ma mi č venuto in 
mente che sul sito del mio Prof c'č il codice per il gioco del Tris 
http://www.luigilamberti.it/Software/Tris/Tris.htm
 vedi un pņ se ti pņ 
essere utile.
Ciao
Gianluca 

esame di informatica... ;)
Allora ti lascio il piacere di scrivere il codice.

 Allora ti lascio il piacere di scrivere il codice.
Uhm... penso che mi accontenterò di aver capito come fare... insomma,
dopo le 300+ righe di controlli per scacchi (validità di tutte le mosse
e promozioni in base al tipo di pedina) credo di essermi esercitato
abbastanza :-P. Ciò che più mi interessa è il modus operandi e la
filosofia di programmatori più esperti -- leggasi: voi :).
Già che ci sono: per scacchi, come organizzereste una (molto)
primordiale intelligenza artificiale per giocare contro il computer?
Avevo pensato a una cosa del tipo: assegna un punteggio ad ogni pedina
(1 ai pedoni, 3 ad alfieri/cavallo, 5 alla torre, 9 alla regina) e
genera NUMMOSSE mosse casuali valide, per ognuna calcola il relativo
punteggio_virtuale [differenza tra il punteggio del computer e quello
del giocatore] e confrontalo con il punteggio corrente, poi scegli la
mossa corrispondente al massimo valore di
(punteggio_virtuale-punteggio_corrente). Ma mi sa di poco efficiente.
Esiste un ng più specifico dove poter parlare di questi problemi non
strettamente legati al linguaggio utilizzato, ché così la smetto di
spammare qui sopra? :)
grazie ancora ;^)


 spammare qui sopra? :)
Probabilmente it.comp.programmare. Il manifesto lo trovi qui: 
http://www.news.nic.it/manif/it.comp.programmare.html
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com