Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.84 KB | None | 0 0
  1. n =import javax.swing.*;
  2. import java.awt.*;
  3. import java.util.Random;
  4. import java.util.ArrayList;
  5. import java.awt.event.*;
  6.  
  7. public class ColorsAndCombinations
  8. {
  9. public static JFrame window;
  10. public static JPanel display;
  11. public static JPanel controls;
  12.  
  13. public static int board[];
  14. public static int boardStatistics[] = {0,0,0,0};
  15.  
  16. public static ArrayList<int[]> selected = new ArrayList<int[]>();
  17.  
  18. public static class ButtonListener implements ActionListener
  19. {
  20.  
  21. @Override
  22. public void actionPerformed(ActionEvent event)
  23. {
  24. if(event.getActionCommand().equals("generate"))
  25. {
  26. board = null;
  27. for(int i = 0; i < boardStatistics.length; ++i)
  28. {
  29. boardStatistics[i] = 0;
  30. }
  31. selected.clear();
  32. populateBoardRandom();
  33. getStatistics();
  34. getCombinations();
  35. window.repaint();
  36. }
  37. }
  38. }
  39.  
  40. public static class DisplayBoard extends Component
  41. {
  42. public void paint(Graphics graphics)
  43. {
  44.  
  45. int size = getWidth() / board.length;
  46.  
  47. int offset = getHeight() - size;
  48.  
  49. offset /= 2;
  50.  
  51. graphics.translate(0,offset);
  52.  
  53. int i = 0;
  54. for(int element : board)
  55. {
  56. switch(element)
  57. {
  58. case 0:
  59. graphics.setColor(Color.RED);
  60. graphics.fillRect(i * size,0,size,size);
  61. break;
  62. case 1:
  63. graphics.setColor(Color.BLUE);
  64. graphics.fillRect(i * size,0,size,size);
  65. break;
  66. case 2:
  67. graphics.setColor(Color.PINK);
  68. graphics.fillRect(i * size,0,size,size);
  69. break;
  70. case 3:
  71. graphics.setColor(Color.GREEN);
  72. graphics.fillRect(i * size, 0, size, size);
  73. break;
  74. }
  75. graphics.setColor(Color.BLACK);
  76. graphics.drawRect(i * size,0,size,size);
  77. ++i;
  78. }
  79.  
  80. for(i = 0; i < selected.size(); ++i)
  81. {
  82. int scale = selected.get(i)[1] - selected.get(i)[0] + 1;
  83. graphics.setColor(Color.YELLOW);
  84. graphics.drawRect(size * selected.get(i)[0],0,size*scale,size);
  85.  
  86. graphics.drawLine(size * selected.get(i)[0],0,(selected.get(i)[1]+1) * size ,size);
  87. graphics.drawLine(size * selected.get(i)[0],size,size * (selected.get(i)[1] +1), 0);
  88. }
  89.  
  90. graphics.setColor(Color.RED);
  91. graphics.drawString(boardStatistics[0] + " " ,0,size + 25);
  92. graphics.setColor(Color.BLUE);
  93. graphics.drawString(boardStatistics[1] + " " ,25,size + 25);
  94. graphics.setColor(Color.PINK);
  95. graphics.drawString(boardStatistics[2] + " " ,50,size + 25);
  96. graphics.setColor(Color.GREEN);
  97. graphics.drawString(boardStatistics[3] + " " ,75,size + 25);
  98. }
  99.  
  100. @Override
  101. public Dimension getPreferredSize()
  102. {
  103. return new Dimension(display.getWidth(),display.getHeight());
  104. }
  105. }
  106.  
  107. public static void createWindow(String name, int resX, int resY, boolean resizeable)
  108. {
  109. window = new JFrame(name);
  110. window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  111. window.setSize(resX,resY);
  112. window.setMinimumSize(new Dimension(resX,resY));
  113. window.setResizable(resizeable);
  114. window.setVisible(true);
  115. }
  116.  
  117. public static void addControls()
  118. {
  119. controls = new JPanel();
  120. JButton generate = new JButton("Generate");
  121. generate.setActionCommand("generate");
  122. generate.addActionListener(new ButtonListener());
  123.  
  124. controls.add(generate);
  125. window.add(controls,BorderLayout.PAGE_END);
  126. }
  127.  
  128. public static void addDisplay()
  129. {
  130. display = new JPanel();
  131. display.add(new DisplayBoard());
  132. window.add(display,BorderLayout.CENTER);
  133. }
  134.  
  135. public static void populateBoardStatic()
  136. {
  137. board = new int[]{0,0,0,1,3,3,3,3,2,1,1,1};
  138. }
  139.  
  140. public static void populateBoardRandom()
  141. {
  142. Random rand = new Random();
  143. board = new int[12];
  144. for(int i = 0; i < board.length; ++i)
  145. {
  146. board[i] = rand.nextInt(4);
  147. }
  148. }
  149.  
  150. public static void selectCombination(int indexOne, int indexTwo)
  151. {
  152. selected.add(new int[]{indexOne,indexTwo});
  153. }
  154.  
  155. public static void getStatistics()
  156. {
  157. for(int i = 0; i < board.length; ++i)
  158. {
  159. if (board[i] == 0)
  160. boardStatistics[0]++;
  161. if (board[i] == 1)
  162. boardStatistics[1]++;
  163. if (board[i] == 2)
  164. boardStatistics[2]++;
  165. if (board[i] == 3)
  166. boardStatistics[3]++;
  167. }
  168. }
  169.  
  170.  
  171. public static void getCombinations()
  172. {
  173. for(int i = 0; i < board.length - 1; ++i)
  174. {
  175. int offset = 1;
  176. int c = 1; //c shouldn't be initialized to 0
  177. offset = c - 1 - i; //calculate offset outside of while loop, inside of for loop
  178. while(board[i] == board[c])
  179. {
  180. c++;
  181. }
  182. }
  183. }
  184. public static void main(String[] args)
  185. {
  186. populateBoardStatic();
  187. createWindow("Colors and Combinations",800,600,true);
  188. addControls();
  189. addDisplay();
  190. window.pack();
  191. getCombinations();
  192. getStatistics();
  193. window.repaint();
  194. }
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement