Listing 2: TrisField implements a drawing area that "ticks"


// Hopefully the names of data members and methods should be
// self-explanatory.
class TrisField : public wxCanvas, public wxTimer {
  TrisCell *cells[TRIS_X][TRIS_Y];
  TrisPiece *currentPiece;
  int tickTime;
  Bool ignoreTickTime;
  wxButton *pauseButton;
  ScoreObj *score;
  LevelObj *level;
  int pieceCount;
public:
  TrisField(wxWindow *parent); // Constructor.
  int TickTime(void);
  void DoResize(int w, int h);
  void DrawField(void);
  void OnChar(wxKeyEvent &event);  // Overidden from wxCanvas.
  void OnPaint(void);
  void Notify(void);     // Overridden from wxTimer.
  void EnterPiece(intPair where);
  void DeletePiece(void);
  int InPlay(void);
  int PieceFits(void);
  void DrawPiece(void);
  void ErasePiece(void);
  void LockPiece(void);
  void StripRows(void);
  void StartGame(void);
  void EndGame(void);
};
/* End of File */