A InfoWiki wikiből
a |
a |
||
40. sor: | 40. sor: | ||
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. | 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. | ||
+ | |||
+ | |||
+ | <code lang="csharp"> | ||
+ | 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(); | ||
+ | public jatek felmutat() | ||
+ | { | ||
+ | int x = rnd.Next(0, 3); | ||
+ | return (jatek)x;0 | ||
+ | } | ||
+ | } | ||
+ | |||
+ | 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 Program | ||
+ | { | ||
+ | static void Main(string[] args) | ||
+ | { | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> |
A lap 2010. március 4., 08:18-kori változata
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(); public jatek felmutat() { int x = rnd.Next(0, 3); return (jatek)x;0 } } 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 Program { static void Main(string[] args) { } } }