public Kirjautuminen(string pukKoodi) { this.tietovarasto = new Tietovarasto(); // Ensimmäisessä käynnistyksessä määritetään PIN-koodi käyttäjälle tallentaen sen // Salattuna tietokantaan, ja joka myöhemmin haetaan sieltä if (tietovarasto.getPinPuk() == null) { this.pukKoodi = SecurePasswordHasher.Hash(pukKoodi); tietovarasto.luoKirjautumisTaulu(); vaihdaPin(); tietovarasto.lisaaKirjautumisRivi(this.pinKoodi, this.pukKoodi); } this.pinKoodi = tietovarasto.getPinPuk()[0]; this.pukKoodi = tietovarasto.getPinPuk()[1]; this.pinYritysKerta = 3; this.pukYritysKerta = 3; this.onLukittu = false; }
public void Pelaa() { Console.WriteLine("Tervetuloa KPS peliin. Tarkoituksena on saada mahdollisimman suuri voittoprosentti."); Console.WriteLine("Voit käyttää niin paljon vuoroja kuin haluat, mutta vähintään 10 vuoroa"); Console.WriteLine("Palkinnoksi paras voittoprosentti pääsee tulostaulun johtoon!!"); Console.WriteLine("Pelaa kirjoittamalla 'kivi, 'paperi' tai 'sakset' tai lopeta peli kirjoittamalla 'lopeta'"); while (onKaynnissa) { string siirto = Console.ReadLine().ToLower(); string tekoAlynSiirto = tekoAly.pelaa(); tekoAly.muistaPelaajanSiirto(siirto); this.paivitaTulos(siirto, tekoAlynSiirto); statistiikka(); if (siirto.Equals("lopeta")) { if (siirrot <= 10) { Console.WriteLine("Pelaa vähintään 10 vuoroa"); continue; } Tietovarasto tv = new Tietovarasto(); Console.Write("Anna nimimerkki: "); string nimimerkki = Console.ReadLine(); // Jos ei ole tulostaulua niin tekee sellaisen if (tv.getTulostaulu() == null) { tv.luoTulostaulu(); } tv.lisaaTulos(nimimerkki, voitot, haviot, tasapelit); tulostaulu(tv); this.onKaynnissa = false; } } }
// Printtaa tulostaulun private void tulostaulu(Tietovarasto tv) { List <Pelaaja> tulostaulu = tv.getTulostaulu(); if (tulostaulu != null) { // Vaihtaa järjestyksen, että korkein voitto % näytetään ensimmäisenä tulostaulu.Sort((x, y) => y.Voittoprosentti.CompareTo(x.Voittoprosentti)); // Stringformatin ensimmäinen numero on string, joka tulee vuorojärjestyksessä // Toinen numero on paikkojen määrä joka varataan merkeille // :f2 tarkoittaa 2 desimaalin tarkkuutta floateille Console.WriteLine(String.Format("{0,12} {1,12:f2} {2,12} {3,12} {4,12}", "Nimimerkki", "Voitto %", "Voitot", "Häviöt", "Tasapelit")); // Käy läpi jokaisen pelaajan, printaten statistiikat foreach (Pelaaja p in tulostaulu) { //Varataan 12 paikkaa ja W%:lle 2 desimaalia, ettei tule loputonta deciä Console.WriteLine(String.Format("{0,12} | {1,12:p2} | {2,12} | {3,12} | {4,12} ", p.Nimi, p.Voittoprosentti, p.Voitot, p.Haviot, p.Tasapelit)); } } }