hirsipuu
Class Pisteet

java.lang.Object
  extended by hirsipuu.Pisteet

public class Pisteet
extends java.lang.Object

Luokka pisteiden k??sittelyyn. Osaa lukea Pisteet.dat tiedostoa ja palauttaa tasoa ja pelaajaa vastaavan pistem????r??n.

Version:
v0.6, 15.4.2008
Author:
Anna-Leena Latvala, Toni Purontaka

Field Summary
private  int lkm
           
private  PelaajanPiste[] pisteet
           
private static java.lang.String POLKU
           
private  int tasojenlkm
           
 
Constructor Summary
Pisteet(int lkm)
          Alustaa Pisteet defaulttitiedostosta.
Pisteet(java.lang.String polku, int lkm)
          Alustaa Pisteet tiedostosta polussa "polku".
 
Method Summary
 int[][] annaPisteet(int pelaajanid)
          Palauttaa pelaajan kaikki pisteet kokonaislukutaulukkona.
private  void kasvata()
          Kasvattaa pistetaulukon kokoa tarvittaessa kaksinkertaiseksi.
private  void lisaaPiste(java.lang.String s)
          Jos annettu rivi s ei ole kommentti, siit? generoidaan PelaajanPiste-olio ja lis?t??n se tietorakenteeseen.
 boolean paivitaPiste(int pelaajanid, int taso, int pisteet)
          P?ivitt?? pelaajan tasolta saamat pisteet.
 void pisteetTiedostosta(java.lang.String polku)
          Lukee tiedostosta pelaajan pisteet annettua tasoa vastaavasti.
 boolean tallennaTiedot()
          Tulostaa tasokohtaiset pisteet defaulttitiedostoon.
 boolean tallennaTiedot(java.lang.String polku)
          Tulostaa pelaajien tasokohtaiset pisteet tiedostoon polussa "polku" ja muuttaa entisen siell? sijainneen tiedoston back-up tiedostoksi polku.bak (esim.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

tasojenlkm

private final int tasojenlkm

pisteet

private PelaajanPiste[] pisteet

lkm

private int lkm

POLKU

private static final java.lang.String POLKU
See Also:
Constant Field Values
Constructor Detail

Pisteet

public Pisteet(int lkm)
Alustaa Pisteet defaulttitiedostosta.


Pisteet

public Pisteet(java.lang.String polku,
               int lkm)
Alustaa Pisteet tiedostosta polussa "polku".

Method Detail

pisteetTiedostosta

public final void pisteetTiedostosta(java.lang.String polku)
Lukee tiedostosta pelaajan pisteet annettua tasoa vastaavasti. Tiedosto kirjoitetaan muotoon pid | tid | pisteet ja ;-alkuiset rivit tulkitaan kommenttiriveiksi.

Example:
 #THROWS IOException
 #import java.io.IOException;
 #import fi.jyu.mit.ohj2.VertaaTiedosto;
  VertaaTiedosto.kirjoitaTiedosto("testitasoja.txt",
      "1 | 1 | 12\n"+
      ";tama rivi on kommentti\n" +
      "1 | 2 | 100\n"+
      "2 | 1 | 95");
  Pisteet Pisteet = new Pisteet("testitasoja.txt", 2);
  VertaaTiedosto.tuhoaTiedosto("testitasoja.txt");
 

tallennaTiedot

public boolean tallennaTiedot()
Tulostaa tasokohtaiset pisteet defaulttitiedostoon.

Returns:
true, jos tallennus onnistui, false muutoin

tallennaTiedot

public boolean tallennaTiedot(java.lang.String polku)
Tulostaa pelaajien tasokohtaiset pisteet tiedostoon polussa "polku" ja muuttaa entisen siell? sijainneen tiedoston back-up tiedostoksi polku.bak (esim. pisteet.dat -> pisteet.dat.bak)

Parameters:
polku - tiedosto, johon tiedot kirjoitetaan
Returns:
true, jos tallennus onnistui, false muuten
Example:
 #THROWS IOException
 #import java.io.IOException;
 #import fi.jyu.mit.ohj2.VertaaTiedosto;
  VertaaTiedosto.kirjoitaTiedosto("testipisteita.txt",
      "; pid | tid | pisteet |\n" +
      "1|1|12\n"+
      "1|2|100\n"+
      "2|1|95");
      
  Pisteet pis = new Pisteet("testipisteita.txt",3);
  pis.tallennaTiedot("testitallennus.txt");           // ei ole testitallennus.txt ennen joten ei backuppia
  
  Pisteet pus = new Pisteet("testitallennus.txt",3);
  pus.paivitaPiste(1,1,50);                           // muutetaan tietoja
  pus.tallennaTiedot("testitallennus.txt");           // syntyy backup-tiedosto
  
  VertaaTiedosto.vertaaFileFile("testipisteita.txt", "testitallennus.txt.bak") === null;          // samat
  (VertaaTiedosto.vertaaFileFile("testipisteita.txt", "testitallennus.txt") == null) === false;   // erit
   
 VertaaTiedosto.tuhoaTiedosto("testipisteita.txt"); 
 VertaaTiedosto.tuhoaTiedosto("testitallennus.txt");          // tuhotaan syntyneet tiedostot
 VertaaTiedosto.tuhoaTiedosto("testitallennus.txt.bak");      // my?s back-up
 

annaPisteet

public int[][] annaPisteet(int pelaajanid)
Palauttaa pelaajan kaikki pisteet kokonaislukutaulukkona.

Parameters:
pelaajanid - pyydetyn pelaajan id-numero
Returns:
2d-kokonaislukutaulu, jossa vierekk?isiss? alkioissa on tason nro ja silt? saadut pisteet tai 0 jos tasoa ei ole viel? pelattu.
Example:
 #THROWS IOException
 #import java.io.IOException;
 #import fi.jyu.mit.ohj2.VertaaTiedosto;
  VertaaTiedosto.kirjoitaTiedosto("testitasoja.txt",
      ";tiedostossa on pelaajien pisteit?\n" +
      "1 | 1 | 12\n"+
      "1 | 2 | 100\n"+
      "2 | 1 | 95");
  Pisteet pisteet = new Pisteet("testitasoja.txt", 8);
  
  int[][] taulu = pisteet.annaPisteet(1); //pelaajan 1 pisteet
  taulu[0][0] === 1;
  taulu[1][0] === 12;
  taulu[1][1] === 100;
  taulu[0][7] === 8;  // taso nro 8 on paikassa 7
  taulu[1][4] === 0;  // tasolle 4 ei ole pisteit? joten pisteet on 0
  
  VertaaTiedosto.tuhoaTiedosto("testitasoja.txt");
 

paivitaPiste

public boolean paivitaPiste(int pelaajanid,
                            int taso,
                            int pisteet)
P?ivitt?? pelaajan tasolta saamat pisteet. Jos ennen on saatu samalta tasolta paremmat pisteet, ei muuteta. Jos tehtiin uusi enn?tys, muutetaan, samoin kuin jos on kyseess? 1. kerta kun tasoa pelataan.

Parameters:
pelaajanid - tasoa pelanneen pelaajan id
taso - pelattu taso
pisteet - saadut pisteet
Returns:
true, jos saatiin paremmat pisteet kuin ennen false, jos entiset pisteet olivat paremmat
Example:
 #THROWS IOException
 #import java.io.IOException;
 #import fi.jyu.mit.ohj2.VertaaTiedosto;
  VertaaTiedosto.kirjoitaTiedosto("testitasoja.txt",
      ";tiedostossa on pelaajien pisteit?\n" +
      "1 | 1 | 12\n"+
      "1 | 2 | 100\n"+
      "2 | 1 | 95");
  Pisteet pisteet = new Pisteet("testitasoja.txt", 8);
  
  pisteet.paivitaPiste(1,1,10) === false;
  pisteet.paivitaPiste(1,2,120) === true;
  pisteet.paivitaPiste(1,3,110) === true; // aivan uusi taso!
   
  int[][] taulu = pisteet.annaPisteet(1); 
  taulu[1][0] === 12; // pelaaja 1 saa tasolta 1 yh? 12 pistett?.
  taulu[1][1] === 120; // pelaaja 1 sai nyt tasolta 2 uudet 120 pistett?.
  taulu[1][2] === 110; // pelaaja 1 sai nyt tasolta 3 pisteit?.
  
  VertaaTiedosto.tuhoaTiedosto("testitasoja.txt");
 

lisaaPiste

private void lisaaPiste(java.lang.String s)
Jos annettu rivi s ei ole kommentti, siit? generoidaan PelaajanPiste-olio ja lis?t??n se tietorakenteeseen.

Parameters:
s - parsittava rivi
i - pelaajan pisteen j?rjestysnumero tietorakenteessa

kasvata

private void kasvata()
Kasvattaa pistetaulukon kokoa tarvittaessa kaksinkertaiseksi.