Skip to content

Instantly share code, notes, and snippets.

@NIKOPrere
Created January 27, 2026 03:26
Show Gist options
  • Select an option

  • Save NIKOPrere/62d4c8333cc27fcb3a7da0a04f40f07b to your computer and use it in GitHub Desktop.

Select an option

Save NIKOPrere/62d4c8333cc27fcb3a7da0a04f40f07b to your computer and use it in GitHub Desktop.
#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;
}
@NIKOPrere
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment