Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.GridLayout;
- import java.util.ArrayList;
- import java.util.Observable;
- import java.util.Observer;
- import javax.swing.BorderFactory;
- import javax.swing.DefaultListModel;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JList;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- import javax.swing.ListSelectionModel;
- @SuppressWarnings("serial")
- public class View extends JFrame implements ViewInterface, Observer {
- Controller controller;
- JPanel panel;
- ArrayList<JButton> board = new ArrayList();
- JPanel messagePanel;
- JLabel topText;
- JPanel sidePanel;
- JPanel westPanel;
- JTextField Spelare;
- JButton LäggTill, Exit;
- JButton test;
- JList lista;
- DefaultListModel model; //Lista för spelare
- //private String letter = " ";
- // private int count = 0;
- // private char winner;
- public View(Controller controller){
- super();
- this.controller = controller;
- setupUI();
- }
- private void setupUI(){
- setupFrame();
- setupMessagePanel();
- setupPanel();
- setupBoard();
- setupPlayers();
- setupLäggTill();
- this.getContentPane().add(panel);
- }
- private void setupFrame(){
- setSize(400,400);
- setTitle("Tic-Tac-Toe");
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setLocationRelativeTo(null);
- setLayout(new BorderLayout());
- }
- private void setupMessagePanel(){
- messagePanel = new JPanel();
- topText = new JLabel("X startar");
- messagePanel.add(topText);
- this.getContentPane().add(messagePanel, BorderLayout.SOUTH);
- }
- private void setupPlayers(){
- sidePanel = new JPanel();
- westPanel = new JPanel();
- Spelare = new JTextField("Skriv ditt namn", 9);
- Spelare.addActionListener(controller);
- model = new DefaultListModel(); //DefaultListModel för att lägga till personer
- lista = new JList(model);
- lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- lista.setLayoutOrientation(JList.VERTICAL);
- lista.setVisibleRowCount(7);
- lista.setPreferredSize(new Dimension(50,200));
- sidePanel.add(Spelare);
- westPanel.add(lista);
- this.getContentPane().add(sidePanel, BorderLayout.NORTH);
- this.getContentPane().add(westPanel, BorderLayout.WEST);
- }
- private void setupLäggTill()
- {
- LäggTill = new JButton("Lägg till");
- Exit = new JButton("Exit");
- LäggTill.setActionCommand("Lägg till");
- LäggTill.addActionListener(controller);
- Exit.setActionCommand("Exit");
- Exit.addActionListener(controller);
- sidePanel.add(LäggTill);
- messagePanel.add(Exit);
- this.getContentPane().add(sidePanel, BorderLayout.NORTH);
- }
- private void setupPanel(){
- panel = new JPanel();
- panel.setLayout(new GridLayout(3, 3, -1, -1));
- }
- private void setupBoard(){
- for(int i = 0; i < 9; i++){
- JButton symbol = new JButton();
- symbol.setText("");
- symbol.setSize(new Dimension(400/3,400/3));
- symbol.setHorizontalAlignment(JLabel.CENTER);
- symbol.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2,Color.RED));
- symbol.addActionListener(controller);
- symbol.setActionCommand(String.valueOf(i));
- board.add(symbol);
- panel.add(symbol);
- }
- }
- @Override
- public void gameTie() {
- giveMessage("Oavgjort", "Otur, ingen vann");
- reset();
- }
- @Override
- public void gameWon(char winner) {
- giveMessage("Spel klart", winner + " vann!");
- reset();
- }
- private void giveMessage(String header, String message){
- JOptionPane.showMessageDialog(this,
- message,
- header,
- JOptionPane.PLAIN_MESSAGE);
- }
- private void reset() {
- for(JButton label : board){
- label.setText("");
- }
- panel.repaint();
- }
- public void update(Observable o, Object arg) {
- Model model_copy = (Model)o;
- int[][] test = model_copy.getBoard();
- int winner = model_copy.isThereAWinner();
- int tie = model_copy.isThereAWinner();
- int index = 0;
- for (int i = 0; i < 3; i++)
- {
- for (int j = 0; j < 3; j++)
- {
- if(test[j][i] == 1)
- {
- this.board.get(index).setText("X");
- }
- else if (test[j][i] == 2)
- {
- this.board.get(index).setText("O");
- }
- index ++;
- }
- }
- // int tie = model_copy.tie();
- if (winner ==1)
- {
- giveMessage("Spel klart", "X" + " vann!");
- reset();
- }
- else if (winner ==2)
- {
- giveMessage("Spel klart", "O" + " vann!");
- reset();
- }
- else if (tie ==3)
- {
- giveMessage("Oavgjort", "Otur, ingen vann");
- }
- }
- }
- //
- // private void setCurrentPlayer(char player){
- // if(player == '1'){
- // topText.setText("X's tur");
- // }
- // else{
- // topText.setText("O's tur");
- // }
- // }
Add Comment
Please, Sign In to add comment