Problem z grą tekstową "Milionerzy"

0

Witam!
Mam problem ze zrobienie gry tekstowej. Opiera się ona na zagadkach i odpowiedziach na nich i wykrzacza się przy paru odpowiedziach. Zaczne od wstawienia kodu:

program milionerzy;
USES CRT;
VAR imie : String;
        aaa : byte;
        zgoda,zgoda1,zgoda11,zgoda4,zgoda123,zgoda5,zgoda22: char;
        zagadka2,zagadka3,zagadka4,zagadka5,odp: String;
 
BEGIN
CLRSCR;
WriteLn('Czesc. Podaj swoje imie: ');
ReadLn(imie);
WriteLn('...i wiek.');
ReadLn(aaa);
WriteLn('Czesc ',aaa,'-letni ',imie,'!');
WriteLn('Mam pewna, zagadke dla Ciebie. Chcesz sprobować swoich sil? T/N');
ReadLn(zgoda);
IF zgoda='N' THEN
Begin
  WriteLn('Ok, dosyc Cie dzisiaj wymeczylem, koniec na dzisiaj. Nacisnij ENTER aby zakonczyc');
  ReadLn;
End;
IF zgoda='T' then
Begin
WriteLn('Ok, co to jest: zolte i kopie?');
ReadLn(odp);
IF odp='koparka' THEN
  Begin
   WriteLn('Dobrze! Grasz dalej? T/N');
   ReadLn(zgoda11);
   IF zgoda11='N' THEN
        Begin
        WriteLn('Ok, nie chcesz grac, moze sprobujesz kiedy indziej. Tymczasem nacisnij ENTER aby zakonczyc gre.');
        ReadLn;
        End;
   IF zgoda11='T' THEN
        Begin
        WriteLn('Co to jest: wisi na scianie i placze?');
        ReadLn(zagadka3);
        IF zagadka3='nie wiem' THEN
        Begin
        WriteLn('Poprawna odpowiedź to "DUPA NIE ALPINISTA"');
        ReadLn;
        End;
        IF zagadka3='dupa-nie-alpinista' THEN
        BEGIN
        WriteLn('Dobrze! Grasz dalej? T/N');
        ReadLn;
        IF zgoda1='N' THEN
        Begin
                WriteLn('Ok, nie chcesz grac, moze sprobujesz kiedy indziej. Tymczasem nacisnij ENTER aby zakonczyc gre.');
                ReadLn;
        End;
        IF zgoda1='T' THEN
        Begin
                WriteLn('Co to jest rozniczka?');
                ReadLn(zagadka5);
                IF zagadka5='rozniczka' THEN
        BEGIN
                WriteLn('Dobrze! Grasz dalej? T/N');
                ReadLn(zgoda123);
                IF zgoda123='N' THEN
                Begin
                WriteLn('Ok, nie chcesz grac, moze sprobujesz kiedy indziej.');
                WriteLn('Tymczasem nacisnij ENTER aby zakonczyc gre.');
                ReadLn;
                End;
                IF zgoda123='T' THEN
                Begin
                WriteLn('Brawo! Jeste bardzo blyskotliwy, zagadki nie byly najlatwiejsze...');
                ReadLn;
                WriteLn('...a Ty podolale wszystkim!');
                ReadLn;
                WriteLn('Nacisnij ENTER aby zakonczyc  gre :).');
                ReadLn;
                End;
        End;
                IF zagadka5='nie wiem' THEN
        Begin
                WriteLn('WYNICZEK ODEJMOWANKA!!');
                ReadLn;
        End;
                IF zagadka5='' THEN
        Begin
                WriteLn('WYNICZEK ODEJMOWANKA!!');
                ReadLn;
        End;
        End;
        End;
        End;
   End;
  IF zagadka3='nie wiem' THEN
  Begin
   WriteLn('PRZEGRAŁEŚ!!');
   ReadLn;
  End;
IF odp='nie wiem' THEN
        BEGIN
   WriteLn('Zle! Nacisniej ENTER aby zakonczyc');
                ReadLn;
  End;
End;
End;
End;
End.

Pierwsze z czym mam problem to

IF odp='nie wiem' THEN
        BEGIN
   WriteLn('Zle! Nacisniej ENTER aby zakonczyc');
                ReadLn,
0

Ale co to znaczy "przy paru odpowiedziach"?? Przy jakiejś konkretnej, losowej? I co znaczy "wykrzacza"?

0
         zgoda,zgoda1,zgoda11,zgoda4,zgoda123,zgoda5,zgoda22: char;

Nie potrzebujesz osobnej zmiennej do każdego pytania.

0

Proponowałbym usiąść i jeszcze raz napisać kod od nowa, tym razem likwidując te potworne zmienne i wykorzystując instrukcję wyboru case .. of na rzecz tych ifów; Więc poczytaj jeszcze trochę i zastanów się jak można ten kod napisać bardziej elegancko;

Wątek przenoszę do działu dla początkujących bo widzę, że jeszcze raczkujesz w tym temacie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1