dzień dobry
staram się uczyć c++ ostatnio w kursie na youtube poznałem funkcje i uznałem że czas zrobić naprawdę duży program by utrwalić wiedzę, chciałem zrobić tekstową grę rpg wrzucając dużo możliwości by jak najlepiej utrwalić wiedzę niestety wywaliłem się na samym początku normalnie próbował bym naprawić aż do skutku ale problem wydaje się mnie przerastać.
pomyślałem by zrobić wybór języka chciałem zrobić to tak że cały tekst gry zamknę w 2 plikach txt, w jednym język polski a w drugim angielski a gracz wybierze na początku rozgrywki z którego korzystać a odpowiednia funkcja "int napisy()" będzie brała linie teksu która jest mi aktualnie potrzebna i wyświetlała.
aktualny kod wygląda tak
#include <iostream>
#include <windows.h>
#include <fstream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
#include <cstdio>
using namespace std;
fstream jezyk;
int n_t=0;
int napisy(int n_tekst)
{
string linia,tekst;
int i =0;
//if (n_t==1){ n_t++;n_tekst--;}else {n_t++;}
for (int n=0;i<n_tekst;i++)
{getline(jezyk,linia);}
tekst=linia;
cout << tekst << endl;
return n_tekst;
}
int main()
{
string tekst;
char wybory;
cout << " language/jezyk " << endl;
cout << " [1]english/[2]polish" << endl;
wybory=getch();
system("cls");
if (wybory=='2')
{
jezyk.open("jezyk,pl.txt",ios::in );
}else
{
jezyk.open("jezyk,eng.txt",ios::in );
}
napisy (1);
napisy (2);
napisy (3);
napisy (4);
napisy (5);
wybory=getch();
jezyk.close (); return 0;
}
zawartość pliku "jezyk,eng.txt"
"
MENU
---------------------
[1]new game
[2]load game
[3]score board
[4]exit
" w "jezyk,pl.txt" jest to samo tylko po polsku
Po naprawieniu mniejszych błędów i włączeniu programu menu główne gry wygląda tak
"
MENU
[1]new game
[4]exit
"
z pliku tekstowego zostały wzięte linie 1,3,5. zamiast wszystkich i nie mam pojecie dlaczego a siedzę nad tym kilka dłuższych chwil.
Po kilku próbach naprawienia tego pomyślałem że jeśli bierze co drugą linie to tymczasowym rozwiązaniem będzie wczytywanie linii o 1 mniejszej co drugi raz gdy wykonuje się funkcja, wiec napisałem prostego if który jest aktualnie w kodzie powyżej po 2 ukośnikach ale wystartowaniu programu teraz stało się coś jeszcze dziwniejszego.
Pojawiła się coś takiego
"
MENU
---------------------
[3]score board
[4]exit
"
co oznacza się pojawiły się linie 1,2,5,6
i w tym momencie postanowiłem napisać na jakimś forum z pytaniem bo za nic nie umiem zrozumieć co tu się stało.
Wiem że to błahy problem zaczynam dopiero z nauką to dziwne gdybym miał trudny problem ale mam nadzieje że ktoś mi pomoże i gdyby był bardzo miły wytłumaczył dlaczego program brał co drugą linie