Programma Forza 4

di il
4 risposte

Programma Forza 4

Devo realizzare il gioco forza 4 in C#, è così strutturato:
1) classe cella: una cella può essere "vuota" o "piena" e contenere il giocatore "nessuno" o il giocatore "uno" o il giocatore "due";
2)classe matrice: contiene il numero di colonne e il numero di righe e una matrice di celle.
Riporto qui il codice in questione (ovviamente non tutto il codice):
"class Matrix : Cell
{
protected static int _MaxRow = 10;
protected static int _MaxCol = 10;

protected Cell[,] _Cells = new Cell[_MaxRow, _MaxCol];
protected int _NRow;
protected int _NCol;
protected int _ICol;

public Matrix()
{
_NRow = 10;
_NCol = 10;
_ICol = 0;
}

public Matrix(int rows, int col)
{
if ((rows <= _MaxRow) && (col <= _MaxCol) && (rows > 0) && (col > 0))
{
_NRow = rows;
_NCol = col;
_ICol = 0;
}
}

~Matrix()
{
}

protected bool Initialization(int rows, int col)
{
bool retVal=false;
if((rows<=_MaxRow)&&(col<=_MaxCol)&&(rows>0)&&(col>0))
{
_NRow = rows;
_NCol = col;
retVal=true;
}
return retVal;
}

public int NRow
{
get { return _NRow; }
}

public int NCol
{
get { return _NCol; }
}

public int ICol
{
get { return _ICol; }
set { _ICol = value; }
}

public bool IsColFull(int col)
{
bool retVal = false;
if ((!_Cells[0,col].IsCellEmpty()) && (col >= 0) && (col <= NCol))
retVal = true;
return retVal;
}"
Il problema sorge ogni volta che tento di utilizzare il metodo "IsColFull" per verificare se una colonna del campo di gioco (utilizzo la DataGrid) è piena oppure no (quindi si verifica in fase di esecuzione non in compilazione) evidenziando questa riga:
if ((!_Cells[0,col].IsCellEmpty()) && (col >= 0) && (col <= NCol))
e mostrandomi il seguente messaggio:
NullReferenceException non è stata gestita
Riferimento a un oggetto non impostato su un'istanza di oggetto

Non so proprio come fare, vi ringrazio in anticipo per gli eventuali aiuti.

4 Risposte

  • Re: Programma Forza 4

    E la classe Cella ?


    P.S. Non c'è nulla di urgente nel forum ... e non c'è nulla di più indisponente delle richieste urgenti ...
  • Re: Programma Forza 4

    Scusa, sono nuovo e avevo chiesto ad un amico che titolo mettere, mi aveva consigliato questo, chiedo scusa allora, non ricapiterà. In ogni caso ecco la classe cella:
    class Cell
    {
    public enum CellStatus { csEmpty, csFull };
    public enum IndexPlayers { pNone, pOne, pTwo };

    protected CellStatus _Status;
    protected IndexPlayers _Player;

    public Cell()
    {
    _Status = CellStatus.csEmpty;
    _Player = IndexPlayers.pNone;
    }

    ~Cell()
    {
    }

    public void Reset()
    {
    _Status = CellStatus.csEmpty;
    _Player = IndexPlayers.pNone;
    }

    public CellStatus Status
    {
    get { return _Status; }
    set { _Status = value; }
    }

    public IndexPlayers Player
    {
    get { return _Player; }
    set { _Player = value; }
    }

    public bool IsCellEmpty()
    {
    bool retVal = false;

    if ((_Status == CellStatus.csEmpty) && (_Player == IndexPlayers.pNone))
    retVal= true;
    return retVal;
    }

    public bool SetPlayer(IndexPlayers p)
    {
    bool retVal=false;
    if ((IsCellEmpty()) && (p > 0) && (p <= IndexPlayers.pTwo))
    {
    _Player=p;
    _Status = CellStatus.csFull;
    retVal=true;
    }
    return retVal;
    }
    }
  • Re: Programma Forza 4

    Da quello che ho potuto vedere mi sembra che manchi questa parte nel costruttore di Matrix
    
            public Matrix()
            {
                _NRow = 10;
                _NCol = 10;
                _ICol = 0;
    
                for (int r = 0; r < _NRow; r++)
                    for (int c = 0; c < _NCol; c++)
                        _Cells[r, c] = new Cell();
            }
    
  • Re: Programma Forza 4

    Grazie mille, problema risolto!
Devi accedere o registrarti per scrivere nel forum
4 risposte