//###########################################################################
//#
//# Diplomarbeit von Michel Jaggi / Abalone Spiel
//#
//# Datum: 22.06.2002
//#
//# Klasse Matrix dient zur Erzeugung der Matrix und zur Behandlung der
//# Spielregeln und der grafischen Anzeige der Matrix.
//#
//###########################################################################
#ifndef MATRIX_H
#define MATRIX_H


class Matrix
{
  private:
          double **DataArray;
          double **RestArray;
          int XArraySize;
          int YArraySize;
          int SourcX;
          int SourcY;
          int DestX;
          int DestY;

          void create_array(int MaX, int MaY);
          void delete_array(int MaX, int MaY);
  public:
         Matrix(int MaXSize=21, int MaYSize=12);
         ~Matrix();
         void initValue();
         void setSourceX(MaSourcX){SourcX = MaSourcX;};
         void setSourcY(MaSourcY){SourcY = MaSourcY;};
         void setDestX(MaDestX){DestX = MaDestX;};
         void setDestY(MaDestY){DestY = MaDestY;};
         int getSourcX(){return (SourcX);};
         int getSourcY(){return (SourcY);};
         int getDestX(){return (DestX);};
         int getDestY(){return (DestY);};
         void setValue(int MaX, int MaY, int MaValue);
         void setRestVal(int MaX, int MaY, int MaValue);
         int MoveStone(int MaStoneColor);   // Verschiebt die Steine innerhalb der Matrix
         int ScanRules(int MaStoneColor);   // Ueberprueft die Spielregeln
         int getXArraySize(){return(XArraySize);};
         int getYArraySize(){return(YArraySize);};
         int GetStoneValue(int MaXSourc, int MaYSourc){return (DataArray[MaXSourc][MaYSourc]);};
         int FindWinner();
         void GraphicShow(int MaStoneColor);
         void RestShow();

};
#endif
