| Hirsipuu.java |
1 package hirsipuu;
2
3 /**
4 * T?m? luokka huolehtii olioiden keskustelusta kesken??n sek? N?yt?n kanssa.
5 * N?ytt? kyselee ja Hirsipuu vastaa.
6 *
7 * @author Anna-Leena Latvala ja Toni Purontaka
8 * @version v0.6, 15.4.2008
9 */
10
11 //Tuodaan tarpeelliset kirjastot
12
13 public class Hirsipuu {
14 private Pelaajat pelaajat;
15 private Pisteet pisteet;
16 private Tasot tasot;
17 private Sanalista lista;
18 private Peli peli;
19
20
21 /**
22 * Hirsipuu-kokoelmaluokan konstruktori.
23 * Alustaa tietorakenteet. Ne tuovat sis?lt?ns? tiedostoista, jotka itse tuntevat.
24 *
25 */
26 public Hirsipuu() {
27 pelaajat = new Pelaajat();
28 tasot = new Tasot();
29 int lkm = tasot.koko();
30
31 lista = new Sanalista();
32
33 pisteet = new Pisteet(lkm);
34
35
36 peli = new Peli();
37 }
38
39 /**
40 * K?skee tietorakenteita kirjoittamaan tietonsa k?ytt?m??ns? tiedostoon ja tekem??n
41 * back-upin entisist?.
42 * @return true, jos talletus onnistui
43 */
44 public boolean tallennaTiedot() {
45 return pelaajat.tallennaTiedot() && pisteet.tallennaTiedot(); // && tasot.tallennaTiedot() && lista.tallennaTiedot();
46 }
47
48 /**
49 * Palauttaa nimeke-nimisen pelaajan viitteen, jos sellainen pelaaja on olemassa.
50 * Jos ei, palauttaa null.
51 * @param nimeke annettu nimi
52 * @return pyydetyn pelaajan, jos sellainen on - muuten null
53 */
54 public Pelaaja annaPelaaja(String nimeke) {
55 return pelaajat.annaPelaaja(nimeke);
56 }
57
58 /**
59 * Lis?? luodun uuden pelaajan tietorakenteeseen ja luodaan ensimm?isen tason piste-
60 * tiedoiksi nolla pistett?.
61 * @param pelaaja uusi pelaaja
62 */
63 public void lisaaPelaaja(Pelaaja pelaaja) {
64 pelaajat.lisaaUusiPelaaja(pelaaja);
65 paivitaPisteet(pelaaja.pid(), 1, 0); // luodaan pisteolio.
66 }
67
68 /**
69 * Palauttaa pelaajan pisteet kokonaislukutaulukkona.
70 * @param pelaajanid pyydetyn pelaajan id-numero
71 * @return 2d-kokonaislukutaulu, jossa vierekk?isiss? alkioissa on tason nro ja silt? saadut pisteet
72 * tai 0 jos tasoa ei ole viel? pelattu.
73 */
74 public int[][] annaOmatPisteet(int pelaajanid) {
75 return pisteet.annaPisteet(pelaajanid);
76 }
77
78 /**
79 * P?ivitt?? pelaajan tasolta saamat pisteet tietorakenteisiin. Palautetaan, paranivatko pisteet
80 * entisest? tason pistem??r?st?.
81 * @param pelaajanid pyydetty pelaaja
82 * @param taso pelattu taso
83 * @param pisteet tasolta saadut pisteet
84 * @return true, jos uudet pisteet olivat paremmat
85 * false jos eiv?t
86 */
87 public boolean paivitaPisteet(int pelaajanid, int taso, int pisteet) {
88 if (this.pisteet.paivitaPiste(pelaajanid, taso, pisteet)) {
89 pelaajat.paivitaKokonaispisteet(pelaajanid, pisteet);
90 return true;
91 }
92 return false;
93 }
94
95 /**
96 * Palauttaa satunnaisen sanan tasolta "taso".
97 * @param taso pyydetyn tason numero
98 * @return satunnainen sana, mik?li t?llaista tasoa vastaavia sanoja on;
99 * muutoin palauttaa null-viitteen.
100 */
101 public String sana(int taso){
102 return lista.sana(taso);
103 }
104
105 /**
106 * Palauttaa tasoa vastaaavan vihjesanan / aihealueen, jos taso on olemassa.
107 * Muutoin palauttaa null.
108 * @param taso pyydetyn tason numero
109 * @return tason aihealue merkkijonona
110 */
111 public String annaVihje(int taso) {
112 return tasot.annaVihje(taso);
113 }
114
115 /**
116 * Palauttaa pelaajien nimet ja pistem??r?t paremmuusj?rjestyksess?.
117 * @return 2d-merkkijonotaulukko, jossa vierekk?isiss? alkioissa on pelaajan nimi ja h?nen kokonaispistem??r?ns?.
118 */
119 public String[][] annaHiScores() {
120 return pelaajat.hiScores();
121 }
122
123 /**
124 * Palauttaa merkkijonona n ensimm?isen tason tiedot, tai jos n on suurempi kuin
125 * tasojen m??r?, niin palautetaan kaikki tasot.
126 * @param n tulosteeseen sis?llytett?vien tasojen lkm
127 * @return merkkijono, jossa tasojen tiedot rivitettyn?.
128 *
129 */
130 public String tasoTulosteet(int n) {
131 return tasot.tulostus(n);
132 }
133
134 }