#include "VierGewinntController.h" VierGewinntController::VierGewinntController(void) { rows = 6; cols = 7; vgModel = new VierGewinntModel(rows, cols); vgView = new VierGewinntView(vgModel, rows, cols); } VierGewinntController::VierGewinntController(int r, int c) { rows = r; cols = c; vgModel = new VierGewinntModel(rows, cols); vgView = new VierGewinntView(vgModel, rows, cols); } VierGewinntController::~VierGewinntController(void) { delete (vgView); delete (vgModel); } string VierGewinntController::startGame(string n1, string n2) { //Spielernamen setzen p1.setName( n1 ); p2.setName( n2 ); //Spielfeld anzeigen vgView->showGameField(); int input; const unsigned int maxmuenzen = rows * cols; unsigned int muenzen = 0; bool rc = false; string gewinner = ""; do { //********************************** //Spieler 1 //********************************** gotoXY(0,10); cout << p1.getName() << endl << "Spalte: "; do { //Spalte für Münze abfragen cin >> input; rc = vgModel->insertCoin(input-1,COIN1); } while(input<1 || input>cols || !rc); p1.setPunkte( p1.getPunkte() + 1 ); muenzen++; //Spielfeld neu zeichnen vgView->showGameField(); gotoXY(0,0); cout << "Gewinnsituation " << p1.getName() << " [R/C/D1/D2]: " << vgModel->checkRowWin(1) << "/" << vgModel->checkColWin(1) << "/" << vgModel->checkDia1Win(1) << "/" << vgModel->checkDia2Win(1) << endl; //Gibt es einen Gewinner? if ( vgModel->checkRowWin(1) || vgModel->checkColWin(1) || vgModel->checkDia1Win(1) || vgModel->checkDia2Win(1) ) { gewinner = p1.getName(); //Um die äußere Schleife zu verlassen break; } //********************************** //Spieler 2 //********************************** gotoXY(0,10); cout << p2.getName() << endl << "Spalte: "; do { cin >> input; rc = vgModel->insertCoin(input-1,COIN2); } while(input<1 || input>cols || !rc); p2.setPunkte( p2.getPunkte() + 1 ); vgView->showGameField(); gotoXY(0,0); cout << "Gewinnsituation " << p2.getName() << " [R/C/D1/D2]: " << vgModel->checkRowWin(2) << "/" << vgModel->checkColWin(2) << "/" << vgModel->checkDia1Win(2) << "/" << vgModel->checkDia2Win(2) << endl; if ( vgModel->checkRowWin(2) || vgModel->checkColWin(2) || vgModel->checkDia1Win(2) || vgModel->checkDia2Win(2) ) { gewinner = p2.getName(); //Um die äußere Schleife zu verlassen break; } } while( muenzen < maxmuenzen ); if ( gewinner == "" ) gewinner = "Unentschieden!"; return gewinner; } void VierGewinntController::gotoXY(int x, int y) { HANDLE screen_buffer_handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(screen_buffer_handle, coord); }