Guest User

Untitled

a guest
May 4th, 2016
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.81 KB | None | 0 0
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Dimension;
  4. import java.awt.GridLayout;
  5. import java.util.ArrayList;
  6. import java.util.Observable;
  7. import java.util.Observer;
  8. import javax.swing.BorderFactory;
  9. import javax.swing.DefaultListModel;
  10. import javax.swing.JButton;
  11. import javax.swing.JFrame;
  12. import javax.swing.JLabel;
  13. import javax.swing.JList;
  14. import javax.swing.JOptionPane;
  15. import javax.swing.JPanel;
  16. import javax.swing.JTextField;
  17. import javax.swing.ListSelectionModel;
  18.  
  19. @SuppressWarnings("serial")
  20. public class View extends JFrame implements ViewInterface, Observer {
  21. Controller controller;
  22. JPanel panel;
  23. ArrayList<JButton> board = new ArrayList();
  24. JPanel messagePanel;
  25. JLabel topText;
  26. JPanel sidePanel;
  27. JPanel westPanel;
  28. JTextField Spelare;
  29. JButton LäggTill, Exit;
  30. JButton test;
  31. JList lista;
  32. DefaultListModel model; //Lista för spelare
  33. //private String letter = " ";
  34.  
  35. // private int count = 0;
  36. // private char winner;
  37.  
  38. public View(Controller controller){
  39. super();
  40. this.controller = controller;
  41. setupUI();
  42. }
  43.  
  44. private void setupUI(){
  45. setupFrame();
  46. setupMessagePanel();
  47. setupPanel();
  48.  
  49. setupBoard();
  50. setupPlayers();
  51. setupLäggTill();
  52.  
  53. this.getContentPane().add(panel);
  54. }
  55.  
  56. private void setupFrame(){
  57. setSize(400,400);
  58. setTitle("Tic-Tac-Toe");
  59. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  60. setLocationRelativeTo(null);
  61. setLayout(new BorderLayout());
  62. }
  63.  
  64. private void setupMessagePanel(){
  65. messagePanel = new JPanel();
  66. topText = new JLabel("X startar");
  67. messagePanel.add(topText);
  68. this.getContentPane().add(messagePanel, BorderLayout.SOUTH);
  69. }
  70.  
  71. private void setupPlayers(){
  72. sidePanel = new JPanel();
  73. westPanel = new JPanel();
  74. Spelare = new JTextField("Skriv ditt namn", 9);
  75. Spelare.addActionListener(controller);
  76. model = new DefaultListModel(); //DefaultListModel för att lägga till personer
  77. lista = new JList(model);
  78. lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  79. lista.setLayoutOrientation(JList.VERTICAL);
  80. lista.setVisibleRowCount(7);
  81.  
  82. lista.setPreferredSize(new Dimension(50,200));
  83.  
  84. sidePanel.add(Spelare);
  85. westPanel.add(lista);
  86.  
  87. this.getContentPane().add(sidePanel, BorderLayout.NORTH);
  88. this.getContentPane().add(westPanel, BorderLayout.WEST);
  89. }
  90.  
  91.  
  92.  
  93. private void setupLäggTill()
  94. {
  95. LäggTill = new JButton("Lägg till");
  96. Exit = new JButton("Exit");
  97. LäggTill.setActionCommand("Lägg till");
  98. LäggTill.addActionListener(controller);
  99. Exit.setActionCommand("Exit");
  100. Exit.addActionListener(controller);
  101. sidePanel.add(LäggTill);
  102. messagePanel.add(Exit);
  103.  
  104. this.getContentPane().add(sidePanel, BorderLayout.NORTH);
  105.  
  106. }
  107. private void setupPanel(){
  108. panel = new JPanel();
  109.  
  110.  
  111. panel.setLayout(new GridLayout(3, 3, -1, -1));
  112. }
  113.  
  114. private void setupBoard(){
  115. for(int i = 0; i < 9; i++){
  116. JButton symbol = new JButton();
  117. symbol.setText("");
  118. symbol.setSize(new Dimension(400/3,400/3));
  119. symbol.setHorizontalAlignment(JLabel.CENTER);
  120. symbol.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2,Color.RED));
  121.  
  122.  
  123. symbol.addActionListener(controller);
  124. symbol.setActionCommand(String.valueOf(i));
  125. board.add(symbol);
  126. panel.add(symbol);
  127.  
  128.  
  129. }
  130. }
  131.  
  132.  
  133. @Override
  134. public void gameTie() {
  135.  
  136. giveMessage("Oavgjort", "Otur, ingen vann");
  137. reset();
  138.  
  139. }
  140.  
  141. @Override
  142. public void gameWon(char winner) {
  143.  
  144. giveMessage("Spel klart", winner + " vann!");
  145. reset();
  146. }
  147.  
  148. private void giveMessage(String header, String message){
  149.  
  150. JOptionPane.showMessageDialog(this,
  151. message,
  152. header,
  153. JOptionPane.PLAIN_MESSAGE);
  154.  
  155. }
  156.  
  157. private void reset() {
  158. for(JButton label : board){
  159. label.setText("");
  160. }
  161. panel.repaint();
  162. }
  163.  
  164. public void update(Observable o, Object arg) {
  165. Model model_copy = (Model)o;
  166. int[][] test = model_copy.getBoard();
  167. int winner = model_copy.isThereAWinner();
  168. int tie = model_copy.isThereAWinner();
  169.  
  170. int index = 0;
  171. for (int i = 0; i < 3; i++)
  172. {
  173. for (int j = 0; j < 3; j++)
  174. {
  175. if(test[j][i] == 1)
  176. {
  177. this.board.get(index).setText("X");
  178.  
  179. }
  180. else if (test[j][i] == 2)
  181. {
  182.  
  183. this.board.get(index).setText("O");
  184. }
  185. index ++;
  186. }
  187. }
  188.  
  189.  
  190. // int tie = model_copy.tie();
  191. if (winner ==1)
  192. {
  193. giveMessage("Spel klart", "X" + " vann!");
  194. reset();
  195.  
  196. }
  197. else if (winner ==2)
  198. {
  199. giveMessage("Spel klart", "O" + " vann!");
  200. reset();
  201. }
  202. else if (tie ==3)
  203. {
  204. giveMessage("Oavgjort", "Otur, ingen vann");
  205. }
  206.  
  207. }
  208.  
  209. }
  210.  
  211. //
  212. // private void setCurrentPlayer(char player){
  213. // if(player == '1'){
  214. // topText.setText("X's tur");
  215. // }
  216. // else{
  217. // topText.setText("O's tur");
  218. // }
  219. // }
Add Comment
Please, Sign In to add comment