/** * Moobreeder is a simple cow breeding game to illustrate the principles of * selective breeding to KS3 pupils. * * (c) Daniel Vedder 2018, Amano Christian School * Licensed under the terms of the MIT license. * https://git.synoikos.de/daniel/moobreeder */ /* * This is the main class with the GUI. */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MooBreeder extends JFrame implements MouseListener { private JMenuBar menubar; private JMenu fileMenu, helpMenu; private JMenuItem reset, quit, help, about; private JPanel breedPanel; private JScrollPane herdScroller; private Box herdBox, motherBox, fatherBox, calf1Box, calf2Box; private JButton add, breed, keep, remove; public static void main(String[] args) { Herd.getInstance(); MooBreeder mb = new MooBreeder(); } public MooBreeder() { this.setTitle("MooBreeder"); this.setSize(800, 400); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.createMenu(); this.createLayout(); //TODO this.setVisible(true); } private void createMenu() { menubar = new JMenuBar(); fileMenu = new JMenu("File"); helpMenu = new JMenu("Help"); reset = new JMenuItem("Reset"); quit = new JMenuItem("Exit"); help = new JMenuItem("Help"); about = new JMenuItem("About"); //TODO reset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int restart = JOptionPane.showConfirmDialog(null, "Reset the game?", "Reset?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (restart == JOptionPane.OK_OPTION) resetGame(); } }); quit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int confirm = JOptionPane.showConfirmDialog(null, "Quit MooBreeder?", "Quit?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if(confirm == JOptionPane.YES_OPTION) System.exit(0); } }); quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.ALT_MASK)); about.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "MooBreeder - an educational breeding game"+ "\n\n(c) 2018 Daniel Vedder"+ ", Amano Christian School"+ "\nhttps://git.synoikos.de/daniel/moobreeder", "About", JOptionPane.INFORMATION_MESSAGE); } }); fileMenu.add(reset); fileMenu.add(quit); helpMenu.add(help); helpMenu.add(about); menubar.add(fileMenu); menubar.add(helpMenu); this.setJMenuBar(menubar); } private void createLayout() { //TODO this.setLayout(new BoxLayout(this.getContentPane(), BoxLayout.X_AXIS)); herdBox = new Box(BoxLayout.Y_AXIS); herdScroller = new JScrollPane(herdBox, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); herdScroller.setWheelScrollingEnabled(true); this.add(herdScroller); breedPanel = new JPanel(new GridLayout(2,2)); fatherBox = new Box(BoxLayout.Y_AXIS); motherBox = new Box(BoxLayout.Y_AXIS); calf1Box = new Box(BoxLayout.Y_AXIS); calf2Box = new Box(BoxLayout.Y_AXIS); breedPanel.add(fatherBox); breedPanel.add(motherBox); breedPanel.add(calf1Box); breedPanel.add(calf2Box); this.add(breedPanel); updateGUI(); } private void updateGUI() { updateHerdBox(); updateParentBox(); updateOffspringBox(); } private void updateHerdBox() { //TODO JLabel label = new JLabel("Your current herd:"); herdBox.add(label); } private void updateParentBox() { //TODO JLabel dl = new JLabel("Father"); JLabel ml = new JLabel("Mother"); fatherBox.add(dl); motherBox.add(ml); } private void updateOffspringBox() { //TODO JLabel l1 = new JLabel("Calf 1"); JLabel l2 = new JLabel("Calf 2"); calf1Box.add(l1); calf2Box.add(l2); } private void resetGame() { Herd.getInstance().resetHerd(); updateGUI(); } private Box getCowBox(Cow c) { //TODO Box cowBox = new Box(BoxLayout.Y_AXIS); cowBox.addMouseListener(this); return cowBox; } /* * MouseListener methods */ @Override public void mouseClicked(MouseEvent me) { //TODO //getSource() //getClickCount() } @Override public void mouseEntered(MouseEvent arg0) {} @Override public void mouseExited(MouseEvent arg0) {} @Override public void mousePressed(MouseEvent arg0) {} @Override public void mouseReleased(MouseEvent arg0) {} }