Przeskakiwanie do pewnego fragmentu tekstu/ gra tekstowa
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Przeskakiwanie do pewnego fragmentu tekstu/ gra tekstowa

AutorWiadomość
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:

C/C++
#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 ]
P-111290
» 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);


P-111293
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?
P-111294
» 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



}
P-111295
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 :(
P-111296
» 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
P-111297
« 1 »
 Strona 1 z 1