#include #include #include #include #include "tyypit.hh" #include "perustoiminnot.hh" #include "bonustoiminnot.hh" using std::cin; using std::cout; using std::endl; using std::string; int main() { cout << "### OHJ-1101 Ohjelmointi Ie" << endl; cout << "### Petteri Aimonen, 205441, aimonen" << endl; string nimiV(""), nimiM(""); // Pelaajien nimet std::ostringstream replaykomennot(""); // Replaykomentojen tallennuskohde /* Pelin aloitus */ cout << "Anna valkoisen pelaajan nimi: "; cin >> nimiV; cout << "Anna mustan pelaajan nimi: "; cin >> nimiM; if (nimiV != "AI") replaykomennot << nimiV << endl; else replaykomennot << "AI.replay" << endl; if (nimiM != "AI") replaykomennot << nimiM << endl; else replaykomennot << "AI.replay" << endl; Nappula vuoro = VALKOINEN; Nappula pelilauta[7][7] = {{TYHJA}}; Siirto siirto = {0}; alustalauta(pelilauta); /* Pelin aikana */ while (!peliloppu(vuoro, pelilauta)) { bool ai = false; cout << "Vuorossa: "; if (vuoro == VALKOINEN) { ai = (nimiV == "AI"); cout << nimiV << endl; } else { ai = (nimiM == "AI"); cout << nimiM << endl; } tulostalauta(pelilauta); if (!ai) { if (luesiirto(pelilauta, vuoro, siirto) == false) { // Käyttäjä tahtoo lopettaa replaykomennot << "-1 -1" << endl; break; } } else { ai_etsisiirto(siirto, vuoro, pelilauta); } toteutasiirto(pelilauta, siirto); replaykomennot << siirto.alkuX + 1 << " " << siirto.alkuY + 1 << endl; replaykomennot << siirto.loppuX + 1 << " " << siirto.loppuY + 1 << endl; if (vuoro == VALKOINEN) vuoro = MUSTA; else vuoro = VALKOINEN; } /* Pelin loputtua */ int pisteetV = 0, pisteetM = 0; tulostalauta(pelilauta); laskepisteet(pisteetV, pisteetM, pelilauta); if (pisteetV == pisteetM) { cout << "Peli päättyi tasapeliin "; } else if (pisteetV > pisteetM) { cout << nimiV << " voitti "; } else if (pisteetM > pisteetV) { cout << nimiM << " voitti "; } cout << pisteetV << "-" << pisteetM << "!" << endl; /* Replay-tiedosto */ char vastaus = 0; do { cout << "Tallennetaanko pelistä replay-tiedosto? (k/e) "; cin >> vastaus; } while (!cin.eof() && vastaus != 'k' && vastaus != 'e'); if (vastaus != 'k') return EXIT_SUCCESS; string tiedostonimi(""); cout << "Anna replay-tiedoston nimi: " << endl; cin >> tiedostonimi; std::ofstream tiedosto(tiedostonimi.c_str()); if (!tiedosto.is_open()) { cout << "Virhe: Replay-tiedostoa ei voida kirjoittaa." << endl; return EXIT_FAILURE; } // Replayta toistettaessa ei tallenneta uudelleen replaykomennot << "e" << endl; tiedosto << replaykomennot.str(); tiedosto.close(); return EXIT_SUCCESS; }