Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace _2_zh_mk
- {
- class Asztal
- {
- // Mezők
- Random rand = new Random();
- public List<Jatekos> jatekosLista = new List<Jatekos>();
- List<Jatekos> aktivJatekosLista = new List<Jatekos>();
- protected int _penzAzAsztalon;
- public int penzAzAsztalon
- {
- get
- {
- return _penzAzAsztalon;
- }
- }
- protected int _hanyadikKor;
- public int hanyadikKor
- {
- get
- {
- return _hanyadikKor;
- }
- set
- {
- if (value == hanyadikKor + 1)
- {
- _hanyadikKor += value;
- }
- else throw new Exception("Csak megnövelni lehet az értékét, azt is csak 1-gyel!");
- }
- }
- public Jatekos utolsoJatekos;
- // Függvények
- public void ujJatekKezd()
- {
- _hanyadikKor = 0;
- _penzAzAsztalon = 0;
- if (aktivJatekosLista.Count > 0)
- {
- foreach (var x in aktivJatekosLista)
- {
- jatekosLista.Add(x);
- }
- aktivJatekosLista.Clear();
- }
- }
- public Jatekos randomJatekos()
- {
- if (jatekosLista.Count == 0) return null;
- int index = rand.Next(jatekosLista.Count);
- aktivJatekosLista.Add(jatekosLista[index]);
- utolsoJatekos = jatekosLista[index];
- jatekosLista.RemoveAt(index);
- return utolsoJatekos;
- }
- public void penzLetesz(uint mennyit)
- {
- _penzAzAsztalon += (int)mennyit;
- }
- // Konstruktor (biztonsági okokból)
- public Asztal()
- {
- _hanyadikKor = 0;
- _penzAzAsztalon = 0;
- }
- }
- class Jatekos
- {
- // Mezők
- protected Random rand = new Random();
- public readonly int sorszam;
- public readonly int kezdopenz;
- protected int _aktPenz;
- public int aktPenz
- {
- get
- {
- return _aktPenz;
- }
- }
- protected Asztal asztal;
- public int szamokOsszege; // protected esetén a fordító hibát írt ki: a szamokOsszege mezőnek a Csalo tipusból kellene erednie, legalábbis ezt írta
- // Függvények
- public void Nyeremeny(uint mennyit)
- {
- _aktPenz += (int)mennyit;
- }
- public bool kiemeltJatekosnakValaszt()
- {
- if (aktPenz >= 5)
- {
- asztal.penzLetesz(5);
- _aktPenz -= 5;
- Console.WriteLine("{0}. játékos: betett 5$-t!", sorszam);
- return true;
- }
- return false;
- }
- public virtual int szamotKerek()
- {
- if (aktPenz > 0)
- {
- asztal.penzLetesz(1);
- _aktPenz -= 1;
- Console.WriteLine("{0}. játékos: betett 1$-t!", sorszam);
- asztal.hanyadikKor++;
- return rand.Next(1, 9);
- }
- return 0;
- }
- public virtual int Jatek(int a, int b)
- {
- Jatekos jatekos = asztal.randomJatekos();
- if (jatekos == null) throw new Exception("Nincs több játékos!"); // bár ez nem fordulhat elő :D
- jatekos.szamokOsszege += (a + b);
- for (int i = 0; i < 20; i++)
- {
- int szam = jatekos.szamotKerek();
- Console.WriteLine("{0}. játékos kapott számot: {1}", sorszam, szam);
- if (jatekos.szamokOsszege + szam < 19)
- {
- jatekos.szamokOsszege += szam;
- continue;
- }
- break;
- }
- return jatekos.szamokOsszege;
- }
- public void Mester()
- {
- Jatekos jatekos;
- int count = 0;
- do
- {
- jatekos = asztal.randomJatekos();
- if (count >= asztal.jatekosLista.Count) return; // kerüljük el a végtelen ciklust
- count++;
- } while (!jatekos.kiemeltJatekosnakValaszt());
- int eredmeny = jatekos.Jatek(rand.Next(1, 9), rand.Next(1, 9));
- if (eredmeny >= 23)
- {
- _aktPenz += asztal.penzAzAsztalon;
- Console.WriteLine("Túlment 23-on!");
- }
- else if (eredmeny == 21)
- {
- if (aktPenz >= asztal.penzAzAsztalon)
- asztal.penzLetesz((uint)asztal.penzAzAsztalon);
- else
- {
- _aktPenz = 0;
- asztal.penzLetesz((uint)aktPenz);
- }
- asztal.utolsoJatekos._aktPenz += asztal.penzAzAsztalon;
- Console.WriteLine("21-et mondtak! Sorszáma: {0}", asztal.utolsoJatekos.sorszam);
- }
- else
- {
- jatekos._aktPenz += asztal.penzAzAsztalon;
- Console.WriteLine("19 és 23 közé esett a szám!");
- }
- }
- // Konstruktor
- public Jatekos(int sorszam, int kezdopenz, Asztal asztal)
- {
- this.sorszam = sorszam;
- this.kezdopenz = kezdopenz;
- this._aktPenz = kezdopenz;
- this.asztal = asztal;
- }
- }
- class Csalo : Jatekos
- {
- public override int Jatek(int a, int b)
- {
- Jatekos jatekos = asztal.randomJatekos();
- if (jatekos == null) throw new Exception("Nincs több játékos!"); // bár ez nem fordulhat elő :D
- jatekos.szamokOsszege += (a + b);
- for (int i = 0; i < 20; i++)
- {
- int szam = jatekos.szamotKerek();
- Console.WriteLine("{0}. játékos kapott számot: {1}", sorszam, szam);
- if (jatekos.szamokOsszege + szam <= 23)
- {
- jatekos.szamokOsszege += szam;
- continue;
- }
- break;
- }
- return jatekos.szamokOsszege;
- }
- public Csalo(int sorszam, int kezdopenz, Asztal asztal) : base(sorszam, kezdopenz, asztal) { }
- }
- class UgyesJatekos : Jatekos
- {
- public override int szamotKerek()
- {
- if (aktPenz > 0)
- {
- asztal.penzLetesz(1);
- _aktPenz -= 1;
- Console.WriteLine("{0}. játékos: betett 1$-t!", sorszam);
- asztal.hanyadikKor++;
- int a = asztal.hanyadikKor;
- if (asztal.hanyadikKor > 6)
- {
- a = 6;
- }
- return rand.Next(1, 9 - a); // nem akarjuk hogy a maxRange a minRange alá esen
- }
- return 0;
- }
- public UgyesJatekos(int sorszam, int kezdopenz, Asztal asztal) : base(sorszam, kezdopenz, asztal) { }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Random rand = new Random();
- Asztal asztal = new Asztal();
- for (int i = 0; i < 40; i++)
- {
- int x = rand.Next(11);
- if (x <= 7)
- asztal.jatekosLista.Add(new Jatekos(i, rand.Next(20, 41), asztal));
- else if (x <= 9)
- asztal.jatekosLista.Add(new UgyesJatekos(i, rand.Next(20, 41), asztal));
- else asztal.jatekosLista.Add(new Csalo(i, rand.Next(20, 41), asztal));
- }
- Jatekos mester = asztal.randomJatekos();
- for (int i = 0; i < 40; i++)
- {
- asztal.ujJatekKezd();
- mester.Mester();
- }
- foreach (var jatekos in asztal.jatekosLista)
- {
- Console.WriteLine("\n\n");
- Console.WriteLine("{0}. játékos:", jatekos.sorszam);
- Console.WriteLine("Kezdőpénz: {0}", jatekos.kezdopenz);
- Console.WriteLine("Ennyi lett/maradt a végére: {0}", jatekos.aktPenz);
- if (jatekos is Csalo)
- Console.WriteLine("Csaló játékos!");
- else if (jatekos is UgyesJatekos)
- Console.WriteLine("Ügyes játékos!");
- else Console.WriteLine("Közönséges játékos!");
- }
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement