| Tulosta.java |
1 package hirsipuu;
2
3 import fi.jyu.mit.ohj2.Mjonot;
4
5 /**
6 * TIEP111 Ohjelmointi 2 - harjoitusty?
7 *
8 * T?m? luokka sis?lt?? kaiken peliss? tarvittavan tulostuksen.
9 *
10 * @author Anna-Leena Latvala ja Toni Purontaka
11 * @version v0.4, 15.4.2008
12 */
13
14
15 public class Tulosta {
16
17
18 /**
19 * Tulostaa tekstin alleviivattuna.
20 * @param teksti tulostettava teksti
21 */
22 private static void alleviivaa(String teksti) {
23 System.out.println(teksti);
24 System.out.println("---------------------------------------");
25 }
26
27 /**
28 * Tulostaa halutun m??r?n tyhji? rivej?.
29 * @param rivia montako tyhj?? rivi? tulostetaan
30 */
31 private static void tyhja(int rivia) {
32 for(int i=0; i<rivia ;i++) System.out.println();
33 }
34
35 /**
36 * Tulostaa yhden tyhj?n rivin.
37 */
38 private static void tyhja() {
39 tyhja(1);
40 }
41
42 /**
43 * Tyhjent?? koko konsoliruudun
44 */
45 private static void tyhjaa(){
46 tyhja(31);
47 }
48
49 /**
50 * Tulostaa tervetulotekstin.
51 */
52 public static void tervehdys(){
53 System.out.println("<<<<<<<<<<<<<<<<<<<<<<<");
54 System.out.println("> H I R S I P U U <");
55 System.out.println("> v e r s i o n 0.1 <");
56 System.out.println("<<<<<<<<<<<<<<<<<<<<<<<");
57 tyhja();
58 System.out.println("Tervetuloa pelaamaan Hirsipuuta!");
59 tyhja();
60 }
61
62 /**
63 * Tulostaa pelaajan tunnuksen kyselyn.
64 */
65 public static void annaTunnus(){
66 System.out.print("Anna tunnuksesi >");
67 }
68
69 /**
70 * Tulostaa pelaajan salasanan kyselyn.
71 * @param nimi pelaajan nimi
72 */
73 public static void kysySalasana(String nimi){
74 System.out.print("Anna salsana pelaajalle " + nimi + " >");
75 }
76
77 /**
78 * Tulostaa uuden pelaajan luomiskyselyn.
79 * @param nimi pelaajan nimi
80 */
81 public static void kysyUusi(String nimi){
82 System.out.println("Tunnusta " + nimi + " ei l?ydy!");
83 System.out.print("Tehd??nk? uusi pelaaja " + nimi + " (K/e) :");
84 }
85
86 /**
87 * Tulostaa pelin p??valikon pelaajalle r??t?l?ityn?.
88 * @param p pelaaja
89 */
90 public static void paaValikko(Pelaaja p){
91 tyhja();
92 System.out.println("Tervetuloa, "+ p.nimi() +"! Olet t?ll? hetkell? tasolla "+ p.taso() +"\n");
93 System.out.println("(P)elaa hirsipuuta");
94 System.out.println("(H)i-Scores");
95 System.out.println("(O)mat pisteet");
96 // pid == 1 vastaa admin-pelaajaa
97 if(p.pid() == 1) {
98 System.out.println("(A)dmin");
99 System.out.println("(L)opetus");
100 }else{
101 System.out.println("(L)opetus");
102 }
103 }
104
105 /**
106 * Tulostaa p??valikon pikavalintarivin pelaajalle r??t?l?ityn?.
107 * @param p pelaaja
108 */
109 public static void paaValikkoPika(Pelaaja p) {
110 tyhja();
111 if (p.pid() == 1) {
112 System.out.print("Mit? tehd??n (p/h/o/a/L): ");
113 } else {
114 System.out.print("Mit? tehd??n (p/h/o/L): ");
115 }
116 }
117
118 /**
119 * Tulostaa valikon, josta pelaaja voi valita haluamansa tason
120 * @param taso pelaajan nykyinen taso
121 */
122 public static void peliValikko(String tuloste){
123 tyhja();
124 System.out.println("Valitse taso, jolla haluat pelata");
125
126 //tulostetaan ohje ja lopetus vaihtoehdot
127 System.out.println("(?) Ohjeet");
128 System.out.println("(0) Lopetus");
129
130 System.out.print(tuloste);
131
132 System.out.print("Valintasi: ");
133 }
134
135 //FIXME: t?t? ei viel? kutsuta mist??n ja ei v?ltt?m?tt? toimi taso-olion kanssa?
136 /**
137 * tulostaa pelin sana arvoituksen, tason nimen ja v????r??t arvaukset (hirsipuun kanssa)
138 */
139 public static void peli(int taso, String arvoitus, String vaarat){
140 /**
141 * @param taso tason numero
142 * @param arvoitus on generoitu merkkijono, jossa _ merkit kirjainten kohdalla, joita ei ole arvattu
143 * @param vaarat v????r??t arvatut merkit
144 */
145 int i;
146 //Tulostetaan pelitilanne
147 //TODO rakenna ja tulosta hirsipuu merkeill??
148 // System.out.printf(Hirsipuu.tasonNimi(taso)+": "+arvoitus+" "+vaarat.length()+" v??r?? arvausta:");
149 for(i=0;i<vaarat.length();i++) System.out.printf(" "+vaarat.charAt(i));
150 System.out.printf(")");
151 }
152
153 /**
154 * Tulostaa hi-scores taulukon n parhaasta pelaajasta.
155 * @param taulukko taulukko, jossa on pelaajien nimet ja kokonaispisteet
156 * @param n montako pelaajaa tulostetaan (jos pelaajia on alle n, tulostetaan kaikki)
157 */
158 public static void hiScores(String[][] taulukko, int n){
159 tyhja();
160 int montako = n; //tulostetaan top n
161 if (taulukko[0].length < montako) montako = taulukko[0].length;
162
163 System.out.println("Hi-Scores: top " + montako);
164
165 for (int i = 0; i < montako; i++) {
166 System.out.println(Mjonot.fmt(i+1, 3) + ": " + Mjonot.fmt(taulukko[0][i], 20) + Mjonot.fmt(taulukko[1][i], 6));
167 }
168 }
169
170 /**
171 * Tulostaa yhden pelaajan pisteet olemassaolevilta tasoilta.
172 * @param taulukko taulukko, jossa on tason numero ja sit? vastaava pistem??r?
173 */
174 public static void omatPisteet(int[][] taulukko){
175 int yht = 0;
176 tyhja();
177 for (int i = 0; i < taulukko[0].length; i++) {
178 System.out.println("Taso " + Mjonot.fmt(taulukko[0][i], 2) + ": " + Mjonot.fmt(taulukko[1][i], 3));
179 yht += taulukko[1][i];
180 }
181 System.out.println("Yhteens? " + yht + " pistett?.");
182 }
183
184 /**
185 * Tulostaa adminin koko valikon.
186 */
187 public static void adminValikko(){
188 tyhja();
189 System.out.println("(M)uokkaa sanalistoja");
190 System.out.println("(T)arkastele pelaajia");
191 System.out.println("(L)opetus");
192 }
193
194 /**
195 * Tulostaa adminin pikavalintarivin.
196 */
197 public static void adminPika() {
198 tyhja();
199 System.out.print("Mit? tehd??n (m/t/L): ");
200 }
201
202 /**
203 * Tulostaa sanalistojen muokkausvalikon.
204 */
205 public static void muokkaaListoja(){
206 System.out.println("ei toimi");
207 //TODO koko valikko - toteutetaanko ollenkaan?
208 }
209
210 /**
211 * Tulostaa adminin pelaajien tarkasteluvalikon.
212 */
213 public static void tarkastelePelaajia(){
214 /*
215 * Pelaajat:
216 nimi viimeksi pelannut pisteet
217 ---------------------------------------
218 Saku 20071227 740
219 Mimmu 20080105 0
220 admin 20080107 942
221 ---------------------------------------
222 Poista ep??aktiivinen pelaaja? (k/E) :
223 */
224 tyhjaa();
225 System.out.println("Pelaajat:");
226 tyhja();
227 //TODO Siisti t??t?? taulukkoa
228 alleviivaa("Nimi: pelannut viimeksi: Pisteet:");
229 //TODO tulosta pelaajat tiedostosta while-silmukan avulla
230 }
231
232 /**
233 * Tulostaa lopputekstit
234 */
235 public static void lopetus(){
236 tyhja();
237 System.out.println("Tule pelaamaan uudestaan!");
238 System.out.printf("Pisteet tallennettu tiedostoon.");
239 }
240 }
241