#include <windows.h> #include "Player/Player.hpp" #include "ChessPieces/ChessPiece.hpp" #include "Chessboard/Chessboard.hpp" #include "Chessboard/ChessboardVisualizerText.hpp" #include "Chessboard/ChessboardVisualizerGraphic.hpp" #include "Visualizer/BaseVisualizer.hpp" #include "Visualizer/StartMenuVisualizer.hpp" #include "Visualizer/HistorieVisualizer.hpp" #include "Visualizer/ChessboardVisualizer.hpp" #include "Visualizer/CommandMenuVisualizer.hpp" #include "Visualizer/PlayingViewVisualizer.hpp" #include "Visualizer/InstructionsVisualizer.hpp" #include <iostream> #include <memory> #include <vector> #include <string> #include <locale> void HandleThirdOption() { BaseVisualizer::ClearTerminal(); InstructionsVisualizer instructions = InstructionsVisualizer(); instructions.DisplayElement(); std::cout << "\x1B[u"; std::cin; } void HandleCommandOptions(const std::string& command) { if (command == "1") { HandleThirdOption(); } else if (command == "2") { // ToDo: Save implementieren } else if (command == "3") { // ToDo: Exit implementieren -> Möglichkeit noch zu speichern oder einfach speichern? } else if (command == "8") { // ToDo: Spiel beenden -> Gewinn an anderen gegeben } else if (command == "9") { // ToDo: Draw anbieten -> Anfrage mit Annahme/Ablehnen an anderen Spieler schicken } } std::string ExtractAfterDollar(const std::string& userInput) { // Überprüfen, ob der String mit '$' beginnt if (!userInput.empty() && userInput[0] == '$') { return userInput.substr(1); // Rückgabe des Teils nach '$' } return ""; // Leerer String, wenn kein '$' am Anfang } void HandleFirstOption() { BaseVisualizer::ClearTerminal(); Player* playerA = new Player("Player 1"); Player* playerB = new Player("Player 2"); Chessboard chessboard = Chessboard(); chessboard.SetPlayers(playerA, playerB); chessboard.InitializeStartBoard(); PlayingViewVisualizer playView = PlayingViewVisualizer(&chessboard, 4, 12); while (chessboard.IsCheckmate() == false) { std::string input; playView.DisplayElement(); std::cout << "\x1B[u"; std::cin >> input; std::string command = ExtractAfterDollar(input); while (command != "3") { if (command != "") { HandleCommandOptions(command); break; } else { //ToDo: Valide Züge annehmen chessboard.MoveChessPiece(input); } // ToDo: Nicht valide Eingabe melden -> Unterscheidung was falsch? } break; } std::cout << "Game is over! - " << chessboard.GetOpponentPlayer()->GetName() << " has won the game!" << std::endl; } void HandleSecondOption() {} int main() { SetConsoleOutputCP(CP_UTF8); BaseVisualizer::ClearTerminal(); StartMenuVisualizer startMenu = StartMenuVisualizer(3); int choice = -1; while (startMenu.GetSelectedOption() != 0) { BaseVisualizer::ClearTerminal(); startMenu.DisplayElement1(); if (startMenu.GetSelectedOption() == 1) { HandleFirstOption(); } else if (startMenu.GetSelectedOption() == 2) { HandleSecondOption(); } else if (startMenu.GetSelectedOption() == 3) { HandleThirdOption(); } } //CommandMenuVisualizer commandMenu = CommandMenuVisualizer(2); //commandMenu.DisplayElement(); //HistorieVisualizer historie = HistorieVisualizer(15, 2, "Player 1", "Player 2"); //historie.DisplayElement(); /*if () { Player* playerA = new Player("Player 1"); Player* playerB = new Player("Player 2"); Chessboard chessboard = Chessboard(); chessboard.SetPlayers(playerA, playerB); chessboard.InitializeStartBoard(); // Jetzt kann man Moves machen. Nach jedem Move müssen die ChessPieces aktualisiert werden. chessboard.UpdateChessPieces(); //ChessboardVisualizerText* visualizer = new ChessboardVisualizerText(); ChessboardVisualizer visualizer(&chessboard, 2); }*/ //} /*std::cout << "Spieler A: "; std::string namePlayerA; getline(std::cin, namePlayerA); std::cout << "Spieler B: "; std::string namePlayerB; getline(std::cin, namePlayerB); Player* playerA = new Player("1"); Player* playerB = new Player("2");*/ return 0; } /** std::vector<std::vector<ChessPiece>> chessmatrix; Chessboard chessboard; if (argc == 2) { std::cout << "Spielstand" << std::endl; chessboard.loadBoard(std::string(argv[1])); } else { chessboard.setBoard(chessboard.getStartBoard()); } //chessboard.init(); chessboard.draw(); while (true) { std::string move; std::cout << "Move [" << (chessboard.getTurnOrder() ? "white" : "black") << "]: "; std::cin >> move; chessboard.move(move); chessboard.saveBoard(); } */