perjantai 7. helmikuuta 2014

Kriittinen osuma

Esitellään uusi metodi, kriittinen osuma ja asetetaan sen arvoksi 15

private int crit = 15;

Annetaan critin arvoksi voima + 15

crit =  getVoima() + 15;

Luodaan muualla mahdollisesti muokattava arvo getCrit ja käsketään sen palauttaa crit

public int getCrit(){
return crit;

}

Luodaan if lause joka määrää kriittisen osuman arvon joka tulee aina kun taistelijan kriittinen arvo ylittää työkaluista tulevan arvon. Kriittinen osuma tekee normaalin osuman lisäksi 15 

if (tyokalut.getLuku() <= hyokkaaja.getCrit()){
teho = teho + 15;
naytto.nayta(hyokkaaja.getNimi() + "lyö kriittisen osuman"  + "  " + teho);


Lisätään perään else lause joka kertoo mitä tapahtuu jos edellä mainittu ei toteudu



} else { naytto.nayta(hyokkaaja.getNimi() + " lyö " + teho);



Lisätään infoon myös kriittinen arvo 

public String getInfo() {
return "Nimi: " + nimi + "\n" +
"Voima: " + voima + "\n" +
"Kestävyys: " + kestavyys + "\n" +
"crit " + crit;

}

keskiviikko 5. helmikuuta 2014

Naytto.java ja Taistelu.java

Tuodaan jälleen javan työkaluja käyttöön

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

Luodaan olentoluokka JFrame joka luo erillisen käyttöruudun jolle peli laitetaan.

public class Naytto extends JFrame {

Luodaan erilliselle näytölle (jframe) sisältöä mukaanlukien 2 kohtaa alapaneeliin, 2 nappia. pelaajien elämää kuvastavat palkit ja tuodaan muusta luokasta pelin ominaisuudet sisään

Container contentPane;
JEditorPane editorPane;
JPanel alapaneeli;
JPanel alapaneeli2;
JPanel ylapaneeli;
JButton nappi1;
JButton nappi2;
JButton nappiJatka;
JLabel lblPelaaja;
JLabel lblVastustaja;
JProgressBar barPelaaja;
JProgressBar barVastustaja;
StringBuffer ikkunanTeksti;
Peli peli;

Seuraavaksi käynnistetään erillinen ruutu kun peli ajetaan consolessa   

 public Naytto() {
ikkunanTeksti = new StringBuffer("");
initUI();
initLayout();
initButtons();
kaynnistaPeli();
    }


Asetetaan jo mainittujen tietojen arvot erilleseen ruutuun. esim. kerrotaan mitä nappi tarkoittaa: "nappi1 = new JButton ("Kyllä");"

    private void initUI() {
        setSize(800, 600);
        setTitle("Kauhavan Lukion Peli");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
editorPane = new JEditorPane();
nappi1 = new JButton("Kyllä");
nappi2 = new JButton("Ei");
nappiJatka = new JButton("Jatka");
barPelaaja = new JProgressBar(0,100);
barPelaaja.setString("Pelaaja:");
lblPelaaja = new JLabel("Pelaaja:");
lblVastustaja = new JLabel("Vastustaja:");
barVastustaja = new JProgressBar(0,100);
barVastustaja.setString("Vastustaja");
    }

Asetetaan napit ja muut annetut ominaisuudet omille paikoilleen ruudulla.

private void initLayout() {
contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
alapaneeli = new JPanel();
alapaneeli.setLayout(new FlowLayout());
alapaneeli.add(nappi1);
alapaneeli.add(nappi2);
alapaneeli2 = new JPanel();
alapaneeli2.add(nappiJatka);
ylapaneeli = new JPanel();
ylapaneeli.add(lblPelaaja);
ylapaneeli.add(barPelaaja);
ylapaneeli.add(lblVastustaja);
ylapaneeli.add(barVastustaja);
contentPane.add(editorPane, BorderLayout.CENTER);
contentPane.add(alapaneeli, BorderLayout.PAGE_END);
contentPane.add(ylapaneeli, BorderLayout.PAGE_START);
}

Kerrotaan mitä nappi tekee kun sitä painetaan tai ollaan painamatta.

private void initButtons() {

nappi1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
peli.suorita("kylla");
}
});
nappi2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
peli.suorita("ei");
}
});
nappiJatka.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
peli.suorita("jatka");
}
});
}

Kerrotaan mitä ohjelman kuuluu tehdä kun se ajetaan

private void kaynnistaPeli() {
peli = new Peli(this);
peli.aloitaPeli();
}

public void nayta(String _str) {
ikkunanTeksti.append(_str + "\n");
editorPane.setText(ikkunanTeksti.toString());
}

public void tyhjaa() {
ikkunanTeksti = new StringBuffer("");
editorPane.setText(ikkunanTeksti.toString());
}

Tuodaan taistelu

public void naytaTaistelu(String _pelaaja, String _vastustaja, int _pelaajanKestavyys, int _vastustajanKestavyys) {

lblPelaaja.setText(_pelaaja);
lblVastustaja.setText(_vastustaja);
barPelaaja.setMaximum(_pelaajanKestavyys);
barPelaaja.setValue(_pelaajanKestavyys);
barVastustaja.setMaximum(_vastustajanKestavyys);
barVastustaja.setValue(_vastustajanKestavyys);
}

Synkronoidaan Taistelun tapahtumat ruudulla olevien palkkien kanssa

public void paivitaTaistelu(int _lifeP, int _lifeV) {
barPelaaja.setValue(_lifeP);
barVastustaja.setValue(_lifeV);
}


public void naytaJatka() {

contentPane.remove(alapaneeli);
contentPane.add(alapaneeli2, BorderLayout.PAGE_END);
alapaneeli.repaint();
}

public void naytaKyllaEi() {
contentPane.remove(alapaneeli2);
contentPane.add(alapaneeli, BorderLayout.PAGE_END);
alapaneeli.repaint();
}

public void ylapaneeliPaalla(boolean paalla) {
}

}

Luodaan taistelu ja sen sisälle olentoja. 2 taistelijaa, vuoroteltava hyökkääjä ja puolustaja ja muissa luokissa olevat tiedot kuten tyokalut

public class Taistelu {

private Olento taistelija1;
private Olento taistelija2;
private Olento hyokkaaja;
private Olento puolustaja;
private Olento apu;
private Tyokalut tyokalut;
private Naytto naytto;




public Taistelu(Olento _t1, Olento _t2, Naytto _naytto) {

naytto = _naytto;
tyokalut = new Tyokalut();

asetetaan taistelijoille arvot ja kerrotaan kuka taistelee ketä vastaan ja mitkä ominaisuudet hahmoilla on

taistelija1 = _t1;

taistelija2 = _t2;
hyokkaaja = taistelija1;
puolustaja = taistelija2;
naytto.nayta("**********************");
naytto.nayta("*** Taistelu alkaa ***");
naytto.nayta("**********************");
naytto.nayta(taistelija1.getNimi() 
+ " VASTAAN " + taistelija2.getNimi());
naytto.naytaTaistelu(taistelija1.getNimi(),taistelija2.getNimi(),taistelija1.getKunto(),taistelija2.getKunto());

}

Kerrotaan taistelun "säännöt", taistelu päättyy kun toisen taistelijan elämät loppuvat

public Olento taisteleKierros() { // Palauttaa voittajan, jos taistelu päättyy
int noppa = 0;
int teho = 0;
if ( taistelija1.getKunto() < 1 ) return taistelija2; // Taistelu on päättynyt
if ( taistelija2.getKunto() < 1 ) return taistelija1; // Taistelu on päättynyt
noppa = tyokalut.getLuku()/3;
teho = noppa + hyokkaaja.getVoima();
naytto.nayta(hyokkaaja.getNimi() + " lyö " + teho);
puolustaja.vaurioita(teho);
naytto.paivitaTaistelu(taistelija1.getKunto(),taistelija2.getKunto());
apu = puolustaja;
puolustaja = hyokkaaja;
hyokkaaja = apu;

Käytetään jos lauseita selvittämääb koska taistelu loppuu ja kumpi voittaa. eli jos taistelijan 1 kunto on alle 1 voittaa taistelija 2 jne.

if ( taistelija1.getKunto() < 1 ) return taistelija2; // Taistelu on päättynyt

if ( taistelija2.getKunto() < 1 ) return taistelija1; // Taistelu on päättynyt
return null; // Taistelu vielä kesken
}



}