keskiviikko 29. tammikuuta 2014

Tässä Olento-luokan lähdekoodi

public class Olento {

private String nimi = "Nimetön";
private int kestavyys = 50;
private int voima = 50;

public Olento() {
Tyokalut t = new Tyokalut();
voima = t.getLuku();
kestavyys = t.getLuku();

Asetetaan nimi-muuttuja viittaamaan merkkijonoon, joka saadaan kutsumalla t-olion getNimi()

nimi = t.getNimi();
//System.out.println("Uusi olento ompi luotu " + nimi + "!");
}

public Olento(String _nimi) {
this();
nimi = _nimi;

}

public void setKestavyys(int _kestavyys) {
kestavyys = _kestavyys;
}

public void printInfo() {
System.out.println("Nimi: " + nimi);
System.out.println("Voima: " + voima);
System.out.println("Kestavyys: " + kestavyys);
}


}

Luokan nimi pitää olla sama kuin tiedoston nimi:

public class Olento {

Esitellään luokan eri jäsenet:

private String nimi = "Nimetön";
private int kestavyys = 50;

private int voima = 50;

Privatea ei voi muokata tämän luokan ulkopuolelta.

String tarkoittaa merkkijonoa.

int tarkoittaa kokonaislukua.

Esitellään uusi muuttuja nimeltä t, ja luokka nimeltä Tyokalut. "new Tyokalut()" luo uuden Olion nimeltään tyokalut.

public Olento() {
Tyokalut t = new Tyokalut();
voima = t.getLuku();
kestavyys = t.getLuku();
nimi = t.getNimi();

//System.out.println("Uusi olento ompi luotu " + nimi + "!");

public Olento on osa Olento luokkaa. public olento on luokan konstruktori joka kutsutaan heti kun luokan ilmentymän jälkeen, se luettelee annettuja ominaisuuksia ja tähän pääsee käsiksi myös Olento luokan ulkopuolelta (huom. public)

voima, kestavyys ja nimi ovat luotavien hahmojen Olentojen ominaisuuksia ja "=" kertoo että niitten luonnissa käytetään toiseen luokkaan sijoitettua randomgeneraattoria, jossa määritellään kyseinen asia tarkemmin. Konstruktorin nimi pitää olla sama kuin luokan nimi, eikä sillä saa olla mitään palautusarvoa.

Tätä konstruktoria kutsutaan, kun oliota luotaessa sille annetaan nimi. Huom! kahta samannimistä metodia ei saa luoda ellei vähintään parametrit eroa toisistaan.

public Olento(String _nimi) {

tämä kutsuu saman luokan konstruktoria ilman String-parametriä. Eli Olento() -konstruktoria

this();



nimi = _nimi;

public void setKestavyys(int _kestavyys) {
kestavyys = _kestavyys;
}

Tässä annetaan käsky mitä tulee printata ulos.


public void printInfo() {
System.out.println("Nimi: " + nimi);
System.out.println("Voima: " + voima);
System.out.println("Kestavyys: " + kestavyys);
}



}

Luodaan 2 Olentoa (pelaaja ja vastustaja), jotka printataan ulos "Uusi peli kaynnistyy..." tekstin jälkeen. vastustaja.printInfo ja pelaaja.printInfo kutsuvat muualla annettuja tietoja, kestavyys ja voima

public class Peli {

Olento pelaaja;
Olento vastustaja;

public Peli() {
System.out.println("Uusi peli kaynnistyy...");
pelaaja = new Olento();
pelaaja.printInfo();
vastustaja = new Olento();
vastustaja.printInfo();
}


}

----------------------------------------------------------------------------------------------------------------------------

Tuodaan javan käytettävään työkalupakkiin ominaisuus java.util.random eli randomigeneraattorin tekotyökalu
import java.util.Random;


public class Tyokalut {

Tehdään asetus jota ei voi muokata Tyokalut - ulkopuolella ja asetetaan merkkijonot (String) joiden mukaan ulos printtaanttuu asetetut termit.

private String[] etunimi = {"Hassu","Kaunis","Vihainen","Erikoinen","Epatoivoinen","Hullu","Paha","Ilkeä","Ruskettunut","Laiska","Karmaiseva","Lennokas","Maaginen","Ikaloppu","Komea"};
private String[] keskinimi = {"Sala","Murha","Mahti","Vale","Arkki","Muskeli"};
private String[] sukunimi = {"makkara","koltiainen","rehtori","jame","ritari","vihamies","prinsessa","prinssi","kuningas","commando","agentti","komistus"};


Luodaan kohta jossa viitataan

public int getLuku() {
Random rand = new Random();
return rand.nextInt(100); 
}

public String getNimi() {
Random Rand = new Random();
int i = Rand.nextInt(etunimi.length);
String etu = etunimi [i];
i = Rand.nextInt(keskinimi.length);
String keski = keskinimi [i];
i = Rand.nextInt(sukunimi.length);
String suku = sukunimi [i];
return etu + " " + keski + suku;
}



}






naytto ja while

Tuodaan käyttöön työkalu java.io.*

import java.io.*;


Luodaan uusi luokka nimeltä Naytto

public class Naytto{

Annetaan toiminnolle nayta, arvona ulostuleva teksitijono. Tämä tarkoittaa sitä että Naytto-luokka pitää huolen siitä miltä ulostuleva tavara näyttää lopputuloksessa ja Naytto.nayta komennolla korvataan käskyt system.println

public static void nayta(String _str){
System.out.println(_str);
}

Käytetään toimintoa lueRivi tulkitsemaan konsoliin tullut teksti

public static String lueRivi(String _str){
return System.console().readLine(_str);

}

Kerrotaan, että jos käyttäjä käyttää merkkiä k kysytyllä hetkellä, ohjelma etenee ja jos käyttäjä valitsee vaihtoehdon k, ohjelma palauttaa tilanteen kysymyksen lähtökohtaan ja arpoo uudet luvut ja toistaa osoitetun kysymyksen. Tämä jatkuu niin kauan kunnes käyttäjä valitsee k, merkin

public static char lueMerkki(String _str) {
char c = 'k';
try {
System.out.print(_str);
c = (char)

Otetaan yhteys konsoliin ja käsketään sen luke merkki joka on sinne asetettu.

 System.console().reader().read();
} catch (Exception e){
System.err.println(e.getMessage());
}
return c; 
}
}


Luodaan luokka Peli ja esitellään Olennot pelaaja, vastustaja ja taistelu


public class Peli {

Olento pelaaja;
Olento vastustaja;
Taistelu taistelu;



public Peli() {
Naytto.nayta("\n *** Uusi peli alkaa ***");
pelaaja = luoPelaaja();
vastustaja = new Olento();
vastustaja.printInfo();
taistelu = new Taistelu(pelaaja, vastustaja);
taistelu.taistele();
}

Tehdään uusi metodi koskien pelaajan luomista.

private Olento luoPelaaja(){

Käsketään ohjelman printata ulos käsky nimen syöttöön ja mahdollisuus kirjoittaa se

String mj = Naytto.lueRivi("Syötä nimesi  ");

Kerrotaan vaihtoehdot jotka esitetään käyttäjälle. c tarkoittaa saatua vastausta joka on siis joko K/E. 
char c = 'e';

Käytetään while toimintoa joka käskee ohjelman siirtyä eteenpäin aina kun vastaus kysymykseen on e. == tarkoittaa vertausta, onko tulos e sama kuin haluttu tulos paikkaan c

while ( c == 'e' ){
pelaaja = new Olento();
pelaaja.setNimi(mj);
pelaaja.printInfo();
c = Naytto.lueMerkki("Arvotaanko ominaisuudet uudelleen(k/e)?");
}

Lopussa käsketään palauttamaan pelaaja käyttäjän valinnan huomioon ottaen.

return pelaaja;
}


}



perjantai 17. tammikuuta 2014

Olento.java


public class Olento {

private String nimi = "Nimetön";
private int kestavyys = 50;
private int voima = 50;
private int kunto;

public Olento() {
Tyokalut t = new Tyokalut();
voima = t.getLuku()/5 + 3;
kestavyys = 100 + t.getLuku();
nimi =t.getNimi();
kunto = kestavyys;
//Naytto.nayta("Uusi olento ompi luotu " + nimi + "!");
}

public Olento(String _nimi) {
this();
nimi = _nimi;
}

public String getNimi() {
return nimi;
}

public int getVoima() {
return voima;
}

public int getKunto() {
return kunto;
}

public void setKunto(int _kunto) {
kunto = _kunto;
}

public void vaurioita(int _vaurio){
kunto = kunto - _vaurio;


public void setKestavyys(int _kestavyys) {
kestavyys = _kestavyys;
}

public void printInfo() {
Naytto.nayta("Nimi: " + nimi);
Naytto.nayta("Voima: " + voima);
Naytto.nayta("Kestavyys: " + kestavyys);
}


}

Luodaan Olento luokka public class Olento private String nimi = 

"Nimetön";
private int kestavyys = 50;
private int voima = 50;
private int kunto;
 
Kerrotaan olentojen ominaisuudet ja mistä niitä voi säätää public Olento() {
Tyokalut t = new Tyokalut();
voima = t.getLuku()/5 + 3;
kestavyys = 100 + t.getLuku();
nimi =t.getNimi();
kunto = kestavyys;

Lisätään ominaisuuksia koskevat komennot


public Olento(String _nimi) {
this();
nimi = _nimi;
}

public String getNimi() {
return nimi;
}

public int getVoima() {
return voima;
}

public int getKunto() {
return kunto;
}

public void setKunto(int _kunto) {
kunto = _kunto;
}

public void vaurioita(int _vaurio){
kunto = kunto - _vaurio;


public void setKestavyys(int _kestavyys) {
kestavyys = _kestavyys;
}

public void printInfo() {
Naytto.nayta("Nimi: " + nimi);
Naytto.nayta("Voima: " + voima);
Naytto.nayta("Kestavyys: " + kestavyys);


Peli.java

public class Peli {

Olento pelaaja;
Olento vastustaja;
Taistelu taistelu;

public Peli() {
Naytto.nayta("\n *** Uusi peli alkaa ***");
pelaaja = new Olento();
pelaaja.printInfo();
vastustaja = new Olento();
vastustaja.printInfo();
taistelu = new Taistelu(pelaaja, vastustaja);
taistelu.taistele();
}


}

Luodaan Peli-luokka ja kerrotaan mitä siihen kuuluu  public class Peli {

Olento pelaaja;
Olento vastustaja;
Taistelu taistelu;

Kerrotaan ja annetaan nimet ja annetaan arvot 

public Peli() {
Naytto.nayta("\n *** Uusi peli alkaa ***");
pelaaja = new Olento();
pelaaja.printInfo();
vastustaja = new Olento();
vastustaja.printInfo();
taistelu = new Taistelu(pelaaja, vastustaja);
taistelu.taistele();
}


}

Tyokalut.java

import java.util.Random;


public class Tyokalut {

private String[] etunimi = {"Uskalias","Hurja","Hassu","Kaunis","Vihainen","Erikoinen","Epatoivoinen","Hullu","Paha","Ilkeä","Ruskettunut","Laiska","Karmaiseva","Lennokas","Maaginen","Ikaloppu","Komea"};
private String[] keskinimi = {"Sala","Murha","Mahti","Lisko","Tyyli","Vale","Arkki","Muskeli","Kone","Mies","Nais","Seksi","Viha","Inho","Muti"};
private String[] sukunimi = {"puukottaja","pappi","poliisi","makkara","koltiainen","rehtori","jame","ritari","vihamies","prinsessa","prinssi","kuningas","commando","agentti","komistus","orja","huora"};

public int getLuku() {
Random rand = new Random();
return rand.nextInt(100); 
}

public String getNimi() {
Random Rand = new Random();
int i = Rand.nextInt(etunimi.length);
String etu = etunimi [i];
i = Rand.nextInt(keskinimi.length);
String keski = keskinimi [i];
i = Rand.nextInt(sukunimi.length);
String suku = sukunimi [i];
return etu + " " + keski + suku;
}



}

 Tuodaan java-ohjelmaan työkalu Randomgeneraattoreille 
import java.util.Random;

Luodaan luokka Tyokalut public class Tyokalut {

Kerrotaan olentojen ominaisuudet ja tuodaan Random toiminto mukaan niihin. Annetaan randomgeneraattorille vaihtoehdot josta se valitsee ulostulevan tuotteen  private String[] etunimi = {"Uskalias","Hurja","Hassu","Kaunis","Vihainen","Erikoinen","Epatoivoinen","Hullu","Paha","Ilkeä","Ruskettunut","Laiska","Karmaiseva","Lennokas","Maaginen","Ikaloppu","Komea"};
private String[] keskinimi = {"Sala","Murha","Mahti","Lisko","Tyyli","Vale","Arkki","Muskeli","Kone","Mies","Nais","Seksi","Viha","Inho","Muti"};
private String[] sukunimi = {"puukottaja","pappi","poliisi","makkara","koltiainen","rehtori","jame","ritari","vihamies","prinsessa","prinssi","kuningas","commando","agentti","komistus","orja","huora"};

public int getLuku() {
Random rand = new Random();
return rand.nextInt(100); 
}

public String getNimi() {
Random Rand = new Random();
int i = Rand.nextInt(etunimi.length);
String etu = etunimi [i];
i = Rand.nextInt(keskinimi.length);
String keski = keskinimi [i];
i = Rand.nextInt(sukunimi.length);
String suku = sukunimi [i];
return etu + " " + keski + suku;
}



}


Taistelu.java

public class Taistelu {

private Olento taistelija1;
private Olento taistelija2;
private Tyokalut tyokalut;

public Taistelu(Olento _t1, Olento _t2){
tyokalut = new Tyokalut();
taistelija1 = _t1;
taistelija2 = _t2;
Naytto.nayta("\n");
Naytto.nayta("o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*");
Naytto.nayta("***** Taistelu alkaa *****");
Naytto.nayta("o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*");
Naytto.nayta("\n" + "\n" + taistelija1.getNimi() + " VASTAAN " + taistelija2.getNimi() + "\n");


}

public void taistele(){
int noppa = 0;
Olento hyokkaaja = taistelija1;
Olento puolustaja = taistelija2;
Olento apu = taistelija1;
int teho = 0;
while(hyokkaaja.getKunto() > 0 && puolustaja.getKunto() > 0){
noppa = tyokalut.getLuku();
teho = noppa + hyokkaaja.getVoima()/10;
Naytto.nayta(hyokkaaja.getNimi() + " Iskee " + teho);
puolustaja.vaurioita(teho);
apu = puolustaja;
puolustaja = hyokkaaja;
hyokkaaja = apu;

}

Naytto.nayta("\n *** Taistelu Ohi, " + puolustaja.getNimi() + " Voitti ***");


}

}

Luodaan uusi Luokka Taistelu public class Taistelu {

Luodaan 2 Olentoa ja tuodaan Tyokaluluokan tietoja private Olento taistelija1;
private Olento taistelija2;
private Tyokalut tyokalut;

Kerrotaan miten taistelu tapahtuu ja asetetaan taistelijat public Taistelu(Olento _t1, Olento _t2){
tyokalut = new Tyokalut();
taistelija1 = _t1;
taistelija2 = _t2;
Naytto.nayta("\n");
Naytto.nayta("o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*");
Naytto.nayta("***** Taistelu alkaa *****");
Naytto.nayta("o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*");
Naytto.nayta("\n" + "\n" + taistelija1.getNimi() + " VASTAAN " + taistelija2.getNimi() + "\n");

Luodaan taistelugeneraattori joka ottaa valintansa Kestävyyden ja voiman mukaan public void taistele(){
int noppa = 0;
Olento hyokkaaja = taistelija1;
Olento puolustaja = taistelija2;
Olento apu = taistelija1;
int teho = 0;
while(hyokkaaja.getKunto() > 0 && puolustaja.getKunto() > 0){
noppa = tyokalut.getLuku();
teho = noppa + hyokkaaja.getVoima()/10;
Naytto.nayta(hyokkaaja.getNimi() + " Iskee " + teho);
puolustaja.vaurioita(teho);
apu = puolustaja;
puolustaja = hyokkaaja;
hyokkaaja = apu;

}

Naytto.nayta("\n *** Taistelu Ohi, " + puolustaja.getNimi() + " Voitti ***");


Naytto.java

import java.io.*;

public class Naytto{

public static void nayta(String _str){
System.out.println(_str);


}








}

keskiviikko 8. tammikuuta 2014

Esimerkki aloitusfunktiosta "main".

public class Testi {
public static void main(String[] args) {
System.out.println("TOIMII!");
}
}