Created
January 27, 2026 03:26
-
-
Save NIKOPrere/62d4c8333cc27fcb3a7da0a04f40f07b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <iostream> | |
| #include <string> | |
| #include <vector> | |
| #include <iomanip> | |
| #include <algorithm> | |
| #include <fstream> | |
| #include <cmath> | |
| //muista bugien korjaus esim pankki laina | |
| // TALLENNUS | |
| static void tallennaTiedot(double saldo, double kateinen, double lainasaldo, const std::vector<std::string>& tapahtumaLista) { | |
| std::ofstream tallennus("tili.txt"); | |
| if (tallennus.is_open()) { | |
| tallennus << saldo << "\n" << kateinen << "\n" << lainasaldo; | |
| tallennus.close(); | |
| } | |
| std::ofstream listaTallennus("tapahtumat.txt"); | |
| if (listaTallennus.is_open()) { | |
| for (const std::string& t : tapahtumaLista) { | |
| listaTallennus << t << "\n"; | |
| } | |
| listaTallennus.close(); | |
| } | |
| std::cout << "\nTiedot tallennettu tiedostoihin tili.txt ja tapahtumat.txt.\n"; | |
| } | |
| // TYÖPAIKKA | |
| static void tyopaikka(double& kateinen, double palkinto) { | |
| std::string matematiikka, haaste, vastaus2; | |
| int vastaus; | |
| std::cout << "\nTervetuloa toihin! Taalla voit ansaita kateista.\n"; | |
| std::cout << "Osaatko matematiikkaa? (kylla/en): "; | |
| std::cin >> matematiikka; | |
| if (matematiikka == "kylla" || matematiikka == "Kylla") { | |
| std::cout << "Otatko haasteen vastaan? (kylla/ei): "; | |
| std::cin >> haaste; | |
| if (haaste == "kylla" || haaste == "Kylla") { | |
| std::cout << "\nHaaste 1: Paljonko on 2 * 2? "; | |
| if (!(std::cin >> vastaus)) { std::cin.clear(); std::cin.ignore(1000, '\n'); } | |
| if (vastaus == 4) { | |
| std::cout << "Oikein! Ansaitsit " << palkinto << " euroa.\n"; | |
| kateinen += palkinto; | |
| std::cout << "Haaste 2: Paljonko on 2 * 2 + 2? "; | |
| if (!(std::cin >> vastaus)) { std::cin.clear(); std::cin.ignore(1000, '\n'); } | |
| if (vastaus == 6) { | |
| std::cout << "Oikein! Sait taas " << palkinto << " euroa.\n"; | |
| kateinen += palkinto; | |
| std::cout << "Haaste 3 (Norttitesti): Paljonko on (5 * 7) + 9 - 4? "; | |
| if (!(std::cin >> vastaus)) { std::cin.clear(); std::cin.ignore(1000, '\n'); } | |
| if (vastaus == 40) { | |
| std::cout << "Oikein! Olet nortti! Sait perati " << (palkinto * 2) << " euroa.\n"; | |
| kateinen += (palkinto * 2); | |
| std::cout << "\nHaluatko jatkaa? (pulma / seuraava / lopeta): "; | |
| std::cin >> vastaus2; | |
| if (vastaus2 == "pulma") { | |
| std::cout << "Mika kavelee kahdella jalalla? (Kirjoita vastaus tai 'vihje'): "; | |
| std::cin >> vastaus2; | |
| if (vastaus2 == "vihje") { | |
| std::cout << "Vihje 1: Meilla on yhteinen esi-isa. (Vastaa tai 'vihje'): "; | |
| std::cin >> vastaus2; | |
| } | |
| if (vastaus2 == "vihje") { | |
| std::cout << "Vihje 2: Alkaa a-kirjaimella ja loppuu a-kirjaimeen: "; | |
| std::cin >> vastaus2; | |
| } | |
| if (vastaus2 == "apina" || vastaus2 == "Apina") { | |
| std::cout << "Loistavaa! Pulma ratkaistu. Voitit " << (palkinto * 4) << " euroa!\n"; | |
| kateinen += (palkinto * 4); | |
| } | |
| else { | |
| std::cout << "Vaarin meni pulma.\n"; | |
| } | |
| } | |
| } | |
| else { std::cout << "Vaarin meni norttitesti.\n"; } | |
| } | |
| else { std::cout << "Vaarin meni kakkostehtava.\n"; } | |
| } | |
| else { std::cout << "Vaarin meni ensimmainen!\n"; } | |
| } | |
| } | |
| else if (matematiikka == "en" || matematiikka == "Ei") { | |
| std::cout << "no ei se mitaan tatakin kauttaSaat tienattua rahaa" << std::endl; | |
| std::cout << "tassa on harjoitus ohjelma: syotat luvun ja se nayttaa kertotaulun 10 asti.\n"; | |
| int luku = -1; | |
| while (true) { | |
| std::cout << "Anna luku (1-5000)/(0 lopettaa): "; | |
| if (!(std::cin >> luku)) { | |
| std::cin.clear(); std::cin.ignore(1000, '\n'); | |
| continue; | |
| } | |
| if (luku == 0) { | |
| std::cout << "Sait palkinnon kun suoritit taman. Sait " << (palkinto * 7) << " euroa kateista\n"; | |
| kateinen += (palkinto * 7); | |
| break; | |
| } | |
| for (int i = 1; i <= 10; ++i) { | |
| std::cout << luku << " * " << i << " = " << (luku * i) << std::endl; | |
| } | |
| } | |
| } | |
| } | |
| //PANKKI | |
| static void pankki(double& saldo, double& kateinen, double& lainasaldo, std::vector<std::string>& tapahtumaLista, bool& peliKaynnissa) { | |
| int valinta = -1; | |
| double summa; | |
| int lainaValinta; | |
| while (peliKaynnissa && valinta != 0) { | |
| std::cout << "\n--- PANKKI (Kateista: " << kateinen << " e | Tililla: " << saldo << " e) ---\n"; | |
| std::cout << "1. Talleta\n2. Saldo\n3. Nosta\n4. Tilitapahtumat\n5. \n6. lainojen haku\n0. Palaa paavalikkoon\n9. LOPETA KOKO PELI\nValinta: "; | |
| if (!(std::cin >> valinta)) { | |
| std::cin.clear(); std::cin.ignore(1000, '\n'); | |
| continue; | |
| } | |
| if (valinta == 9) { | |
| peliKaynnissa = false; | |
| } | |
| else { | |
| switch (valinta) { | |
| case 1: | |
| std::cout << "Anna talletettava summa: "; | |
| std::cin >> summa; | |
| if (summa > 0 && summa <= kateinen) { | |
| saldo += summa; | |
| kateinen -= summa; | |
| tapahtumaLista.push_back("Talletus: +" + std::to_string(summa).substr(0, std::to_string(summa).find(".") + 3) + " e"); | |
| std::cout << "Talletus onnistui.\n"; | |
| } | |
| break; | |
| case 2: | |
| std::cout << "Saldo: " << saldo << " euroa\n"; | |
| break; | |
| case 3: | |
| std::cout << "Anna nostettava summa: "; | |
| std::cin >> summa; | |
| if (summa > 0 && summa <= saldo) { | |
| saldo -= summa; | |
| kateinen += summa; | |
| tapahtumaLista.push_back("Nosto: -" + std::to_string(summa).substr(0, std::to_string(summa).find(".") + 3) + " e"); | |
| std::cout << "Nosto onnistui.\n"; | |
| } | |
| break; | |
| case 4: | |
| for (const std::string& t : tapahtumaLista) std::cout << t << "\n"; | |
| break; | |
| case 5: | |
| std::cout << "toiminto ei ole kaytossa\n"; | |
| break; | |
| case 6: | |
| std::cout << "1. 1000 euroa\n2. 5000 euroa\n3. muu summa\nValinta: "; | |
| std::cin >> lainaValinta; | |
| switch (lainaValinta) { | |
| case 1: | |
| if (saldo >= 1000) { | |
| lainasaldo += 1000; saldo += 1000; | |
| std::cout << "Otit 1000 euron lainan, maksa korkoa 5% vuosittain.\n"; | |
| } | |
| else { std::cout << "Et voi ottaa lainaa, tililla oltava 1000e.\n"; } | |
| break; | |
| case 2: | |
| if (saldo >= 5000) { | |
| lainasaldo += 5000; saldo += 5000; | |
| std::cout << "Otit 5000 euron lainan, maksa korkoa 5% vuosittain.\n"; | |
| } | |
| else { std::cout << "Et voi ottaa lainaa, tililla oltava 5000e.\n"; } | |
| break; | |
| case 3: | |
| double muuLaina; | |
| std::cout << "Anna lainan summa: "; | |
| std::cin >> muuLaina; | |
| lainasaldo += muuLaina; saldo += muuLaina; | |
| std::cout << "Laina myonnetty.\n"; | |
| break; | |
| } | |
| break; | |
| case 0: | |
| break; | |
| } | |
| } | |
| } | |
| } | |
| // OMAISUUSFUNKTIO (KORJATTU) | |
| void omaisuus(int& talo, double& lainasaldo, double& saldo, std::vector<std::string>& tapahtumaLista) { | |
| int omaisuusvalinta; | |
| std::cout << "\n--- OMAISUUDEN HALLINTA ---\n"; | |
| std::cout << "1. Lainat\n2. Talot\nValinta: "; | |
| std::cin >> omaisuusvalinta; | |
| switch (omaisuusvalinta) { | |
| case 1: { | |
| std::string lainanmaksu; | |
| if (lainasaldo > 0) { | |
| std::cout << "Sinun lainasi on: " << (lainasaldo * 1.05) << " Euroa (sis. korko)\n"; | |
| std::cout << "Haluatko maksaa takaisin (kylla/ei): "; | |
| std::cin >> lainanmaksu; | |
| if (lainanmaksu == "kylla") { | |
| double maksu = 0.0; | |
| std::cout << "Kuinka paljon haluat maksaa: "; | |
| std::cin >> maksu; | |
| if (maksu > 0 && maksu <= saldo) { | |
| std::cout << "Lainaasi on maksettu " << maksu << " Euroa\n"; | |
| lainasaldo -= maksu; | |
| saldo -= maksu; | |
| tapahtumaLista.push_back("Lainan maksu: -" + std::to_string(maksu) + " e"); | |
| } | |
| else { | |
| std::cout << "Virhe: Tililla ei ole tarpeeksi rahaa tai summa on vaara.\n"; | |
| } | |
| } | |
| } | |
| else { | |
| std::cout << "Sinulla ei ole aktiivisia lainoja.\n"; | |
| } | |
| break; | |
| } | |
| case 2: | |
| std::cout << "Sinulla on " << talo << " taloa.\n"; | |
| break; | |
| default: | |
| std::cout << "Virheellinen valinta.\n"; | |
| break; | |
| } | |
| } | |
| // KAUPPA | |
| void kauppa(double& saldo, int& talo) { | |
| int valinta; | |
| std::cout << "Tervetuloa asunto kauppaan!" << std::endl; | |
| std::cout << "1. Talo 1 (10 000 euroa)\n2. Talo 2 (20 000 euroa)\n3. Talo 3 (30 000 euroa)\n4. Talo 4 (40 000 euroa)\nValinta: "; | |
| std::cin >> valinta; | |
| double hinta = 0; | |
| if (valinta == 1) hinta = 10000; | |
| else if (valinta == 2) hinta = 20000; | |
| else if (valinta == 3) hinta = 30000; | |
| else if (valinta == 4) hinta = 40000; | |
| if (hinta > 0 && saldo >= hinta) { | |
| std::cout << "Ostit talon!\n"; | |
| saldo -= hinta; | |
| talo++; | |
| } | |
| else { | |
| std::cout << "Ei tarpeeksi rahaa tai virheellinen valinta.\n"; | |
| } | |
| } | |
| // MAIN | |
| int main() { | |
| double saldo = 0.0, kateinen = 100.0, palkinto = 50.0, lainasaldo = 0.0; | |
| int talo = 0; | |
| std::vector<std::string> tapahtumaLista; | |
| int valikko = 0; | |
| bool peliKaynnissa = true; | |
| std::cout << std::fixed << std::setprecision(2); | |
| // LATAAMINEN | |
| std::ifstream luku("tili.txt"); | |
| if (luku.is_open()) { | |
| luku >> saldo; luku >> kateinen; luku >> lainasaldo; | |
| luku.close(); | |
| } | |
| std::ifstream listaLuku("tapahtumat.txt"); | |
| std::string rivi; | |
| if (listaLuku.is_open()) { | |
| while (std::getline(listaLuku, rivi)) { | |
| if (!rivi.empty()) tapahtumaLista.push_back(rivi); | |
| } | |
| listaLuku.close(); | |
| } | |
| // valikko kaikelle | |
| while (peliKaynnissa) { | |
| std::cout << "\n--------- PAAVALIKKO ---------" << std::endl; | |
| std::cout << "1. Mene Toihin (Ansaitse rahaa)\n2. Mene Pankkiin (Talleta/Nosta)\n3. Mene asuntokauppaan\n4. Hallitse omaisuutta\n9. LOPETA JA TALLENNA\nValinta: "; | |
| if (!(std::cin >> valikko)) { | |
| std::cout << "VIRHE: syota vain numeroita!\n"; | |
| std::cin.clear(); std::cin.ignore(1000, '\n'); | |
| continue; | |
| } | |
| if (valikko == 9) peliKaynnissa = false; | |
| else if (valikko == 1) tyopaikka(kateinen, palkinto); | |
| else if (valikko == 2) pankki(saldo, kateinen, lainasaldo, tapahtumaLista, peliKaynnissa); | |
| else if (valikko == 3) kauppa(saldo, talo); | |
| else if (valikko == 4) omaisuus(talo, lainasaldo, saldo, tapahtumaLista); | |
| } | |
| tallennaTiedot(saldo, kateinen, lainasaldo, tapahtumaLista); | |
| std::cout << "Heippa!\n"; | |
| return 0; | |
| } |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
tämä "peli" ei ole viellä valmis kehittyy koko aika eteen päin tämä on ensimmäinen projekti jossa en ole tarvinnut apua ja ottaen huomioon aloitin c++ opinnot 22.01.2026 että omasta mielestä aika hyvin edennyt ja vielläpä itse opiskelua