• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Skrócenie kodu

0 głosów
412 wizyt
pytanie zadane 18 stycznia 2021 w C# przez Ipencjaseko Nowicjusz (120 p.)

Co mogę zrobić żeby skrócić ten kod?

dopiero co zacząłem a już jest strasznie duży :/

 

 Console.WriteLine("witaj w grze konsolowej bazowanej na książce Stephena Kinga pod tytułem Instytut!");
            Console.WriteLine("podaj Imię by zacząć");
            string imie = Console.ReadLine();
            Console.Write("witaj ");
            Console.Write(imie);
            Console.Write(" pora zacząć grę");
            Console.ReadKey();

            Console.Clear();
            Console.WriteLine("budzisz się w swoim pokoju ale jednak coś tu nie pasuje...");
            Console.WriteLine("");
        wybor1:
            Console.WriteLine("opcja 1: rozejrzyj się dokładniej");
            Console.WriteLine("opcja 2: wyjdź z pokoju");
            Console.WriteLine("opcja 3: włącz komputer");
            Console.WriteLine("(wpisz numer wyboru 1,2,3 itd.)");
            int wybor = int.Parse(Console.ReadLine());
            switch (wybor)
            {
                case 1:

                    Console.Clear();
                    Console.WriteLine("zauważasz że w pokoju nie ma okien, a niektóre detale się też nie zgadzają");
                    Console.WriteLine("wszystko wydaje się nowe nic nie ma ani śladu użytkowania");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor1;

                case 2:
                    Console.Clear();
                    Console.WriteLine("ubierasz się (przy okazji zauważasz że w szafie ubrania są inne niż zazwyczaj) po czym, wychodzisz z pokoju");
                    Console.ReadKey();
                    Console.Clear();
                    goto korytarz1raz;

                case 3:
                    Console.Clear();
                    Console.WriteLine("próbujesz włączyć komputer jednak zatrzymuje cię ekran na którym pisze : pokaż żeton do kamery aby włączyć komputer");
                    Console.WriteLine("Dziwne...");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor1;

                default:
                    Console.Clear();
                    Console.WriteLine("nie ma takiej opcji wybacz");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor1;


            }
        korytarz1raz:
            Console.WriteLine("po wyjściu z pokoju jesteś pewny/na że to nie jest już twój dom.");
            Console.WriteLine("ściany są zrobione z pustaków pomalowanych na zielono, z okien jest widok na las");
            Console.WriteLine("a pprzed tobą wisi plakat");
            Console.WriteLine("co robisz?");
            Console.WriteLine("");
        wybor2:
            Console.WriteLine("opcja 1: rozejrzyj się dokładniej");
            Console.WriteLine("opcja 2: wejdź do pokoju");
            Console.WriteLine("opcja 3: obejrzyj plakat");
            Console.WriteLine("opcja 4: pójdź dalej w korytarz");
            Console.WriteLine("(wpisz numer wyboru 1,2,3 itd.)");
            int wybor2 = int.Parse(Console.ReadLine());
            switch (wybor2)
            {
                case 1:

                    Console.Clear();
                    Console.WriteLine("Twój pokuj nie jest jedyny na korytarzu jest też sporo innych pokoi");
                    Console.WriteLine("na twoim pisze numer 7");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor2;

                case 2:
                    Console.Clear();
                    Console.WriteLine("wchodzisz do pokoju");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor1;

                case 3:
                    Console.Clear();
                    Console.WriteLine("Na plakacie widnieją szczęśliwe dzieci które trzymają się za ręce i biegną przez łąkę");
                    Console.WriteLine("Pod spodem widnieje napis 'kolejny dzień w raju");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor2;

                case 4:
                    Console.Clear();
                    Console.WriteLine("w głębi są 2 drzwi");
                    Console.WriteLine("po prawej stronie są drzwi nad którymi pisze stołówka, a po lewej świetlica");
                    Console.ReadKey();
                    goto korytarz2;

                default:
                    Console.Clear();
                    Console.WriteLine("nie ma takiej opcji wybacz");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor2;
            }
        korytarz2:
            Console.WriteLine("");
            Console.WriteLine("opcja 1: wejdź do prawych drzwi");
            Console.WriteLine("opcja 2: wejdź do lewych drzwi");
            Console.WriteLine("opcja 3: wróć do 1 części korytarza");
            Console.WriteLine("(wpisz numer wyboru 1,2,3 itd.)");
            int wybor3 = int.Parse(Console.ReadLine());
            switch (wybor3)
            {
                case 1:

                    Console.Clear();
                    Console.WriteLine("Dalsza cześć ko");
                    
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor2;

                case 2:
                    Console.Clear();
                    Console.WriteLine("wchodzisz do pokoju");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor1;

                case 3:
                    Console.Clear();
                    Console.WriteLine("Na plakacie widnieją szczęśliwe dzieci które trzymają się za ręce i biegną przez łąkę");
                    Console.WriteLine("Pod spodem widnieje napis 'kolejny dzień w raju");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor2;

                case 4:
                    Console.Clear();
                    Console.WriteLine("w głębi są 2 drzwi");
                    Console.WriteLine("po prawej stronie są drzwi nad którymi pisze stołówka, a po lewej świetlica");
                    Console.ReadKey();
                    goto wybor2;

                default:
                    Console.Clear();
                    Console.WriteLine("nie ma takiej opcji wybacz");
                    Console.ReadKey();
                    Console.Clear();
                    goto wybor2;

 

komentarz 19 stycznia 2021 przez Siemił Mądrala (7,380 p.)

Poczytaj o programowaniu obiektowym oraz dlaczego nie używać 'goto'. Jeśli chodzi o grę tekstową którą piszesz, bardzo fajny tutorial znajdziesz tu: Bulid a rpg in c#

komentarz 19 stycznia 2021 przez Ipencjaseko Nowicjusz (120 p.)
Wow megaśnie mi pomogłeś dzięki :)
komentarz 20 stycznia 2021 przez sunzi Bywalec (2,000 p.)

Dodam od siebie dwa grosze, że w niektórych klasach problemów goto może być użyteczne (np w implementacji maszyny stanów), więc podchodzenie zero jedynkowe nie jest dobre bez lepszego zrozumienia dlaczego goto jest złe. W sumie implementacja logiki gry przypomina mi implementacje maszyny stanów. Do niczego oczywiście nie namawiam. Jeśli da się uniknąć goto bez uszczerbku na czytelności i prostocie kodu, to jak najbardziej należy je wyeliminować. Bardziej chciałem się podzielić ciekawostką, że czasami goto może mieć sens ;)

komentarz 20 stycznia 2021 przez Siemił Mądrala (7,380 p.)
Po pierwsze, moim zdaniem, jak się czegoś uczysz to na początku najlepiej podchodzić zero-jedynkowo. Po drugie nie zgodzę się żeby 'goto' przyczyniało się do przejrzystości kodu, w żadnym przypadku. Bez urazy,

1 odpowiedź

+1 głos
odpowiedź 18 stycznia 2021 przez DobryKurczak Bywalec (2,320 p.)
Skrócić kod to może ciężko, ale możesz poza mainem (bo jak rozumiem to się wykonuje w mainie) zrobić funkcje typu void wybierze_1() i będziesz je wywoływać, przez co kod będzie bardziej czytelny. Myślę, że rozumiesz o co mi chodzi :)
komentarz 18 stycznia 2021 przez Ipencjaseko Nowicjusz (120 p.)
Tak rozumiem właściwie nie wiem dlaczego na to nie wpadłem :) dzięki

Podobne pytania

0 głosów
1 odpowiedź 220 wizyt
pytanie zadane 13 sierpnia 2018 w JavaScript przez warzywko13 Użytkownik (840 p.)
0 głosów
1 odpowiedź 180 wizyt
pytanie zadane 9 stycznia 2018 w Nasze projekty przez Piotrek Korzeniewski Początkujący (360 p.)
0 głosów
1 odpowiedź 483 wizyt
pytanie zadane 16 kwietnia 2022 w Python przez niezalogowany

93,425 zapytań

142,421 odpowiedzi

322,647 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...