	BATTLEFIELD... DI CHE SI TRATTA?
Battlefield dovr diventare un gioco di strategia e amministrazione, sullo stile dei colossi tipo Age of Empire o Warcraft.
Larga importanza sar data alla gestione del possedimento (costruzione di case, fabbisogno degli abitanti, gestione delle tasse ecc) ma anche all'esercito (addestramento, paga, armamento) e alle battaglie vere e proprie (scelta della mossa, strategia, ritirata).

La modalit sar pressoch testuale, ed i vari messaggi verrano inviati al giocatore mediante l'utilizzo di Personaggi Non Giocanti (d'ora in poi PNG) quali l'Araldo, il Consigliere, l'Armaiolo o il Tesoriere.


	REGOLE GENERALI: SINTASSI
Preferibilmente si utilizzi la sintassi standard ANSI.

La sintassi dovr essere il pi possibile omogenea nelle varie parti del programma. Gestire un progetto realizzato da pi persone senza mai incontrarsi fisicamente obbliga la fissazione di criteri comuni.

1) Linguaggio naturale:
per evitare confusione con le keywords del linguaggio, i nomi di variabili, funzioni o classi  preferito in italiano, con la possibilit di utilizzo di parole inglesi di uso comune nella programmazione (es: get, set, display, push, pop ecc).

2) Indentazioni:
4 spazi di indentazione. Facciamole, vi prego, e rendiamo il codice leggibile. Si inizia ad indentare fin dalla dichiarazione di variabili (quindi il corpo del main o di una qualsiasi funzione inizier dalla 5 colonna di ogni riga).

3) Nomi di variabili:
tutti in minuscolo, possibilmente di almeno 3 caratteri e con un senso compiuto che ne faccia intuire il significato. Nel caso di variabili globali fare attenzione a quelle gi esistenti per evitare doppioni (la lista sar nel modulo Global.cpp). Per i nomi con pi parole si usi l'underscore (_).
Esempio: nome_del_tizio

4) Nomi di funzioni o classi:
prima lettera in minuscolo, ogni iniziale di eventuali altre parole in maiuscolo e attaccata (niente underscore "_").  
Esempio: 
setNomeVillaggio()    --> OK
class villaggio{}     --> OK
ChiediNomeGiocatore() --> NO
set_Nome_Villaggio()  --> NO

5) Commenti
All'inizio di ogni file, racchiusi tra /* */ dovranno esserci il nome del file e una breve descrizione di quello che contiene e di come dovrebbe interagire col resto (se deve interagire) o di quali altri file include o, ancora, una breve specifica delle librerie particolari di cui pu necessitare. 
Alla dichiarazione di ogni variabile un breve commento (con //) a lato circa l'utilizzo.
Uguale commento nei passi chiave (come un ciclo while particolarmente intricato). I commenti alle funzioni o alle classi li farete in apposite specifiche (.txt) che mi invierete assieme al codice e che saranno di dominio pubblico come il resto.

6) System Call o librerie speciali
Non utilizzatele. Se ad esempio sviluppate con Linux non usatemi delle fork o delle write; se utilizzate Windows non mettetemi delle swap. Il codice dovr essere pulito e indipendente dall'architettura sottostante (io per primo ho solo Windows a casa).

7) Nomi di macro
Tutti in maiuscolo.
Esempio: ANNO

8) Nomi di file
Prima lettera maiuscola, il resto minuscolo. Ogni iniziale maiuscola. Tutto attaccato, no underscore (_). Estensione .cpp
Esempio: ClasseVillaggio.cpp

9) Varie ed eventuali
Non si vuole con tutte queste regole crocifiggere nessuno. Se ho dimenticato qualcosa (sicuramente) verr aggiunta a run time (tanto per restare in tema)... in linea di massima cerchiamo di ricordare che nella nostra testa ci siamo solo noi, ma il nostro codice deve essere letto da tutti.

