Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.78 KB | None | 0 0
  1. package javaapplication1;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Label;
  6. import javax.swing.*;
  7. import java.awt.event.*;
  8. /**
  9.  *
  10.  * @author Alexko
  11.  */
  12.  
  13. public class JavaAplication1 extends JFrame {
  14.  
  15.     public static void main(String[] args) {
  16.         JFrame frame = new JavaAplication1();
  17.         frame.setSize( 420, 400);
  18.         frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  19.         frame.setTitle( "is gelijk?");
  20.         frame.setContentPane( new BKEPaneel() );
  21.         frame.setVisible( true );
  22.     }
  23. }
  24.  
  25. class BKEPaneel extends JPanel implements ActionListener {
  26.  
  27.     final JButton[] buttons = new JButton[9];
  28.     final Label whoWin = new Label();
  29.     final Label scoreLabel = new Label();
  30.     final JButton resetButton = new JButton();
  31.     final JButton playWithBots = new JButton();
  32.    
  33.     boolean isBotGame = true;
  34.     int playerScore[] =  {0, 0};
  35.     String speler = "X";
  36.  
  37.     public BKEPaneel() {
  38.            
  39.         //Bind click event to reset button
  40.         resetButton.addActionListener(this);
  41.         resetButton.setText("0:0");
  42.         resetButton.setBounds(60, 280, 80, 35);    
  43.          
  44.         playWithBots.addActionListener(this);
  45.         playWithBots.setText("Play With Bots: ON");
  46.         playWithBots.setForeground(Color.GREEN);
  47.         playWithBots.setBounds(120 + 30, 280, 150, 35);
  48.        
  49.         //schakel layout manager uit
  50.         setLayout(null);
  51.  
  52.         for (int i=0;i<buttons.length;i++) {
  53.            
  54.             buttons[i]=new JButton("_");
  55.             buttons[i].addActionListener(this);
  56.             add(buttons[i]);
  57.         }
  58.    
  59.         add(scoreLabel);
  60.        
  61.         int index = 0;
  62.         //Rows
  63.         for (int j=1; j <=3; j++) {
  64.            
  65.             //Lines
  66.             for(int i = 1; i <= 3; i++) {
  67.                
  68.                 buttons[index].setBounds( i * 60,  j * 60, 50, 50);
  69.                 index++;
  70.             }
  71.         }
  72.        
  73.         add(playWithBots);
  74.         add(resetButton);
  75.         add(whoWin);
  76.     }
  77.    
  78.     private boolean checkForCharacter(String character)
  79.     {
  80.         //Malo by to byt cez for to by bolo ovela mensie ale jebat
  81.         //Horizontal check
  82.         if(buttons[0].getText().equals(character) && buttons[1].getText().equals(character) && buttons[2].getText().equals(character))
  83.             return true;
  84.        
  85.         //Horizontal check row 2
  86.        if(buttons[3].getText().equals(character) && buttons[4].getText().equals(character) && buttons[5].getText().equals(character))
  87.             return true;
  88.        
  89.        //Horizontal check row 3
  90.        if(buttons[4].getText().equals(character) && buttons[5].getText().equals(character) && buttons[6].getText().equals(character))
  91.             return true;
  92.        
  93.         //vertical check row 1
  94.        if(buttons[0].getText().equals(character) && buttons[3].getText().equals(character) && buttons[6].getText().equals(character))
  95.             return true;
  96.        
  97.        //vertical check row 2
  98.        if(buttons[1].getText().equals(character) && buttons[4].getText().equals(character) && buttons[7].getText().equals(character))
  99.             return true;
  100.        
  101.        //Horizontal check row 3
  102.        if(buttons[2].getText().equals(character) && buttons[5].getText().equals(character) && buttons[8].getText().equals(character))
  103.             return true;
  104.      
  105.        //van links naar rechts - boven naar beneden
  106.        if(buttons[0].getText().equals(character) && buttons[4].getText().equals(character) && buttons[8].getText().equals(character))
  107.             return true;
  108.        // van rechts naar links - beneden naar boven
  109.        
  110.        //Horizontal check row 2
  111.        if(buttons[8].getText().equals(character) && buttons[4].getText().equals(character) && buttons[0].getText().equals(character))
  112.             return true;
  113.        
  114.        //van links onder naar rechts boven
  115.        if(buttons[6].getText().equals(character) && buttons[4].getText().equals(character) && buttons[2].getText().equals(character))
  116.             return true;
  117.    
  118.         return false;
  119.      }
  120.    
  121.     private void restartGame()
  122.     {
  123.         //Reset game
  124.         for (JButton button : buttons) {
  125.             button.setText("_");
  126.         }
  127.     }
  128.    
  129.     private void updateScore()
  130.     {
  131.         String myFancyFormatedString = String.format("%d:%d", playerScore[0], playerScore[1]);
  132.         resetButton.setText(myFancyFormatedString);
  133.     }
  134.    
  135.     private void checkForWinner ()
  136.     {
  137.         if (checkForCharacter("X"))
  138.         {
  139.             JOptionPane.showMessageDialog(null, "Player X is winner");
  140.             restartGame();
  141.             playerScore[0]++;
  142.             updateScore();
  143.         }
  144.         else if(checkForCharacter("O"))
  145.         {
  146.             JOptionPane.showMessageDialog(null, "Player O is winner");
  147.             restartGame();
  148.             playerScore[1]++;
  149.             updateScore();
  150.         }
  151.      
  152.         boolean isFull = true;
  153.        
  154.         for (JButton button : buttons) {
  155.             if ("_".equals(button.getText())) {
  156.                 isFull = false;
  157.             }
  158.         }
  159.        
  160.         if(isFull) {
  161.             whoWin.setText("Noone won");
  162.             restartGame();
  163.         }
  164.     }
  165.    
  166.     public void botChoose()
  167.     {
  168.         int randomIndex = 0;
  169.        
  170.         while( !buttons[randomIndex].getText().equals("_") && randomIndex < buttons.length)
  171.         {
  172.            randomIndex++;
  173.         }
  174.        
  175.         buttons[randomIndex].setText(speler);
  176.     }
  177.    
  178.     public void flipCurrentPlayer()
  179.     {
  180.         if(speler.equals("X")) speler = "O";
  181.         else speler = "X";
  182.     }
  183.    
  184.     public void actionPerformed( ActionEvent e) {
  185.        
  186.         JButton src =(JButton) e.getSource();
  187.        
  188.         //If rest button is pressed
  189.         if(src == resetButton) {
  190.            
  191.             restartGame();
  192.             return;
  193.         }
  194.        
  195.         if(src == playWithBots) {
  196.            
  197.             playWithBots.setForeground(Color.red);
  198.             playWithBots.setText("Play With Bots: OFF");
  199.             isBotGame = false;
  200.             restartGame();
  201.             return;
  202.         }
  203.        
  204.         //Check if game field button was pressed
  205.         for(int i= 0; i < buttons.length; i++) {
  206.            
  207.             JButton currentButton = buttons[i];
  208.             if(currentButton == src && currentButton.getText().equals("_")) {
  209.                
  210.                 flipCurrentPlayer();
  211.                 currentButton.setText(speler);
  212.                 checkForWinner();
  213.                
  214.                 if(isBotGame) {
  215.                
  216.                     //Bot
  217.                     flipCurrentPlayer();
  218.                     botChoose();
  219.                     checkForWinner();
  220.                 }
  221.             }
  222.         }
  223.     }
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement