Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
C++

Dialogi w grze

c++

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 Unstopp

    Pomocny

  • Użytkownik

Reputacja: 21
Życzliwy

  • Postów:48
  • Lokalizacja:Lublin
Offline

Napisano 11.07.2013 20:06

Tworzę prostą grę RPG, w której oczywiście nie może zabraknąć dialogów. Chciałbym się dowiedzieć w jaki sposób (najprostszy) zrobić właśnie takie dialogi. Same wypowiedzi poszczególnych NPC czy bohatera zrobiłem, tworząc sobie funkcję wirtualną say() w klasie Human, którą z kolei dziedziczą klasy NPC i Hero. Jednak jak zrobić odpowiedzi? Przypuśćmy mam taki kawałek kodu:
human->say( "Wypowiedz 1" );
human->say( "Wypowiedz 2" );
Teraz chciałbym odpowiedzieć na ten dialog. Do wyboru, mam 3 opcje z których chcę, by gracz mógł wybrać tą która mu pasuje. A dalej, by dialog potoczył się zgodnie z tą opcją.

Stworzyłem sobie taką funkcję:
void Function::loadDialogs( const char * filename ){    string tmp;    fstream file;    file.open( filename, ios::in );    while( !file.eof() )    {        getline( file, tmp );        cout << tmp << endl;    }    file.close(); function->loadDialogs( "dialogs/dialog_01.txt" ); }
i przykładowy plik dialogs/dialogs_01.txt:
Kim jestes?Gdzie jestem?Jak sie tutaj znalazlem?
Jak zrobić możliwość odpowiadania? To znaczy, że mogę wybrać odpowiedź 1 - 3. Zależy mi na zapisie do pliku. Oczywiście mógłbym to zrobić na piechotę, ale powtarzanie tego samego tysiące razy, chyba nie jest dobrym pomysłem...

PS. W 2 postach, bo w 1 się nie zmieściło

Użytkownik Kawon edytował ten post 12.07.2013 13:44

  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 980
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 31.07.2013 09:46

Zastanów się nad użyciem xmla który pozwoli uporządkować Ci strukturę dialogów

w takim przypadku wyglądało by mnie więcej to tak ( pseudo kod )

<data>
  <question text = "Kim jestes?" >
    <answer>Magiem</answer>
    <answer>Drwalem</answer>
  </question>
 <question text = "Gdzie jestem?" >
    <answer>Tutaj</answer>
 </question>
 <question text = "Jak sie tutaj znalazłem" >
   <answer>Nie wiem</answer>
   <answer>Nie powiem</answer>
 </question>
</data>

do answer możesz dopisać jakiś value lub id aby łatwiej było identyfikować odpowiedzi

Zauważ że mógłbyś zagnieżdżać w sobie pytania lub też odpowiednim tagiem "skakać" do innych odpowiedzi , masz też możliwość ich grupowania ;)

 


  • +
  • -
  • 2





Również z jednym lub większą ilością słów kluczowych: c++

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych