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 koPapirOllo
- {
- enum Eszkoz { Ko, Papir, Ollo }
- class kinaiJatekos
- {
- static protected Random rand = new Random();
- public uint rizsAktual;
- public readonly uint rizsKezd;
- protected int _mohosag;
- public readonly string nev;
- public int mohosag
- {
- get
- {
- return _mohosag;
- }
- set
- {
- if (1 < value && value < 11)
- {
- _mohosag = value;
- }
- else throw new Exception("Kellemetlen érték a mohóságban!");
- }
- }
- public bool akarJatszani()
- {
- if (rizsAktual < 3)
- {
- return false;
- }
- if (rizsKezd * mohosag <= rizsAktual)
- {
- return false;
- }
- return true;
- }
- public virtual Eszkoz felmutat()
- {
- return (Eszkoz)rand.Next(3);
- }
- public kinaiJatekos(uint pRizsKezd, int pMohosag, string pNev)
- {
- rizsAktual = pRizsKezd;
- rizsKezd = pRizsKezd;
- mohosag = pMohosag;
- if (pNev.Length < 20) nev = pNev;
- else throw new Exception("Szok név!");
- }
- }
- class fixKinai : kinaiJatekos
- {
- protected readonly Eszkoz fixErtek;
- public fixKinai(uint pRizsKezd, int pMohosag, string pNev, Eszkoz pEszkoz)
- : base(pRizsKezd, pMohosag, pNev)
- {
- fixErtek = pEszkoz;
- }
- public override Eszkoz felmutat()
- {
- return fixErtek;
- }
- }
- class Biro
- {
- static protected Random rand = new Random();
- protected void elsoNyert(kinaiJatekos elso, kinaiJatekos masodik)
- {
- elso.rizsAktual += 3;
- masodik.rizsAktual -= 3;
- }
- protected void masodikNyert(kinaiJatekos elso, kinaiJatekos masodik)
- {
- elso.rizsAktual -= 3;
- masodik.rizsAktual += 3;
- }
- public virtual int lebonyolit(kinaiJatekos elso, kinaiJatekos masodik)
- {
- // Olcsó megoldás:
- // 0: nem volt játék
- // 1: első nyert
- // 2: második nyert
- // 3: döntetlen
- if (elso.rizsAktual < 3 || elso.rizsAktual < 3)
- {
- Console.WriteLine("Az egyik játékosnak kevés a rizse a játékhoz!");
- return 0;
- }
- if (!elso.akarJatszani() || !masodik.akarJatszani())
- {
- Console.WriteLine("Az egyik játékos nem akar játszani!");
- return 0;
- }
- Eszkoz f1 = elso.felmutat();
- Eszkoz f2 = masodik.felmutat();
- if (f1 == f2)
- {
- Console.WriteLine("Egyformát mutattak!");
- return 3;
- }
- else if ((int)f1 == 2 && (int)f2 == 0) // f1: Ollo, f2: Ko
- {
- // f2 nyert
- Console.WriteLine("Második nyert! (Első: Olló | Második: Kő)");
- masodikNyert(elso, masodik);
- return 2;
- }
- else if ((int)f1 == 2 && (int)f2 == 1) // f1: Ollo, f2: Papir
- {
- // f1 nyert
- Console.WriteLine("Első nyert! (Első: Olló | Második: Papír)");
- elsoNyert(elso, masodik);
- return 1;
- }
- else if ((int)f1 == 1 && (int)f2 == 2) // f1: Papir, f2: Ollo
- {
- // f2 nyert
- Console.WriteLine("Második nyert! (Első: Papír | Második: Olló)");
- masodikNyert(elso, masodik);
- return 2;
- }
- else if ((int)f1 == 1 && (int)f2 == 0) // f1: Papir, f2: Ko
- {
- // f1 nyert
- Console.WriteLine("Első nyert! (Első: Papír | Második: Kő)");
- elsoNyert(elso, masodik);
- return 1;
- }
- else if ((int)f1 == 0 && (int)f2 == 1) // f1: Ko, f2: Papir
- {
- // f2 nyert
- Console.WriteLine("Második nyert! (Első: Kő | Második: Papír)");
- masodikNyert(elso, masodik);
- return 2;
- }
- else if ((int)f1 == 0 && (int)f2 == 2) // f1: Ko, f2: Ollo
- {
- // f1 nyert
- Console.WriteLine("Első nyert! (Első: Kő | Második: Olló)");
- elsoNyert(elso, masodik);
- return 1;
- }
- else return 0; // Nem juthat el ide, de ha valamiért ezt mégis tenné, akkor vegyük úgy, hogy nem volt játék.
- }
- }
- class maffiaBiro : Biro
- {
- protected int _mennyiRizs;
- public int mennyiRizs
- {
- get { return _mennyiRizs; }
- }
- public override int lebonyolit(kinaiJatekos elso, kinaiJatekos masodik)
- {
- int result = base.lebonyolit(elso, masodik);
- if (result == 3)
- {
- elso.rizsAktual--;
- masodik.rizsAktual--;
- _mennyiRizs += 2;
- Console.WriteLine("A maffiabíró eldönti ki nyert!...");
- bool elsoN = rand.Next(2) == 1 ? true : false;
- if (elsoN)
- {
- Console.WriteLine("...az első nyert!");
- elsoNyert(elso, masodik);
- return 1;
- }
- else
- {
- Console.WriteLine("...a második nyert!");
- masodikNyert(elso, masodik);
- return 2;
- }
- }
- else return result;
- }
- }
- class Jatekbarlang
- {
- static Random rand = new Random();
- protected List<kinaiJatekos> kinaiList = new List<kinaiJatekos>();
- protected List<Biro> biroList = new List<Biro>();
- public int kinaiListCount
- {
- get { return kinaiList.Count; }
- }
- public int biroListCount
- {
- get { return biroList.Count; }
- }
- public void addKinai(kinaiJatekos kinai)
- {
- kinaiList.Add(kinai);
- }
- public void removeKinai(kinaiJatekos kinai)
- {
- kinaiList.Remove(kinai);
- }
- public void addBiro(Biro biro)
- {
- biroList.Add(biro);
- }
- public void removeBiro(Biro biro)
- {
- biroList.Remove(biro);
- }
- public void Lebonyolit()
- {
- Biro biro = biroList[rand.Next(biroList.Count)];
- kinaiJatekos kinai1 = kinaiList[rand.Next(kinaiList.Count)];
- kinaiJatekos kinai2 = kinaiList[rand.Next(kinaiList.Count)];
- Console.WriteLine("\nJátékosok: {0} vs. {1}", kinai1.nev, kinai2.nev);
- int result = biro.lebonyolit(kinai1, kinai2);
- if (result == 3)
- {
- Console.WriteLine("Becsületes bíró, és döntetlen lett!");
- }
- }
- int dbTonkrement;
- public int tonkrementKinaiakSzama()
- {
- dbTonkrement = 0;
- foreach (var x in kinaiList)
- {
- if (x.rizsAktual < 3) dbTonkrement++;
- }
- return dbTonkrement;
- }
- int dbMoho;
- public int boldogKinaiakSzama()
- {
- dbMoho = 0;
- foreach (var x in kinaiList)
- {
- if (x.mohosag * x.rizsKezd <= x.rizsAktual) dbMoho++;
- }
- return dbMoho;
- }
- int dbMaffia;
- List<maffiaBiro> maffiaList = new List<maffiaBiro>();
- public int maffiaRizsekSzama()
- {
- dbMaffia = 0;
- foreach (var x in biroList)
- {
- if (x is maffiaBiro)
- {
- maffiaList.Add(x as maffiaBiro);
- }
- }
- foreach (var x in maffiaList)
- {
- dbMaffia += x.mennyiRizs;
- }
- return dbMaffia;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Random rand = new Random();
- Jatekbarlang barlang = new Jatekbarlang();
- for (int i = 0; i < 50; i++)
- {
- barlang.addKinai(rand.Next(11) > 3 ? new kinaiJatekos((uint)rand.Next(10), rand.Next(2, 11), String.Format("Ying{0}",rand.Next(10,100))) : new fixKinai((uint)rand.Next(10), rand.Next(2, 11), String.Format("Xian{0}",rand.Next(10,100)), (Eszkoz)rand.Next(3)));
- }
- for (int i = 0; i < 8; i++)
- {
- barlang.addBiro(rand.Next(11) > 2 ? new Biro() : new maffiaBiro());
- }
- for (int i = 0; i < 100; i++)
- {
- barlang.Lebonyolit();
- }
- Console.WriteLine("\n\nEREDMÉNYEK:");
- Console.WriteLine("Tönkrement kinainak száma: {0}", barlang.tonkrementKinaiakSzama());
- Console.WriteLine("Boldog kinainak száma: {0}", barlang.boldogKinaiakSzama());
- Console.WriteLine("Maffiabírok rizseinek száma: {0}", barlang.maffiaRizsekSzama());
- Console.ReadLine();
- }
- }
- }
- // HÁZI
- // 21ezés
- //http://aries.ektf.hu/~hz/wiki7/mprog2gy/gyak-10
Advertisement
Add Comment
Please, Sign In to add comment