Szustarol Temat założony przez niniejszego użytkownika |
Przeskakiwanie do pewnego fragmentu tekstu/ gra tekstowa » 2014-06-01 21:34:25 Witam, mam zamysł zrobić grę tekstową, ogólny pomysł jest taki: 1.Zacznij grę -tu program zaczyna wykonywać określoną czynność- początek gry, zakładamy stronę pierwszą. Czyli: Strona1 Blablabla... Wybierz co chcesz zrobić: 1.blablabla- strona 123 2.blablalabal- strona 323 I tu moje pytanie- W jaki sposób zapisać każdą stronę opowieści, żeby potem można było przeskoczyć to tej strony podając jej numer jako użytkownik ( a w programie normalnie wykonuje się właściwy numer strony czyli 123 lub 323); a potem jak do tej strony odesłać usera. Aktualny kod prezentuje się tak: #include <iostream> #include <windows.h> #include <conio.h> #include <cstdlib>
using namespace std;
string PL( const char * text ) { string result; for(; * text; text++ ) switch( * text ) { case 'ą': result += static_cast < char >( 0xa5 ); break; case 'ć': result += static_cast < char >( 0x86 ); break; case 'ę': result += static_cast < char >( 0xa9 ); break; case 'ł': result += static_cast < char >( 0x88 ); break; case 'ń': result += static_cast < char >( 0xe4 ); break; case 'ó': result += static_cast < char >( 0xa2 ); break; case 'ś': result += static_cast < char >( 0x98 ); break; case 'ż': result += static_cast < char >( 0xbe ); break; case 'ź': result += static_cast < char >( 0xab ); break; case 'Ą': result += static_cast < char >( 0xa4 ); break; case 'Ć': result += static_cast < char >( 0x8f ); break; case 'Ę': result += static_cast < char >( 0xa8 ); break; case 'Ł': result += static_cast < char >( 0x9d ); break; case 'Ń': result += static_cast < char >( 0xe3 ); break; case 'Ó': result += static_cast < char >( 0xe0 ); break; case 'Ś': result += static_cast < char >( 0x97 ); break; case 'Ż': result += static_cast < char >( 0xbd ); break; case 'Ź': result += static_cast < char >( 0x8d ); break; default: result += * text; break; } return result; }
int main() { int option; SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_BLUE | BACKGROUND_RED ); cout << "Witaj w grze narracyjnej pt. 'Ręka czasu'" << endl; SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0x9 ); cout << PL( "\n\nWybierz jedną z opcji a następnie wciśnij ENTER:" ); cout << PL( "\n [1]Rozpocznij grę! \n [2]Wyjdź z gry\n [3]Wczytaj grę\n" ); cin >> option; if( option == 1 ) { system( "cls" ); SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_GREEN ); cout << PL( "NO TO ZACZYNAMY!" ); cout << PL( "\nPamiętaj, aby zapamiętać numer strony, na której \nsię znalazłeś, abyś następnie mógł/mogła kontynuować zabawę!" ); }; if( option == 2 ) { cout << PL( "Do zobaczenia następnym razem!" ); getch(); exit; } } [ / code ] |
|
Moorfox |
» 2014-06-01 22:04:48 Zrób zczytywanie z pliku, naprzykład wydarzenie.dat, poniewaz tyle napisow bedzie "brudzic" w kodzie uzupełnij go numerkami ze stronami a po nim tekst dla przykładu: 1 . Blablabla1 2 . Blablabla2 3 . Blablabla3 ... Mozesz zrobic zczytywanie z drugiego pliku z akcjami czyli akcje.dat i wtedy, mozesz zrobic: wydarzenie.dat - tutaj numerki po myslniku to akcje ktore sie wyswietla 1 . Blablabla1 - 503,321,12 2 . Blablabla2 - 52 3 . Blablabla3 - 19,13 ...
akcje.dat - tutaj po myslniku ktora wydarzenie/strona ma sie wyswietlic po zrobieniu danej akcji 1. Akcja1 - 2 2. Akcja2 - 534 3. Akcja3 - 43 ...
Jak nie chcesz tego robic, to jest jeszcze gorsza opcja char* tab[liczba_stron] <-- tablica wskaznikow na char, gdzie indeks to strona memcpy(tab[1],"idz tam",8); |
|
Szustarol Temat założony przez niniejszego użytkownika |
» 2014-06-01 22:05:54 Mogłbyś podać krótki przykładowy kod bo tak nie bardzo rozumiem? |
|
Moorfox |
» 2014-06-01 22:11:53 A, pytanie nauczyles sie juz zczytywania z pliku ?
EDIT: int main(){ FILE* wyd,* akc; int numwyd, numakc; numwyd = 1; wyd = fopen("wydarzenie.dat","r"); akc = fopen("akcje.dat","r"); //Znajdujesz w pliku po numwyd wydarzenie i wyswietlasz je po czym zczytujesz po wydarzeniu numery akcji ktore maja byc zczytane //z drugiego pliku. Jesli uzytkownik wybierze jakas akcje (cin>>numakc;). Znajdujesz w pliku albo jak wczytales wczesniej numer //odpowiadajacy mu z pliku wydarzenie.dat tzn jak wybiera akcje numer "523.Skocz do gory" i w pliku kolo niego jest numer 2 //to wyszukuje wydarzenie numer dwa i go wyswietla czyli tworzy sie tu petla
} |
|
Szustarol Temat założony przez niniejszego użytkownika |
» 2014-06-01 22:21:22 No niestety nie; właściwie chciałem podsumować mój poziom umiejętności ale nie sądziłem że to przekracza moje możliwości :(
|
|
Moorfox |
» 2014-06-01 22:26:59 Nauczyłeś się może if'ów pętelek switche, wziąłeś pare funkcji z windows.h. Ale nadal nie umiesz zczytywać z pliku. Może się wydawać na początku bo też tak miałem, że to zbędny temat, ale jest tak ważny jak inne zagadnienia, uwierz na słowo z tego korzysta się wszędzie. Zamiast przechodzić dalej do WinAPI albo podsumowywać to czego do tej pory się dowiedziało, naucz się jeszcze naprzykład takich tematów jak: kontenery, zczytywanie z pliku(najlepiej uzyj cstdio), i ważniejsze funkcje biblioteki cstdlib/cstdio, jak jeszcze tego nie robiłeś tworzenie struktur danych na przykład(najważniejsze) listy kolejki stosy,a także inne. Pisz małe programy, a nie programy które wymagają mnóstwo czasu a robi się w nich to samo czyli wypisuje strone pozniej akcje sprawdza wybrana akcje i wypisujesz strone mu odpowiadajaca. Poszukaj lepszych zadan zrob tak po 3/4 na kazdy temat z tych co wymienilem |
|
« 1 » |