SHARE
TWEET

Untitled

a guest Oct 18th, 2019 91 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. **
  2.  * Assignment 6 -- Prisoner's Dilemma -- 2ip90
  3. * main class
  4. *
  5. * @author Stefan Adrian Robu,1449044
  6. * @author Silvia Garcia Cabaces, 1446304
  7. * assignment group 28
  8. *
  9. * assignment copyright Kees Huizing
  10. */
  11.  
  12. import javax.swing.*;
  13. import java.awt.*;
  14. import javax.swing.event.ChangeEvent;
  15. import javax.swing.event.ChangeListener;
  16. import java.awt.event.ActionEvent;
  17. import java.awt.event.ActionListener;
  18. import java.util.Hashtable;
  19.  
  20.  
  21. class PrisonersDilemma  implements ChangeListener, ActionListener {
  22.    private JFrame frame;
  23.    private JButton goButton;
  24.    private JButton pauseButton;
  25.    private JCheckBox ruleCheck;
  26.    private JButton resetButton;
  27.    private JSlider alphaSlider;
  28.    private JSlider freqSlider;
  29.    private JLabel alphaLabel;
  30.    private JLabel freqLabel;
  31.    private JLabel ruleLabel;
  32.    private final JTextField txtAlpha = new JTextField(10);
  33.    private final JTextField txtFreq = new JTextField(10);
  34.    private boolean go =  true;
  35.    private boolean ruleState = true;
  36.  
  37.    private static final int GRID_SIZE = 50;
  38.  
  39.    private static  final  int freqMin = 0;
  40.    private static  final  int freqMax = 60;
  41.    private static  final  int freqMid = 1;
  42.    private static  final int aMin= 0;
  43.    private static final int aMax=30;
  44.    private static final int aMid= 10;
  45.    PlayingField playField;
  46.  
  47.    void buildGUI() {
  48.        SwingUtilities.invokeLater( () -> {
  49.            playField = new PlayingField(GRID_SIZE);
  50.  
  51.            frame= new JFrame("PrisonersĀ“s Dilemma");
  52.            goButton = new JButton("GO");
  53.            pauseButton = new JButton("Pause");
  54.            resetButton = new JButton("Reset");
  55.            ruleCheck = new JCheckBox();
  56.            ruleLabel= new JLabel("Alternative ");
  57.            alphaLabel = new JLabel("Alpha");
  58.            freqLabel = new JLabel("Frequency");
  59.            alphaSlider = new JSlider(JSlider.HORIZONTAL, aMin, aMax, aMid);
  60.            freqSlider = new JSlider(JSlider.HORIZONTAL,freqMin, freqMax, freqMid);
  61.  
  62.            frame.setSize(600,700);
  63.  
  64.            frame.add(goButton);
  65.            goButton.setBounds(60,600,80,25);
  66.            goButton.addActionListener(this);
  67.  
  68.            frame.add(pauseButton);
  69.             pauseButton.setBounds(180,600,80,25);
  70.           pauseButton.addActionListener(this);
  71.  
  72.            frame.add(resetButton);
  73.            resetButton.setBounds(300,600,80,25);
  74.            resetButton.addActionListener(this);
  75.  
  76.            frame.add(ruleCheck);
  77.            ruleCheck.setBounds(400,600,20,25);
  78.            ruleCheck.addActionListener(this);
  79.  
  80.  
  81.  
  82.            frame.add(alphaSlider);
  83.            alphaSlider.setBounds(125,520,100,50);
  84.            alphaSlider.addChangeListener(this);
  85.            alphaSlider.setMinorTickSpacing(10);
  86.            alphaSlider.setPaintTicks(true);
  87.  
  88.            Hashtable<Integer, JLabel> labelTable= new Hashtable<>();
  89.            labelTable.put(0, new JLabel("0.0"));
  90.            labelTable.put(10, new JLabel("1.0") );
  91.            labelTable.put(20, new JLabel("2.0") );
  92.            labelTable.put(30, new JLabel("3.0") );
  93.            alphaSlider.setLabelTable(labelTable);
  94.            alphaSlider.setPaintLabels(true);
  95.  
  96.            frame.add(alphaLabel);
  97.            alphaLabel.setBounds(155,560,100,50);
  98.  
  99.  
  100.  
  101.  
  102.            frame.add(ruleLabel);
  103.            ruleLabel.setBounds(425,589,80,50);
  104.  
  105.            frame.add(freqSlider);
  106.            freqSlider.setBounds(300,520,150,50);
  107.            freqSlider.addChangeListener(this);
  108.            freqSlider.setMajorTickSpacing(10);
  109.            freqSlider.setPaintTicks(true);
  110.            freqSlider.setPaintLabels(true);
  111.            frame.add(freqLabel);
  112.            freqLabel.setBounds(340,560,100,50);
  113.  
  114.  
  115.  
  116.            playField.gridCreate();
  117.            playField.setNeighbour();
  118.  
  119.            frame.add(playField);
  120.  
  121.  
  122.            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  123.            frame.setVisible(true);
  124.  
  125.  
  126.        } );
  127.    }
  128.     @Override
  129.     public void stateChanged(ChangeEvent e) {
  130.        if (e.getSource() == alphaSlider){
  131.           double alpha = alphaSlider.getValue() / 10.0;
  132.           playField.getAlpha();
  133.  
  134.        }
  135.        if(e.getSource() ==freqSlider){
  136.            if(freqSlider.getValue() == 0){
  137.                playField.stop();
  138.                freqSlider.setValue(freqMid);
  139.                go= true;
  140.                playField.setFrequency(freqMid);
  141.            }
  142.            else {
  143.                playField.setFrequency(freqSlider.getValue());
  144.            }
  145.        }
  146.  
  147.    }
  148.  
  149.  
  150.    @Override
  151.    public void actionPerformed(ActionEvent e) {
  152.        if (e.getSource() == goButton) {
  153.                go = true;
  154.                playField.timeStart();
  155.            }
  156.        if(e.getSource() == pauseButton) {
  157.            go = false;
  158.  
  159.            playField.timeStart();
  160.        }
  161.  
  162.        if (e.getSource() == resetButton) {
  163.            go = false;
  164.            playField.stop();
  165.            playField.gridCreate();
  166.            playField.setNeighbour();
  167.        }
  168.  
  169.        if (e.getSource() == ruleCheck) {
  170.            if (ruleState) {
  171.                ruleState = false;
  172.            } else {
  173.                ruleState = true;
  174.            }
  175.            playField.setAlternativeRule(ruleState);
  176.        }
  177.  
  178.    }
  179.    
  180.    public static void main( String[] a ) {
  181.        (new PrisonersDilemma()).buildGUI();
  182.    }
  183. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top