Di seguito è riportato un esempio pratico che implementa il gioco del TRIS utilizzando il linguaggio C++. Non ci sono i commenti nel codice poiché è a scopo didattico e vorrei che il lettore si sforzasse di comprendere il funzionamento testando direttamente il codice oppure parte di esso. Non ho implementato i controlli per la verifica del punteggio e del vincitore, ma questo potrebbe essere un buon motivo, per il lettore, per migliorare il codice.
#include <iostream>
#include <sstream>
using namespace std;
string tris[3][3];
int cell[2];
string int_to_str(int x) {
stringstream ss;
ss << x;
return ss.str();
}
void loadMatrix(string tris[3][3]){
int counter=0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
tris[i][j]="-" + int_to_str(counter++);
}
}
}
void showMatrix(string tris[3][3]){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
cout<<tris[i][j];
if(j==2) cout<<"\n";
}
}
}
int findPos(string tris[3][3], int pos){
int find=0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(tris[i][j]=="-" + int_to_str(pos)){
cell[0]=i;
cell[1]=j;
find=1;
}
}
}
return find;
}
int setMatrix(string tris[3][3], int pos, string symbol){
int set=0;
if(findPos(tris,pos)==1){
tris[cell[0]][cell[1]]="-"+symbol;
set=1;
}
else cout<<"La posizione indicata non è disponibile!\n";
return set;
}
int main() {
string player1, player2, run, symbol;
run="Y";
int hand, pos;
loadMatrix(tris);
showMatrix(tris);
hand=1;
do{
switch(hand){
case 1:
symbol="X";
do{
cout<<"Giocatore 1 gioca, indica posizione: ";
cin>>pos;
}while(!setMatrix(tris,pos,symbol));
hand=2;
showMatrix(tris);
break;
case 2:
symbol="O";
do{
cout<<"Giocatore 2 gioca, indica posizione: ";
cin>>pos;
}while(!setMatrix(tris,pos,symbol));
hand=1;
showMatrix(tris);
break;
}
cout<<"Vuoi continuare ? (Y/N): ";
cin>>run;
}while(run=="Y");
return 0;
}