Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement