A InfoWiki wikiből
Tartalomjegyzék |
Kő, Papír, Olló
A kínaiak a betakarítás utám vállukon egy zsák rizzsel elballagnak a Plazaba, hogy ott az Arénában szerencsejátékok segítségével eljátszák vagy megduplázzák a termés mennyiségét. Az Arénában egymással kjő/papír/olló játékot játszanak, egy Bíró felügyelete mellett. A bíró ismeri a játékszabályokat, bonyolítja le a játékot, határozza meg ki nyert és ki veszített.
Alap Játékos Osztály
Az alap osztály a kő/papír/olló játék során szükséges. Alábbiakat tudja:
- felmutat() fv - random megadja a kő/papír/olló értékek valamelyikét
Kínai Játékos osztály
Az ALAP osztályból van továbbfejlesztve. Alábbiak szerint:
- rizs mező - tartalmazza, hogy mennyi rizs van az adott kínai játékosnál, nem lehet negatív, külvilág nem tudja módosítani az értékét
- konstruktor() fv - ezen keresztül lehet beállítani a rizs induló mennyiségét
- nyer() fv - a bíró hívja majd meg, ekkor a kínai növelheti a nála lévő rizs mennyiségét 1-el, hiszen nyert
- veszit() fv - a bíró hívja majd meg, ekkor a kínainak csökkentenie kell a nála lévő rizs mennyiségét 1-el, hiszen vesztett
- van_e_rizsed() fv - a bíró kérdezi, hogy van-e elég rizs nála egy következő játékhoz
Fix Kínai osztály
A Kinai Jatekos fejlesztése. Egy ilyen játékos nem random választ felmutatandó értéket, hanem mindíg ugyanazt az értéket (mondjuk mindíg követ) mutat. Ezt születésekor eldöntötték az Istenek, ettől nem tér el. A konstruktorában kell beállítani mit mutat majd fel következetesen.
Egyszerű Bíró
Egyetlen függvénye van, a lebonyolit(), amely két kínai játékost (egyszerű vagy fix) kap paraméterként. Miután ellenőrízte hogy mindkettőnek van-e elég rizse egy játék lebonyolításához, majd felkéri a játékosokat a felmutatásra, eldönti ki nyert, elosztja a rizst. Ha döntetlen lett, akkor senki sem nyer és veszít rizst.
Triád Bíró
A helyi maffia által kiképzett bíró, annyiban más, hogy amikor a két játékos döntetlent hoz ki, akkor A BANK NYERT! felkiáltással mindkettőtől elveszi a rizst, és magánál tartja.
Aréna osztály
- jatekosok_listaja - egy lista, amelyben az Aréna területén bent lévő játékosok szerepelnek (vannak közöttük egyszerű, és fix játékosok is)
- birok_listaja - egy lista, amelyben a bírók szerepelnek (egyszerű, és triád bírók is)
- jatekos_belep() fv - ha egy játékos belép az arénába, akkor ott ellenőrzik, hogy van-e nála rizs, ha igen, akkor bekerül a listára
- biro_belep() fv - bírók lépnek az arénába
- egy_jatek() fv - az aréna választ random két játékost a listáról, és egy bírót, felkéri a bírót a játék lebonyolítására.
Főprogram
Létrehozza az Arénát, és random módon 80% eséllyel hol egy normál, hogy egy fix kínai játékost léptet be. A fix kínai játékosok random egyforma eséllyel választanak maguknak fix jelet (kő,papír,olló). Az induló rizs mennyiség legyen random 3-6 egység. Összesen 50 játékos legyen az Arénában. Aztán legyen 10 darab bíró, 70% eséllyel triád, 30% normál bíró.
A főprogram ezek után játszasson le 10000 menetet. A végén írassuk ki, melyik játékosnak mennyi rizse maradt, és melyik triád bírónál mennyi rizs van. Adjuk meg, a játékosok hány százaléka veszítette el az összes rizsét.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { enum jatek { ko=0, papir=1, ollo=2 } class alap_jatekos { static Random rnd = new Random(); virtual public jatek felmutat() { int x = rnd.Next(0, 3); return (jatek)x; } } class kinai_jatekos : alap_jatekos { protected int _rizs; public kinai_jatekos(int indulo_rizs) { if (indulo_rizs < 0) throw new Exception("nem lehet neg"); _rizs = indulo_rizs; } public int rizs { get { return _rizs; } } public bool van_e_rizs() { return (_rizs > 0); } public void veszit() { if (_rizs == 0) throw new Exception("nem veszthetek!"); _rizs--; } public void nyeres() { _rizs++; } } class fix_kinai : kinai_jatekos { protected jatek rogzitett_ertek; public fix_kinai(int indulo_rizs,jatek fix):base(indulo_rizs) { rogzitett_ertek = fix; } override public jatek felmutat() { return rogzitett_ertek; } } class Program { static void Main(string[] args) { } } }