| Pelaaja.java |
1 package hirsipuu;
2 /**
3 * Pelaajaluokka, jossa on kaikki tarvittavat attribuutit. Luokka tiet???? pelaajan nimen, salasanan,
4 * nykytason, pelaaja-ID:n, pisteet sek?? pelaajan edellisen pelikerran.
5 *
6 * @author Anna-Leena Latvala ja Toni Purontaka
7 * @version v0.6, 15.4.2008
8 */
9
10
11 public class Pelaaja {
12 private boolean _alustettu = false; //onko pelaaja alustettu
13 private String _nimi, _peliPaiva, _salaSana;
14 private int _taso, _pid, _pisteet;
15 private static int suurinKaytettyId = 1;
16
17 /**
18 * Parametrit?n konstruktori "tyhj?n pelaajan" luontiin. Pelaaja parsii my?hemmin tiedot
19 * Pelaajat-oliolta saamastaan rivist? tai, jos se on uusi pelaaja, se alustetaan.
20 *
21 */
22 public Pelaaja() {
23 // jaa, mit?h?n t?llainen tekisi
24 }
25
26 /**
27 * Funktio id:n luomista varten.
28 * @return ensimm??isen ei k??yt??ss?? olevan id-numeron
29 */
30 public int luoUusiId(){
31 return (++suurinKaytettyId);
32 }
33
34 /**
35 * Yksinkertain funktio, joka palauttaa koodatun salasanan annetusta salasanasta.
36 * @param passu k??ytt??j??n antama salasana
37 * @return koodatun salananan
38 *
39 * @example
40 * <pre name="test">
41 * Pelaaja pel = new Pelaaja();
42 * String kissa = "kissa";
43 * pel.salaa(kissa) === "ljttb";
44 * </pre>
45 */
46 public String salaa(String passu){
47 StringBuffer sb = new StringBuffer();
48 int c;
49 for(int i=0; i<passu.length(); i++){ //T??m?? korvataan jollain hienommalla algoritmilla
50 c = passu.charAt(i);
51 sb.append((char)(c+1)); //antaa seuraavan merkin joka merkin kohdalla
52 }
53
54 return sb.toString();
55 }
56
57 /**
58 * Palauttaa true, mik??li annettu salasana vastaa (aiemmin) annettua nime??.
59 * @param salasana annettu salasana
60 * @return true, mik??li salasana on oikein
61 *
62 * @example
63 * <pre name="test">
64 * Pelaaja pel = new Pelaaja();
65 * pel.alustaUusiPelaaja("katriina", "kukkulat");
66 * pel.salasanaOikein("kukkulat") === true;
67 * </pre>
68 */
69 public boolean salasanaOikein(String salasana) {
70 String koodattuSana=salaa(salasana);
71 return (koodattuSana.equals(_salaSana));
72 }
73
74 /**
75 * Ihan uuden pelaajaolion alustaja, kun salasana on annettu
76 *
77 */
78 public boolean alustaUusiPelaaja(String nimi, String salasana){
79 _nimi = nimi;
80 _salaSana = salaa(salasana);
81 _peliPaiva = "20080105"; //TODO t??h??n t??m??n p??iv??n haku
82 _pid = luoUusiId();
83 _pisteet = 0;
84 _taso = 1;
85 _alustettu = true;
86 return true;
87 }
88
89 /**
90 * Jo olemassa olevan pelaajan tietojen p?ivitys, kun aletaan pelata
91 *
92 */
93 public boolean alustaPelaaja(){
94 _peliPaiva = "20080105"; //TODO t??h??n t??m??n p??iv??n haku
95 _alustettu = true;
96 return true;
97 }
98
99 /**
100 * Antaa pelaajan tiedot merkkijonona.
101 * @return pelaajan tiedot merkkijonona.
102 */
103 public String tiedotToString(){
104 return (_pid+"|"+_nimi+"|"+_salaSana+"|"+_peliPaiva+"|"+_taso+"|"+_pisteet+"|");
105 }
106
107 /**
108 * Kaivaa esiin pelaajan tiedot oletetun muotoisesta merkkijonosta.
109 * @param jono tiedostosta luettu merkkijono, josta pelaajan tiedot kaivetaan esiin
110 */
111 public void parse(String jono){
112 StringBuffer sb =new StringBuffer(jono);
113 _pid=Jono.annaId(sb);
114 _nimi=Jono.annaMjono(sb);
115 _salaSana=Jono.annaMjono(sb);
116 _peliPaiva=Jono.annaMjono(sb);
117 _taso=Jono.annaId(sb);
118 _pisteet=Jono.annaId(sb);
119
120 if (_pid > suurinKaytettyId) suurinKaytettyId = _pid;
121 }
122
123 /**
124 * Lis?? t?m?nhetkiseen pistem??r??n voitetut uudet pisteet ja palauttaa uuden pistem??r?n.
125 * @param lisays lis?tt?v? pistem??r?.
126 * @return kokonaispistem??r? nyt
127 *
128 * <pre name="test">
129 * Pelaaja pel = new Pelaaja();
130 * pel.alustaUusiPelaaja("kissa", "Pirkkomaaria");
131 * pel.paivitaPisteet(120) === 120;
132 * pel.paivitaPisteet(12) === 132;
133 * </pre>
134 */
135 public int paivitaPisteet(int lisays) {
136 _pisteet += lisays;
137 return _pisteet;
138 }
139
140 /**
141 * Nostaa pelaajan tasoa.
142 *
143 */
144 public void nostaTasoa(){
145 _taso++;
146 }
147
148 /**
149 * Palauttimet privaattimuuttujille.
150 * @return privaattimuuttujan arvo
151 */
152 public boolean alustettu() {return _alustettu;}
153
154 public String nimi() {return _nimi;}
155
156 public String peliPaiva() {return _peliPaiva;}
157
158 public int pid() {return _pid;}
159
160 public int pisteet() {return _pisteet;}
161
162 public int taso() {return _taso;}
163
164
165
166 }
167