Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Collections.Generic;
- //Główna klasa, reprezentuje cały program C#.
- public class Program
- {
- //Metoda Main wywoływana w momencie uruchomienia programu.
- public static void Main()
- {
- User applicationUser = new User();
- Console.WriteLine("Siema, jesteś chłopcem czy dziewczynką?");
- new Dialogue(new DialogueLine[]{ new DialogueLine("Chłopcem", () => {
- //instrukcje wykonywane, gdy ktoś jest chłopcem
- applicationUser.Gender = Gender.Man;
- //koniec instrukcji wykonywanych, gdy ktoś jest chłopcem
- }),
- new DialogueLine("Dziewczynką", () => {
- //instrukcje wykonywane, gdy ktoś jest dziewczynką
- applicationUser.Gender = Gender.Woman;
- //koniec instrukcji wykonywanych, gdy ktoś jest dziewczynką
- })}).ShowDialogue();
- GenderLang.UserGender = applicationUser.Gender;
- Console.WriteLine("No dobra, pajacu, a jak masz na imię?");
- applicationUser.Nickname = Console.ReadLine();
- Console.WriteLine("Dobra, dobra, nie produkuj się.\nI tak mnie to chuja interesuje.\n\nPowiedz lepiej, jakie masz samopoczucie, gościu.");
- new Dialogue(new DialogueLine[]{new DialogueLine("Super świetnie ekstra wyrąbiście", () => {
- //instrukcje wykonywane, gdy ktoś zaznaczył super
- Console.WriteLine("O ja cie ale super, czy chcesz odpowiedzieć mi coś szczególnego, czym mógłbyś się pochwalić?");
- //koniec instrukcji wykonywanych, gdy ktoś zaznaczył super
- }),
- new DialogueLine("Tak sobie ty kurwo złamana", () => {
- //instrukcje wykonywane, gdy ktoś zaznaczył średnio
- //koniec instrukcji wykonywanych, gdy ktoś zaznaczył średnio
- }),
- new DialogueLine("Nie za ciekawie misiu pysiu", () => {
- //instrukcje wykonywane, gdy ktoś zaznaczył słabo
- //koniec instrukcji wykonywanych, gdy ktoś zaznaczył słabo
- })}).ShowDialogue();
- }
- }
- //Klasa User reprezentuje użytkownika programu.
- class User
- {
- //Nazwa użytkownika
- public string Nickname;
- //Płeć użytkownika.
- public Gender Gender;
- }
- //Prosty typ wyliczeniowy przechowujący typ płci.
- enum Gender
- {
- Woman, Man
- }
- //Klasa GenderLang umożliwia pobranie właściwych końcówek fleksyjnych w zależności od płci użytkownika.
- static class GenderLang
- {
- //Przechowuje aktualną płeć użytkownika (domyślnie jest to mężczyzna, ale wartość tę można zmieniać).
- public static Gender UserGender = Gender.Man;
- //Zwraca odpowiednią formę wyrazu "chcieć by" w zależności od płci użytkownika.
- public static string ChcialbysChcialabys
- {
- get
- {
- return UserGender == Gender.Man ? "chciałbyś" : "chciałabyś";
- }
- }
- //Zwraca odpowiednią formę wyrazu "szczęśliwy" w zależności od płci użytkownika.
- public static string SzczesliwySzczesliwa
- {
- get
- {
- return UserGender == Gender.Man ? "szczęśliwy" : "szczęśliwa";
- }
- }
- //Zwraca odpowiednią formę wyrazu "zechcieć" w zależności od płci użytkownika.
- public static string ZechcialesZechcialas
- {
- get
- {
- return UserGender == Gender.Man ? "zechciałeś" : "zechciałaś";
- }
- }
- }
- //Klasa IntChoice służy do wczytywania z klawiatury liczb z podanego zakresu.
- class IntChoice
- {
- //Minimalna liczba, jaką może wpisać użytkownik.
- private int Min;
- //Maksymalna liczba, jaką może wpisać użytkownik.
- private int Max;
- //Tworzy nowy obiekt klasy IntChoice.
- public IntChoice(int min, int max)
- {
- //wypierdala error, jeżeli jakiś debil wpisał min większe od max
- if(min > max)
- throw new ArgumentException("ty debilu min nie moze byc wieksze od max");
- Min = min;
- Max = max;
- }
- //Prosi użytkownika o wprowadzenie liczby z zakresu podanego w konstruktorze i zwraca tę liczbę.
- public int ShowChoice(string message = "Wprowadź liczbę: ")
- {
- int x = 0;
- do {
- x = int.Parse(Console.ReadLine());
- } while(x < Min || x > Max);
- return x;
- }
- }
- //Reprezentuje pojedynczą linię dialogową możliwą do wybrania przez użytkownika.
- class DialogueLine
- {
- //Opis linii dialogowej wyświetlany użytkownikowi.
- public string Description {get; private set;}
- //Akcja do wykonania, gdy użytkownik wybierze tę linię dialogową.
- public Action OnChoice {get; private set;}
- //Tworzy nowy obiekt linii dialogowej.
- public DialogueLine(string description, Action onChoice)
- {
- Description = description;
- OnChoice = onChoice;
- }
- }
- //Reprezentuje okno dialogowe składające się z jednej lub kilku linii dialogowych.
- class Dialogue
- {
- //Przechowuje linie dialogowe danego okna dialogowego.
- private List<DialogueLine> Lines;
- //Tworzy pusty obiekt okna dialogowego.
- public Dialogue(){}
- //Tworzy nowy obiekt okna dialogowego i inicjalizuje go podanymi liniami dialogowymi.
- public Dialogue(IEnumerable<DialogueLine> lines)
- {
- //Wypierdala error, jeżeli zamiast obiektu jakiś debil przekazał null (wartość zerową)
- if(lines == null) throw new ArgumentNullException();
- Lines = lines.ToList();
- }
- //Wyświetla dostępne opcje dialogowe, prosi o wybór jednej z nich i wywołuje akcję przypisaną do wybranej linii dialogowej.
- public void ShowDialogue()
- {
- for(int i = 0; i < Lines.Count; i++)
- {
- Console.WriteLine(string.Format("[{0}] {1}", i+1, Lines[i].Description));
- }
- int line = new IntChoice(1, Lines.Count).ShowChoice("Wprowadź numer linii dialogowej: ");
- Lines[line-1].OnChoice();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement