#include "TTTModel.h" TTTModel::TTTModel(void) { initGameField(); } TTTModel::~TTTModel(void) { } bool TTTModel::isFieldFree(int x, int y) { if ( gamefield[x][y] == 0 ) return true; else return false; } void TTTModel::initGameField(void) { for (int i=0; i<3; i++) { for (int j=0; j<3; j++) { gamefield[i][j] = EMPTY; } } } int TTTModel::setValue(int x, int y, Fieldvalue f) { //Rückgabewert 0: Setzen erfolgreich //Rückgabewert 1: Feld bereits gesetzt //Rückgabewert 2: Ungültige Feldkoordinaten //Rückgabewert 3: Ungültiger Feldwert //Testen, ob Feldwert ungültig ist if ( f != CROSS && f != CIRCLE ) return 3; //Testen, ob gewähltes Feld ungültig ist if ( x<0 || x>2 || y<0 || y>2) return 2; //Testen, ob Feld spielbar ist if ( !this->isFieldFree(x, y) ) return 1; else gamefield[x][y] = f; return 0; } Fieldvalue TTTModel::getValue(int x, int y) { return gamefield[x][y]; } bool TTTModel::checkRowWin(Fieldvalue f) { //Kein Gewinner bool rc = false; for (int y=0; y<3; y++) { if ( gamefield[0][y] == f && gamefield[1][y] == f && gamefield[2][y] == f ) { rc = true; break; } } return rc; } bool TTTModel::checkColWin(Fieldvalue f) { //Kein Gewinner bool rc = false; for (int x=0; x<3; x++) { if ( gamefield[x][0] == f && gamefield[x][1] == f && gamefield[x][2] == f ) { rc = true; break; } } return rc; } bool TTTModel::checkDiaWin(Fieldvalue f) { //Kein Gewinner bool rc = false; if ( (gamefield[0][0] == f) && (gamefield[1][1] == f) && (gamefield[2][2] == f) ) { rc = true; } if ( (gamefield[2][0] == f) && (gamefield[1][1] == f) && (gamefield[0][2] == f) ) { rc = true; } return rc; }