Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hra;
- import exceptions.NespravnyVstupException;
- import hra.pomocne.InicializacnyProcessor;
- import hra.pomocne.TextovyProcesor;
- import hra.pomocne.GrafickyProcessor;
- import hra.pomocne.FontProcessor;
- import hra.listeners.HlavnaPlochaListener;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Rectangle;
- import java.awt.Toolkit;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JOptionPane;
- /**
- * Hlavná trieda ktorá je potomkom triedy JFrame a riadí inštancie triedy JPanel
- * ako samostatné stavy hry. Inicializuje konštánty slúžiace na mierku prvkov v
- * hre v závyslosti od rozmerov okna aplikácie samotnej. Je použitý návrhový
- * vzor singleton pre uľahčenie prístupu ku všeobecne dôležitím metódám hry,
- * inštancii pomocných tried. Takisto obsahuje inštancie triedy JPanel
- * plochaStola ,plochaSiene a hlavnaPlocha ktoré sú stavmi hry
- *
- * @author (Andrej Jaššo)
- * @version (04.04.2017)
- */
- public final class Hra extends JFrame {
- public static final int SIRKA_OKNA = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 4 * 3;
- public static final int VYSKA_OKNA = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 4 * 3;
- public static final int ROZMER_KARTY = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 12;
- public static final int MEDZERA_OBJEKTOV = 2;
- public static final int SIRKA_POSUVACA = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight() / (30);
- private static Hra hra;
- private final JPanel plochaStola;
- private final JPanel plochaSiene;
- private final JPanel hlavnaPlocha;
- private final GrafickyProcessor graf;
- private final TextovyProcesor text;
- private final FontProcessor font;
- private final InicializacnyProcessor init;
- private final KartovaSien hlavnaSien;
- private final HlavnaPlochaListener mojListener;
- private Stol hlavnyStol;
- /**
- * Metóda nastavuje potrebné vlastnosti okna programu a jeho počiatočný
- * stav. Sú použité parametre z hore uvedených konšťant.
- *
- *
- * @param args
- */
- public static void main(String[] args) {
- System.out.println("Zacina sa main triedy Hra");
- Hra.hra = new Hra();
- Hra.hra.setPreferredSize(new Dimension(Hra.SIRKA_OKNA, Hra.VYSKA_OKNA));
- Hra.hra.setUndecorated(true);
- Hra.hra.pack();
- Hra.hra.setLocationRelativeTo(null);
- Hra.hra.setVisible(true);
- System.out.println("Konci sa main triedy Hra");
- }
- /**
- * Metóda vracia referenciu na dynamický časť triedy Hra.
- *
- * @return
- */
- public static Hra dajHru() {
- return Hra.hra;
- }
- /**
- * Inicializuju sa všetky potrebne, premenné, atribúty triedy a komponenty
- * okna hry. Inštancii triedy Hra vynuluje preddefinové rozloženie
- * komponentov pre možnosť presnejšieho nastavenia pomocou tzv. absolutného
- * rozloženia. Tlačidlám hlavného menu určuje súradnice a rozmery a
- * pridávajú sa do JPanelu HlavnaPlocha ktorá reprezentuje stav hry keď je
- * uživateľ v hlavnom menu hry.
- */
- public Hra() {
- System.out.println("Zacina sa inicializacie Triedy Hra");
- Hra.hra = (Hra)this;
- this.setLayout(null);
- this.graf = new GrafickyProcessor(); //Nezavysla trieda
- this.font = new FontProcessor(); //Nezavysla trieda
- this.text = new TextovyProcesor(); //Nezavysla trieda
- this.init = new InicializacnyProcessor(); //Trieda vyuziva Graficky a Fontovy Procesor
- this.setCursor(this.graf.getRuka());
- this.hlavnaPlocha = this.init.inicializujAVratJPanel(new Rectangle(0, 0, Hra.SIRKA_OKNA, Hra.VYSKA_OKNA), Hra.dajHru());
- this.plochaSiene = this.init.inicializujAVratJPanel(new Rectangle(0, 0, Hra.SIRKA_OKNA, Hra.VYSKA_OKNA), Hra.dajHru());
- this.plochaStola = this.init.inicializujAVratJPanel(new Rectangle(0, 0, Hra.SIRKA_OKNA, Hra.VYSKA_OKNA), Hra.dajHru());
- this.hlavnaSien = new KartovaSien(this.plochaSiene);
- this.mojListener = new HlavnaPlochaListener(this);
- this.inicializujHlavneMenu();
- this.vstupDoHlavnehoMenu();
- this.hlavnaPlocha.setBackground(Color.black);
- this.init.inicializujAVratJLabelSObrazkom("pozadie", "ramik.png", this.hlavnaPlocha.getComponentCount(), this.hlavnaPlocha, new Rectangle(Hra.SIRKA_OKNA, Hra.VYSKA_OKNA));
- System.out.println("Konci sa inicializacia triedy Hra");
- }
- /**
- * Metóda ktorej sa posiela správa pri skončení hry. Zobrazí okienko s menom
- * výťaza pri skončení hry. Pošle správu metóde vymazStol() vo vnorenej
- * triede Panel. Zmení stav hlavnej ponuky na true. Prekreslí okno tohto
- * objektu.
- *
- * @param menoVytaza Parameter typu string ktorý je poslaný z inštancie
- * triedy Stol pri jej ukončení
- */
- public void koniecHry(String menoVytaza) {
- System.out.println("koniecHry");
- JOptionPane.showMessageDialog(null, "Hrac " + menoVytaza + " vyhral hru");
- this.vymazStol();
- this.vstupDoHlavnehoMenu();
- this.prekresli();
- }
- /**
- * Metóda slúži na prepnútie na JPanel hlavnaPlocha spomedzi JPanelov ktoré
- * obsahuje hlavný JFrame. Všetký ostatné panely vypne a prekreslí
- * aktualizuje JFrame.
- *
- */
- public void vstupDoHlavnehoMenu() {
- this.plochaSiene.setVisible(false);
- this.plochaSiene.setEnabled(false);
- this.plochaStola.setVisible(false);
- this.plochaStola.setEnabled(false);
- this.hlavnaPlocha.setVisible(true);
- this.hlavnaPlocha.setEnabled(true);
- this.prekresli();
- }
- /**
- * Metóda slúži na prepnútie na JPanel plochaSiene spomedzi JPanelov ktoré
- * obsahuje hlavný JFrame. Všetký ostatné panely vypne a prekreslí
- * aktualizuje JFrame.
- *
- */
- public void vstupDoSiene() {
- this.hlavnaPlocha.setVisible(false);
- this.hlavnaPlocha.setEnabled(false);
- this.plochaStola.setVisible(false);
- this.plochaStola.setEnabled(false);
- this.plochaSiene.setVisible(true);
- this.plochaSiene.setEnabled(true);
- this.prekresli();
- }
- /**
- * Metóda slúži na prepnútie na JPanel plochaStola spomedzi JPanelov ktoré
- * obsahuje hlavný JFrame. Všetký ostatné panely vypne a prekreslí
- * aktualizuje JFrame.
- *
- */
- public void vstupDoHry() {
- this.hlavnaPlocha.setVisible(false);
- this.hlavnaPlocha.setEnabled(false);
- this.plochaSiene.setVisible(false);
- this.plochaSiene.setEnabled(false);
- this.plochaStola.setVisible(true);
- this.plochaStola.setEnabled(true);
- this.prekresli();
- }
- /**
- * Aktualizuje hlavný JFrame aby v buffery neostali neaktualne prvky.
- */
- public void prekresli() {
- Hra.hra.revalidate();
- Hra.hra.repaint();
- }
- /**
- * Pomocnou triedou InicializacnyProcesor vytvára nové JButtony do
- * hlavnejPlochy a pridáva im ActionListener pre buttony na hlavnejPloche.
- * Rozmedzie je zadefinované manuálne takže pre zmenu pozície je treba
- * nastaviť presné súradnice do parametra metódy inicializujAVratTlacidlo
- */
- private void inicializujHlavneMenu() {
- this.init.inicializujAVratTlacidlo("novaHra", "Nova Hra", this.hlavnaPlocha, this.mojListener, new Rectangle(Hra.SIRKA_OKNA / 2 - 100, 25 + 0 * 75, 200, 50));
- this.init.inicializujAVratTlacidlo("nastaveniaKariet", "Nastavenia Kariet", this.hlavnaPlocha, this.mojListener, new Rectangle(Hra.SIRKA_OKNA / 2 - 100, 25 + 1 * 75, 200, 50));
- this.init.inicializujAVratTlacidlo("vypniHru", "Vypni Hru", this.hlavnaPlocha, this.mojListener, new Rectangle(Hra.SIRKA_OKNA / 2 - 100, 25 + 2 * 75, 200, 50));
- }
- /**
- * Vracia referenciu na inštanciu pomocnej triedy GrafickyProcessor.
- *
- * @return the graf
- */
- public GrafickyProcessor dajGrafickyProcessor() {
- return this.graf;
- }
- /**
- * Vracia referenciu na inštanciu pomocnej triedy TextovýProcessor.
- *
- * @return
- */
- public TextovyProcesor dajTextovyProcessor() {
- return this.text;
- }
- /**
- * Vracia referenciu na inštanciu pomocnej triedy FontProcessor.
- *
- * @return
- */
- public FontProcessor dajFontProcessor() {
- return this.font;
- }
- /**
- * Vracia referenciu na inštanciu pomocnej triedy InicializacnyProcessor.
- *
- * @return
- */
- public InicializacnyProcessor dajInitProcessor() {
- return this.init;
- }
- /**
- * Metóda nuluje referenciu na hlavnyStol.
- */
- public void vymazStol() {
- this.hlavnyStol = null;
- this.plochaStola.removeAll();
- }
- /**
- * Metóda slúži na vyzvanie uživateľa na zadanie mien hráčov a spustenie hry
- * s týmito informáciami. Ak užívateľ zadá prázdný reťazec alebo reťazec
- * obsahuje medzeru ,sa hra nespustí a uživaťel je upozornení na nesprávny
- * vstup. Ak nepotvrdi vstup suhlasom ho zachyti catch statements a upozorni
- * ho. Ak zadá správny vstup hra sa začne.
- *
- */
- public void vytvorNovyStol() {
- String menoPrvehoHraca = JOptionPane.showInputDialog(this, "Ako sa volá hráč č.1?");
- String menoDruhehoHraca = JOptionPane.showInputDialog(this, "Ako sa volá hráč č.2?");
- try {
- if (menoPrvehoHraca == null || menoDruhehoHraca == null || menoPrvehoHraca.isEmpty() || menoDruhehoHraca.isEmpty()) {
- throw new NespravnyVstupException();
- }
- this.vstupDoHry();
- this.hlavnyStol = new Stol(menoPrvehoHraca, menoDruhehoHraca, this.hlavnaSien.dajBalicek(0), this.hlavnaSien.dajBalicek(1), this.plochaStola);
- } catch (NespravnyVstupException ex) {
- JOptionPane.showInputDialog("zadali ste nespravny vstup", "hlasenie o chybe");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement