/* A Jatekos objektumnak van - azonositoja - nyert meccs szamlaloja A Jatekos kepes - meccset kezdemenyezni - fogadni egy masik Jatekos kezdemenyezeset - kiirni a nyert meccsek szamat A Jatekos kommunikal - A partnerjatekossal */ class Jatekos { int jatekos_szama; int nyert_meccsek = 0; Jatekos( int jsz ) { jatekos_szama = jsz; } // 0 - ko, 1 - papir, 2 - ollo int tipp() { double veletlen = Math.random()*3; // Megszorozzuk 3-mal, hogy a hatarertek // ne 0.3333 ... legyen, hanem 1 es 2 if( veletlen < 1 ) return 0; if( veletlen < 2 ) return 1; return 2; } int MeccsetFogad( int kezdemenyezo_tipp ) { int sajat_tipp = tipp(); System.out.println( "Sajat tipp: "+sajat_tipp+" ellenfel tippje: "+kezdemenyezo_tipp ); // Az ollo (2) csak a ko (0) ellen veszit, ez az egyetlen helyzet, amikor // a nagyobb szamu fogadas veszit egy kisebb szamuval szemben. Ha ilyen eset // van, megvaltoztatjuk az ollo szamat -1-re, hogy az altalanos kiertekelo logika // mukodjon. if( ( kezdemenyezo_tipp == 2 ) && ( sajat_tipp == 0 ) ) kezdemenyezo_tipp = -1; if( ( kezdemenyezo_tipp == 0 ) && ( sajat_tipp == 2 ) ) sajat_tipp = -1; if( sajat_tipp == kezdemenyezo_tipp ) return 0; // Dontetlen if( sajat_tipp < kezdemenyezo_tipp ) return 1; // A partner nyert ++nyert_meccsek; // Kulonben mi nyertunk return 0; } // Jatszik egy meccset egy ellenfellel. Megkapja az ellenfel referenciajat. void MeccsetJatszik( Jatekos ellenfel ) { nyert_meccsek = nyert_meccsek + ellenfel.MeccsetFogad( tipp() ); } void IrdKiANyertMeccseket() { System.out.println( jatekos_szama+". jatekos "+nyert_meccsek+" meccset nyert" ); } } /* A KoPapirOllo a Fogado osztaly neve */ public class KoPapirOllo { void Jatszma() { Jatekos j1 = new Jatekos( 1 ); Jatekos j2 = new Jatekos( 2 ); Jatekos j3 = new Jatekos( 3 ); for( int i = 0 ; i < 20 ; ++i ) { j1.MeccsetJatszik( j2 ); j2.MeccsetJatszik( j3 ); j3.MeccsetJatszik( j1 ); // Ezt ugyan nem kerte a feladat, de nyomkovetesnek hasznos j1.IrdKiANyertMeccseket(); j2.IrdKiANyertMeccseket(); j3.IrdKiANyertMeccseket(); } System.out.println( "-------------- Vegeredmeny --------------" ); j1.IrdKiANyertMeccseket(); j2.IrdKiANyertMeccseket(); j3.IrdKiANyertMeccseket(); } public static void main( String args[] ) { KoPapirOllo k = new KoPapirOllo(); k.Jatszma(); } }