Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.42 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. //Główna klasa, reprezentuje cały program C#.
  6. public class Program
  7. {
  8.     //Metoda Main wywoływana w momencie uruchomienia programu.
  9.     public static void Main()
  10.     {
  11.         User applicationUser = new User();
  12.        
  13.         Console.WriteLine("Siema, jesteś chłopcem czy dziewczynką?");
  14.         new Dialogue(new DialogueLine[]{ new DialogueLine("Chłopcem", () => {
  15.             //instrukcje wykonywane, gdy ktoś jest chłopcem
  16.             applicationUser.Gender = Gender.Man;
  17.             //koniec instrukcji wykonywanych, gdy ktoś jest chłopcem
  18.         }),
  19.         new DialogueLine("Dziewczynką", () => {
  20.             //instrukcje wykonywane, gdy ktoś jest dziewczynką
  21.             applicationUser.Gender = Gender.Woman;
  22.             //koniec instrukcji wykonywanych, gdy ktoś jest dziewczynką
  23.         })}).ShowDialogue();
  24.         GenderLang.UserGender = applicationUser.Gender;
  25.  
  26.         Console.WriteLine("No dobra, pajacu, a jak masz na imię?");
  27.         applicationUser.Nickname = Console.ReadLine();
  28.        
  29.         Console.WriteLine("Dobra, dobra, nie produkuj się.\nI tak mnie to chuja interesuje.\n\nPowiedz lepiej, jakie masz samopoczucie, gościu.");
  30.        
  31.         new Dialogue(new DialogueLine[]{new DialogueLine("Super świetnie ekstra wyrąbiście", () => {
  32.             //instrukcje wykonywane, gdy ktoś zaznaczył super
  33.             Console.WriteLine("O ja cie ale super, czy chcesz odpowiedzieć mi coś szczególnego, czym mógłbyś się pochwalić?");
  34.            
  35.             //koniec instrukcji wykonywanych, gdy ktoś zaznaczył super
  36.         }),
  37.         new DialogueLine("Tak sobie ty kurwo złamana", () => {
  38.             //instrukcje wykonywane, gdy ktoś zaznaczył średnio
  39.            
  40.             //koniec instrukcji wykonywanych, gdy ktoś zaznaczył średnio
  41.         }),
  42.         new DialogueLine("Nie za ciekawie misiu pysiu", () => {
  43.             //instrukcje wykonywane, gdy ktoś zaznaczył słabo
  44.            
  45.             //koniec instrukcji wykonywanych, gdy ktoś zaznaczył słabo
  46.         })}).ShowDialogue();
  47.     }
  48. }
  49.  
  50. //Klasa User reprezentuje użytkownika programu.
  51. class User
  52. {
  53.     //Nazwa użytkownika
  54.     public string Nickname;
  55.    
  56.     //Płeć użytkownika.
  57.     public Gender Gender;
  58. }
  59.  
  60. //Prosty typ wyliczeniowy przechowujący typ płci.
  61. enum Gender
  62. {
  63.     Woman, Man
  64. }
  65.  
  66. //Klasa GenderLang umożliwia pobranie właściwych końcówek fleksyjnych w zależności od płci użytkownika.
  67. static class GenderLang
  68. {
  69.     //Przechowuje aktualną płeć użytkownika (domyślnie jest to mężczyzna, ale wartość tę można zmieniać).
  70.     public static Gender UserGender = Gender.Man;
  71.  
  72.     //Zwraca odpowiednią formę wyrazu "chcieć by" w zależności od płci użytkownika.
  73.     public static string ChcialbysChcialabys
  74.     {
  75.         get
  76.         {
  77.             return UserGender == Gender.Man ? "chciałbyś" : "chciałabyś";
  78.         }
  79.     }
  80.    
  81.     //Zwraca odpowiednią formę wyrazu "szczęśliwy" w zależności od płci użytkownika.
  82.     public static string SzczesliwySzczesliwa
  83.     {
  84.         get
  85.         {
  86.             return UserGender == Gender.Man ? "szczęśliwy" : "szczęśliwa";
  87.         }
  88.     }
  89.    
  90.     //Zwraca odpowiednią formę wyrazu "zechcieć" w zależności od płci użytkownika.
  91.     public static string ZechcialesZechcialas
  92.     {
  93.         get
  94.         {
  95.             return UserGender == Gender.Man ? "zechciałeś" : "zechciałaś";
  96.         }
  97.     }
  98. }
  99.  
  100. //Klasa IntChoice służy do wczytywania z klawiatury liczb z podanego zakresu.
  101. class IntChoice
  102. {
  103.     //Minimalna liczba, jaką może wpisać użytkownik.
  104.     private int Min;
  105.    
  106.     //Maksymalna liczba, jaką może wpisać użytkownik.
  107.     private int Max;
  108.    
  109.     //Tworzy nowy obiekt klasy IntChoice.
  110.     public IntChoice(int min, int max)
  111.     {
  112.         //wypierdala error, jeżeli jakiś debil wpisał min większe od max
  113.         if(min > max)
  114.             throw new ArgumentException("ty debilu min nie moze byc wieksze od max");
  115.        
  116.         Min = min;
  117.         Max = max;
  118.     }
  119.    
  120.     //Prosi użytkownika o wprowadzenie liczby z zakresu podanego w konstruktorze i zwraca tę liczbę.
  121.     public int ShowChoice(string message = "Wprowadź liczbę: ")
  122.     {
  123.         int x = 0;
  124.         do {
  125.             x = int.Parse(Console.ReadLine());
  126.         } while(x < Min || x > Max);
  127.         return x;
  128.     }
  129. }
  130.  
  131. //Reprezentuje pojedynczą linię dialogową możliwą do wybrania przez użytkownika.
  132. class DialogueLine
  133. {
  134.     //Opis linii dialogowej wyświetlany użytkownikowi.
  135.     public string Description {get; private set;}
  136.    
  137.     //Akcja do wykonania, gdy użytkownik wybierze tę linię dialogową.
  138.     public Action OnChoice {get; private set;}
  139.    
  140.     //Tworzy nowy obiekt linii dialogowej.
  141.     public DialogueLine(string description, Action onChoice)
  142.     {
  143.         Description = description;
  144.         OnChoice = onChoice;
  145.     }
  146. }
  147.  
  148. //Reprezentuje okno dialogowe składające się z jednej lub kilku linii dialogowych.
  149. class Dialogue
  150. {
  151.     //Przechowuje linie dialogowe danego okna dialogowego.
  152.     private List<DialogueLine> Lines;
  153.    
  154.     //Tworzy pusty obiekt okna dialogowego.
  155.     public Dialogue(){}
  156.    
  157.     //Tworzy nowy obiekt okna dialogowego i inicjalizuje go podanymi liniami dialogowymi.
  158.     public Dialogue(IEnumerable<DialogueLine> lines)
  159.     {
  160.         //Wypierdala error, jeżeli zamiast obiektu jakiś debil przekazał null (wartość zerową)
  161.         if(lines == null) throw new ArgumentNullException();
  162.        
  163.         Lines = lines.ToList();
  164.     }
  165.    
  166.     //Wyświetla dostępne opcje dialogowe, prosi o wybór jednej z nich i wywołuje akcję przypisaną do wybranej linii dialogowej.
  167.     public void ShowDialogue()
  168.     {
  169.         for(int i = 0; i < Lines.Count; i++)
  170.         {
  171.             Console.WriteLine(string.Format("[{0}] {1}", i+1, Lines[i].Description));
  172.         }
  173.        
  174.         int line = new IntChoice(1, Lines.Count).ShowChoice("Wprowadź numer linii dialogowej: ");
  175.         Lines[line-1].OnChoice();
  176.     }
  177.    
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement