import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.*; public class Gui extends JFrame{ /** Potrebne deklarace pro spravne vytvoreni grafickeho prostedi */ private static final long serialVersionUID = 1L; public static JButton geografieBut, historieBut, sportBut, technikaBut, vyznamBut, cfBut; public static JButton zemepis1,zemepis2, zemepis3; public static JButton historie1; public static JButton historie2; public static JButton historie3; public static JButton sport1,sport2, sport3; public static JButton technika1,technika2, technika3; public static JButton vyznam1,vyznam2,vyznam3; public static JButton cf1,cf2,cf3; public static JPanel kolik; public static JPanel zemepis; public static JPanel historie; public static JPanel sport; public static JPanel prehled; public static JPanel prehled1; public static JPanel prehled2; public static JPanel prehled3; public static JPanel technika; public static JPanel vyznam; public static JPanel cf; public static JTextField body1; public static JTextField body2; public static JTextField body3; public static JTextField otazka; private MenuBar menu; private Menu hra, napoveda; private MenuItem ukoncit, help, ohre, cfu, vzdatse; public static int suma = 0; public static String ot = "", a = "", b = "", c = ""; public static JTextArea vypis; private static SimpleDateFormat ft = new SimpleDateFormat ("hh:mm:ss"); /** Getter pro textAreu * * @return vypis */ public JTextArea getVypis() { return vypis; } /** Setter pro textAreu * * @param text, ktery chceme vypsat v textAree * */ public void setVypis(String text) { vypis.append(text); } /** Konstruktor pro vytvoreni grafickeho rozhrani */ public Gui() { super("Kvíz!!!"); this.addWindowListener(new WindowListener() { public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub } public void windowIconified(WindowEvent e) { // TODO Auto-generated method stub } public void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub } public void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowClosing(WindowEvent e) { try { Spojeni.odesli("X"); //JOptionPane.showInputDialog("Server padl.. hra bude ukončena a omlouváme se za vzniklé škody."); //JOptionPane.createDialog("Server padl.. hra bude ukončena a omlouváme se za vzniklé škody."); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } public void windowClosed(WindowEvent e) { // TODO Auto-generated method stub } public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub } }); FlowLayout layout = new FlowLayout(); setLayout(layout); kolik = new JPanel(new GridLayout(4,1)); kolik.setPreferredSize(new Dimension(900, 100)); add(kolik); kolik.setVisible(false); zemepis = new JPanel(new GridLayout(4,1)); Icon geo = new ImageIcon("/img/geo.png"); geografieBut = new JButton(geo); //geografieBut = new JButton("GEOGRAFIE"); geografieBut.setContentAreaFilled(false); geografieBut.setBorderPainted(false); geografieBut.setPreferredSize(new Dimension(140, 50)); geografieBut.setFocusable(false); zemepis.add(geografieBut); Icon z1 = new ImageIcon("/img/g1.png"); Icon z2 = new ImageIcon("/img/g2.png"); Icon z3 = new ImageIcon("/img/g3.png"); zemepis1 = new JButton(z1); zemepis2 = new JButton(z2); zemepis3 = new JButton(z3); zemepis1.setContentAreaFilled(false); zemepis1.setBorderPainted(false); zemepis2.setContentAreaFilled(false); zemepis2.setBorderPainted(false); zemepis3.setContentAreaFilled(false); zemepis3.setBorderPainted(false); zemepis.add(zemepis1); zemepis.add(zemepis2); zemepis.add(zemepis3); add(zemepis); /////////////////////////////////////////////////////////////////// historie = new JPanel(new GridLayout(4,1)); Icon his = new ImageIcon("his.png"); historieBut = new JButton(his); historieBut.setContentAreaFilled(false); historieBut.setBorderPainted(false); //historieBut = new JButton("HISTORIE"); historieBut.setPreferredSize(new Dimension(140, 50)); historieBut.setFocusable(false); historie.add(historieBut); Icon h1 = new ImageIcon("h1.png"); Icon h2 = new ImageIcon("h2.png"); Icon h3 = new ImageIcon("h3.png"); historie1 = new JButton(h1); historie2 = new JButton(h2); historie3 = new JButton(h3); historie1.setContentAreaFilled(false); historie1.setBorderPainted(false); historie2.setContentAreaFilled(false); historie2.setBorderPainted(false); historie3.setContentAreaFilled(false); historie3.setBorderPainted(false); historie.add(historie1); historie.add(historie2); historie.add(historie3); add(historie); /////////////////////////////////////////////////////////////////// sport = new JPanel(new GridLayout(4,1)); Icon sp = new ImageIcon("sp.png"); sportBut = new JButton(sp); sportBut.setContentAreaFilled(false); sportBut.setBorderPainted(false); //sportBut = new JButton("SPORT"); sportBut.setPreferredSize(new Dimension(140, 50)); sportBut.setFocusable(false); sport.add(sportBut); Icon s1 = new ImageIcon("s1.png"); Icon s2 = new ImageIcon("s2.png"); Icon s3 = new ImageIcon("s3.png"); sport1 = new JButton(s1); sport2 = new JButton(s2); sport3 = new JButton(s3); sport1.setContentAreaFilled(false); sport1.setBorderPainted(false); sport2.setContentAreaFilled(false); sport2.setBorderPainted(false); sport3.setContentAreaFilled(false); sport3.setBorderPainted(false); sport.add(sport1); sport.add(sport2); sport.add(sport3); add(sport); /////////////////////////////////////////////////////////////////// technika = new JPanel(new GridLayout(4,1)); Icon tech = new ImageIcon("tech.png"); technikaBut = new JButton(tech); technikaBut.setContentAreaFilled(false); technikaBut.setBorderPainted(false); //technikaBut = new JButton("TECHNIKA"); technikaBut.setPreferredSize(new Dimension(140, 50)); technikaBut.setFocusable(false); technika.add(technikaBut); Icon t1 = new ImageIcon("t1.png"); Icon t2 = new ImageIcon("t2.png"); Icon t3 = new ImageIcon("t3.png"); technika1 = new JButton(t1); technika2 = new JButton(t2); technika3 = new JButton(t3); technika1.setContentAreaFilled(false); technika1.setBorderPainted(false); technika2.setContentAreaFilled(false); technika2.setBorderPainted(false); technika3.setContentAreaFilled(false); technika3.setBorderPainted(false); technika.add(technika1); technika.add(technika2); technika.add(technika3); add(technika); /////////////////////////////////////////////////////////////////// vyznam = new JPanel(new GridLayout(4,1)); Icon vyz = new ImageIcon("vynalez.png"); vyznamBut = new JButton(vyz); vyznamBut.setContentAreaFilled(false); vyznamBut.setBorderPainted(false); //vyznamBut = new JButton("VYNÁLEZCI"); vyznamBut.setPreferredSize(new Dimension(140, 50)); vyznamBut.setFocusable(false); vyznam.add(vyznamBut); Icon v1 = new ImageIcon("v1.png"); Icon v2 = new ImageIcon("v2.png"); Icon v3 = new ImageIcon("v3.png"); vyznam1 = new JButton(v1); vyznam2 = new JButton(v2); vyznam3 = new JButton(v3); vyznam1.setContentAreaFilled(false); vyznam1.setBorderPainted(false); vyznam2.setContentAreaFilled(false); vyznam2.setBorderPainted(false); vyznam3.setContentAreaFilled(false); vyznam3.setBorderPainted(false); vyznam.add(vyznam1); vyznam.add(vyznam2); vyznam.add(vyznam3); add(vyznam); /////////////////////////////////////////////////////////////////// cf = new JPanel(new GridLayout(4,1)); Icon film = new ImageIcon("film.png"); cfBut = new JButton(film); cfBut.setContentAreaFilled(false); cfBut.setBorderPainted(false); //cfBut = new JButton("ČESKÝ FILM"); cfBut.setPreferredSize(new Dimension(140, 50)); cfBut.setFocusable(false); cf.add(cfBut); Icon f1 = new ImageIcon("f1000.png"); Icon f2 = new ImageIcon("f2000.png"); Icon f3 = new ImageIcon("f3000.png"); cf1 = new JButton(f1); cf2 = new JButton(f2); cf3 = new JButton(f3); cf1.setContentAreaFilled(false); cf1.setBorderPainted(false); cf2.setContentAreaFilled(false); cf2.setBorderPainted(false); cf3.setContentAreaFilled(false); cf3.setBorderPainted(false); cf.add(cf1); cf.add(cf2); cf.add(cf3); add(cf); ////////////////////////////////////////////////////////////////// prehled = new JPanel(new GridLayout(1,3)); prehled1 = new JPanel(new GridLayout(2,1)); body1 = new JTextField(); body1.setPreferredSize(new Dimension(200, 30)); body1.setEditable(false); // body1.setBorder(BorderFactory.createLoweredBevelBorder()); body1.setName("Player_1"); body1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), body1.getName())); body1.setHorizontalAlignment(JTextField.RIGHT); body1.setText("0"); prehled1.add(body1); prehled.add(prehled1); ////////////////////////////////////////////////////////////////// prehled2 = new JPanel(new GridLayout(2,1)); body2 = new JTextField(); body2.setEditable(false); body2.setName("Player_2"); body2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), body2.getName())); body2.setHorizontalAlignment(JTextField.RIGHT); body2.setText("0"); prehled2.add(body2); prehled.add(prehled2); //////////////////////////////////////////////////////////////// prehled3 = new JPanel(new GridLayout(2,1)); body3 = new JTextField(); body3.setEditable(false); body3.setName("Player_3"); body3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), body3.getName())); body3.setHorizontalAlignment(JTextField.RIGHT); body3.setText("0"); prehled3.add(body3); prehled.add(prehled3); add(prehled); vypis = new JTextArea(10,50); JScrollPane scroll = new JScrollPane(vypis); vypis.setLineWrap(true); vypis.setWrapStyleWord(true); vypis.setPreferredSize(new Dimension(500,1000)); vypis.setAutoscrolls(true); vypis.setMinimumSize(new Dimension(500,200)); vypis.setEditable(false); vypis.setBorder(BorderFactory.createEtchedBorder()); add(scroll); Event event = new Event(); zemepis1.addActionListener(event); zemepis2.addActionListener(event); zemepis3.addActionListener(event); historie1.addActionListener(event); historie2.addActionListener(event); historie3.addActionListener(event); sport1.addActionListener(event); sport2.addActionListener(event); sport3.addActionListener(event); technika1.addActionListener(event); technika2.addActionListener(event); technika3.addActionListener(event); vyznam1.addActionListener(event); vyznam2.addActionListener(event); vyznam3.addActionListener(event); cf1.addActionListener(event); cf2.addActionListener(event); cf3.addActionListener(event); } /** Metoda pro vyhodnoceni vysledku na konci hry * * @param gui */ public static void konec(Gui gui) { int bodyPrvni = Integer.parseInt(body1.getText()); int bodyDruhy = Integer.parseInt(body2.getText()); int bodyTreti = Integer.parseInt(body3.getText()); if(bodyPrvni >= bodyDruhy && bodyPrvni >= bodyTreti){ if(bodyDruhy >= bodyTreti){ JOptionPane.showMessageDialog(gui, "1.místo - "+body1.getName()+": "+bodyPrvni+"\n2.místo - "+body2.getName()+": "+bodyDruhy+"\n3.místo - "+body3.getName()+": "+bodyTreti+"\nhra končí"); } else if(bodyDruhy <= bodyTreti){ JOptionPane.showMessageDialog(gui, "1.místo - "+body1.getName()+": "+bodyPrvni+"\n2.místo - "+body3.getName()+": "+bodyTreti+"\n3.místo - "+body2.getName()+": "+bodyDruhy+"\nhra končí"); } } else if(bodyDruhy >= bodyPrvni && bodyDruhy >= bodyTreti){ if(bodyPrvni >= bodyTreti){ JOptionPane.showMessageDialog(gui, "1.místo - "+body2.getName()+": "+bodyDruhy+"\n2.místo - "+body1.getName()+": "+bodyPrvni+"\n3.místo - "+body3.getName()+": "+bodyTreti+"\nhra končí"); } else if(bodyPrvni <= bodyTreti){ JOptionPane.showMessageDialog(gui, "1.místo - "+body2.getName()+": "+bodyDruhy+"\n2.místo - "+body3.getName()+": "+bodyTreti+"\n3.místo - "+body1.getName()+": "+bodyPrvni+"\nhra končí"); } } else if(bodyTreti >= bodyPrvni && bodyTreti >= bodyDruhy){ if(bodyDruhy <= bodyPrvni){ JOptionPane.showMessageDialog(gui, "1.místo - "+body3.getName()+": "+bodyTreti+"\n2.místo - "+body1.getName()+": "+bodyPrvni+"\n3.místo - "+body2.getName()+": "+bodyDruhy+"\nhra končí"); } else if(bodyDruhy >= bodyPrvni){ JOptionPane.showMessageDialog(gui, "1.místo - "+body3.getName()+": "+bodyTreti+"\n2.místo - "+body2.getName()+": "+bodyDruhy+"\n3.místo - "+body1.getName()+": "+bodyPrvni+"\nhra končí"); } } } /** Metoda pro vypsani dialogu, kdyz spadne/skonci server * * @param gui */ public static void serverDown(Gui gui) { JOptionPane.showMessageDialog(gui, "Server padl.. hra bude ukončena a omlouváme se za vzniklé škody."); } /** Metoda pro vypsani dialogu v pripade, ze se zbyli dva hraci odpoji * * @param gui */ public static void vyhralsi(Gui gui) { JOptionPane.showMessageDialog(gui, "Zbylý hráči to vzdali. Vyhrál si.."); } /** Metoda pro vypsani dialogu v pripade, ze je dana hra jiz spustena nebo plna * * @param gui */ public static void obsazeno(Gui gui){ JOptionPane.showMessageDialog(gui, "Obsazeno, zvol jiný id hry"); } public static class Event implements ActionListener { /** Metoda pro spravne rozrazeni, ktere tlacitko bylo stistknuto * * @param ActionEvent e, tlacitko, co bylo zmacknuto */ public void actionPerformed(ActionEvent e) { Object src = e.getSource(); if (src == zemepis1) { zemepis("z1"); } else if(src == zemepis2) { zemepis("z2"); } else if(src == zemepis3) { zemepis("z3"); } else if(src == historie1) { historie("h1"); } else if(src == historie2) { historie("h2"); } else if(src == historie3) { historie("h3"); } else if(src == sport1) { sport("s1"); } else if(src == sport2) { sport("s2"); } else if(src == sport3) { sport("s3"); } else if(src == technika1) { technika("t1"); } else if(src == technika2) { technika("t2"); } else if(src == technika3) { technika("t3"); } else if(src == vyznam1) { vyznam("v1"); } else if(src == vyznam2) { vyznam("v2"); } else if(src == vyznam3) { vyznam("v3"); } else if(src == cf1) { film("f1"); } else if(src == cf2) { film("f2"); } else if(src == cf3) { film("f3"); } } /** Metoda pro geografii a nasledne odeslani na server s pozadavkem o poslani zpet odpovidajici otazky s moznostmi dle skupiny narocnosti * * @param skupina, ktera z moznosti byla stisknuta */ public static void zemepis(String skupina){ try { if(skupina.equals("z1")){ Spojeni.odesli("z1"); } else if(skupina.equals("z2")){ Spojeni.odesli("z2"); } else{ Spojeni.odesli("z3"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** Metoda pro historii a nasledne odeslani na server s pozadavkem o poslani zpet odpovidajici otazky s moznostmi dle skupiny narocnosti * * @param skupina, ktera z moznosti byla stisknuta */ public static void historie(String skupina){ try { if(skupina.equals("h1")){ Spojeni.odesli("h1"); } else if(skupina.equals("h2")){ Spojeni.odesli("h2"); } else{ Spojeni.odesli("h3"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** Metoda pro sport a nasledne odeslani na server s pozadavkem o poslani zpet odpovidajici otazky s moznostmi dle skupiny narocnosti * * @param skupina, ktera z moznosti byla stisknuta */ public static void sport(String skupina){ try { if(skupina.equals("s1")){ Spojeni.odesli("s1"); } else if(skupina.equals("s2")){ Spojeni.odesli("s2"); } else{ Spojeni.odesli("s3"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** Metoda pro techniku a nasledne odeslani na server s pozadavkem o poslani zpet odpovidajici otazky s moznostmi dle skupiny narocnosti * * @param skupina, ktera z moznosti byla stisknuta */ public static void technika(String skupina){ try { if(skupina.equals("t1")){ Spojeni.odesli("t1"); } else if(skupina.equals("t2")){ Spojeni.odesli("t2"); } else{ Spojeni.odesli("t3"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** Metoda pro vynalezce a nasledne odeslani na server s pozadavkem o poslani zpet odpovidajici otazky s moznostmi dle skupiny narocnosti * * @param skupina, ktera z moznosti byla stisknuta */ public static void vyznam(String skupina){ try { if(skupina.equals("v1")){ Spojeni.odesli("v1"); } else if(skupina.equals("v2")){ Spojeni.odesli("v2"); } else{ Spojeni.odesli("v3"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** Metoda pro cesky film a nasledne odeslani na server s pozadavkem o poslani zpet odpovidajici otazky s moznostmi dle skupiny narocnosti * * @param skupina, ktera z moznosti byla stisknuta */ public static void film(String skupina){ try { if(skupina.equals("f1")){ Spojeni.odesli("f1"); } else if(skupina.equals("f2")){ Spojeni.odesli("f2"); } else{ Spojeni.odesli("f3"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** Metoda pro zobrazeni otazky s moznostmi prijate ze serveru * * @param skupina, ktera z moznosti byla stisknuta */ public static void tlacitkaZemepis(String[] pole){ zemepis.setVisible(false); historie.setVisible(false); sport.setVisible(false); technika.setVisible(false); vyznam.setVisible(false); cf.setVisible(false); ot = ""; a = ""; b = ""; c = ""; ot = pole[2]; otazka = new JTextField(ot); a = pole[3]; b = pole[4]; c = pole[5]; final JButton oa = new JButton(a); final JButton ob = new JButton(b); final JButton oc = new JButton(c); otazka.setEditable(false); kolik.removeAll(); kolik.add(otazka); kolik.add(oa); kolik.add(ob); kolik.add(oc); kolik.setVisible(true); oa.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String vsechno = "P;"+ot+";"+oa.getText(); vyhodnotGeo(vsechno); }}); ob.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String vsechno = "P;"+ot+";"+ob.getText(); vyhodnotGeo(vsechno); }}); oc.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String vsechno = "P;"+ot+";"+oc.getText(); vyhodnotGeo(vsechno); }}); } /** Metoda pro odeslani zmacknute odpovedi k dane otazce a vrace dopuvodniho grafickeho rezimu * * @param skupina, ktera z moznosti byla stisknuta */ public static void vyhodnotGeo(String pole){ try { Spojeni.odesli(pole); kolik.setVisible(false); zemepis.setVisible(true); historie.setVisible(true); sport.setVisible(true); technika.setVisible(true); vyznam.setVisible(true); cf.setVisible(true); } catch (IOException e) { System.out.println("Nepodařilo se nám nic odeslat.."); } } } }