Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- **
- * Assignment 6 -- Prisoner's Dilemma -- 2ip90
- * main class
- *
- * @author Stefan Adrian Robu,1449044
- * @author Silvia Garcia Cabaces, 1446304
- * assignment group 28
- *
- * assignment copyright Kees Huizing
- */
- import javax.swing.*;
- import java.awt.*;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.ChangeListener;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.Hashtable;
- class PrisonersDilemma implements ChangeListener, ActionListener {
- private JFrame frame;
- private JButton goButton;
- private JButton pauseButton;
- private JCheckBox ruleCheck;
- private JButton resetButton;
- private JSlider alphaSlider;
- private JSlider freqSlider;
- private JLabel alphaLabel;
- private JLabel freqLabel;
- private JLabel ruleLabel;
- private final JTextField txtAlpha = new JTextField(10);
- private final JTextField txtFreq = new JTextField(10);
- private boolean go = true;
- private boolean ruleState = true;
- private static final int GRID_SIZE = 50;
- private static final int freqMin = 0;
- private static final int freqMax = 60;
- private static final int freqMid = 1;
- private static final int aMin= 0;
- private static final int aMax=30;
- private static final int aMid= 10;
- PlayingField playField;
- void buildGUI() {
- SwingUtilities.invokeLater( () -> {
- playField = new PlayingField(GRID_SIZE);
- frame= new JFrame("Prisoners´s Dilemma");
- goButton = new JButton("GO");
- pauseButton = new JButton("Pause");
- resetButton = new JButton("Reset");
- ruleCheck = new JCheckBox();
- ruleLabel= new JLabel("Alternative ");
- alphaLabel = new JLabel("Alpha");
- freqLabel = new JLabel("Frequency");
- alphaSlider = new JSlider(JSlider.HORIZONTAL, aMin, aMax, aMid);
- freqSlider = new JSlider(JSlider.HORIZONTAL,freqMin, freqMax, freqMid);
- frame.setSize(600,700);
- frame.add(goButton);
- goButton.setBounds(60,600,80,25);
- goButton.addActionListener(this);
- frame.add(pauseButton);
- pauseButton.setBounds(180,600,80,25);
- pauseButton.addActionListener(this);
- frame.add(resetButton);
- resetButton.setBounds(300,600,80,25);
- resetButton.addActionListener(this);
- frame.add(ruleCheck);
- ruleCheck.setBounds(400,600,20,25);
- ruleCheck.addActionListener(this);
- frame.add(alphaSlider);
- alphaSlider.setBounds(125,520,100,50);
- alphaSlider.addChangeListener(this);
- alphaSlider.setMinorTickSpacing(10);
- alphaSlider.setPaintTicks(true);
- Hashtable<Integer, JLabel> labelTable= new Hashtable<>();
- labelTable.put(0, new JLabel("0.0"));
- labelTable.put(10, new JLabel("1.0") );
- labelTable.put(20, new JLabel("2.0") );
- labelTable.put(30, new JLabel("3.0") );
- alphaSlider.setLabelTable(labelTable);
- alphaSlider.setPaintLabels(true);
- frame.add(alphaLabel);
- alphaLabel.setBounds(155,560,100,50);
- frame.add(ruleLabel);
- ruleLabel.setBounds(425,589,80,50);
- frame.add(freqSlider);
- freqSlider.setBounds(300,520,150,50);
- freqSlider.addChangeListener(this);
- freqSlider.setMajorTickSpacing(10);
- freqSlider.setPaintTicks(true);
- freqSlider.setPaintLabels(true);
- frame.add(freqLabel);
- freqLabel.setBounds(340,560,100,50);
- playField.gridCreate();
- playField.setNeighbour();
- frame.add(playField);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
- } );
- }
- @Override
- public void stateChanged(ChangeEvent e) {
- if (e.getSource() == alphaSlider){
- double alpha = alphaSlider.getValue() / 10.0;
- playField.getAlpha();
- }
- if(e.getSource() ==freqSlider){
- if(freqSlider.getValue() == 0){
- playField.stop();
- freqSlider.setValue(freqMid);
- go= true;
- playField.setFrequency(freqMid);
- }
- else {
- playField.setFrequency(freqSlider.getValue());
- }
- }
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == goButton) {
- go = true;
- playField.timeStart();
- }
- if(e.getSource() == pauseButton) {
- go = false;
- playField.timeStart();
- }
- if (e.getSource() == resetButton) {
- go = false;
- playField.stop();
- playField.gridCreate();
- playField.setNeighbour();
- }
- if (e.getSource() == ruleCheck) {
- if (ruleState) {
- ruleState = false;
- } else {
- ruleState = true;
- }
- playField.setAlternativeRule(ruleState);
- }
- }
- public static void main( String[] a ) {
- (new PrisonersDilemma()).buildGUI();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement