using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Azzera
{
class Scacchiera
{
private const int MAXCOLONNA = 3;
private const int ELEMENTI = 9;
private const int MAXVALORE = 5;
private int[] tabella = null;
private int mani;
public Scacchiera()
{
tabella
= new int[ELEMENTI
];
Random dado
= new Random
();
for (int i=0; i < ELEMENTI; i++)
{
tabella[i] = dado.Next(MAXVALORE + 1);
}
mani = 0;
}
public override string ToString()
{
StringBuilder esito
= new StringBuilder
(250
);
for (int i = 0; i < ELEMENTI; i++)
{
esito.AppendFormat("|{0,4}", tabella[i]);
if (((i + 1) % MAXCOLONNA) == 0)
esito.Append("|\n");
}
return esito.ToString();
}
public int Mano()
{
return mani;
}
public bool Mossa(char lettera)
{
int riga=0, colonna=0;
switch (char.ToLower(lettera))
{
case 'q':
riga = 0;
colonna = 0;
break;
case 'w':
riga = 0;
colonna = 1;
break;
case 'e':
riga = 0;
colonna = 2;
break;
case 'a':
riga = 1;
colonna = 0;
break;
case 's':
riga = 1;
colonna = 1;
break;
case 'd':
riga = 1;
colonna = 2;
break;
case 'z':
riga = 2;
colonna = 0;
break;
case 'x':
riga = 2;
colonna = 1;
break;
case 'c':
riga = 2;
colonna = 2;
break;
default:
return false;
}
Incrementa(riga, colonna);
mani++;
return true;
}
private void Incrementa(int riga, int colonna)
{
int posizione;
for (int i = 0; i < MAXCOLONNA; i++)
{
if (i != colonna)
{
posizione = riga * MAXCOLONNA + i;
tabella[posizione] = (tabella[posizione] + 1) % (MAXVALORE + 1);
}
}
for (int i=0; i<MAXCOLONNA; i++)
{
posizione = i * MAXCOLONNA + colonna;
tabella[posizione] = (tabella[posizione] + 1) % (MAXVALORE + 1);
}
}
public bool FineGioco()
{
foreach(int i in tabella)
{
if (i != 0)
return false;
}
return true;
}
}
}