Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.62 KB | None | 0 0
  1. package tetris;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.util.Random;
  7.  
  8. import javax.swing.Box;
  9. import javax.swing.BoxLayout;
  10. import javax.swing.JButton;
  11. import javax.swing.JCheckBox;
  12. import javax.swing.JComponent;
  13. import javax.swing.JFrame;
  14. import javax.swing.JLabel;
  15. import javax.swing.JPanel;
  16. import javax.swing.JSlider;
  17. import javax.swing.event.ChangeEvent;
  18. import javax.swing.event.ChangeListener;
  19.  
  20. public class JBrainTetris extends JTetris {
  21.    
  22.     public DefaultBrain db;
  23.     protected JCheckBox brainMode;
  24.     private Brain.Move move;
  25.     private JPanel little;
  26.     private JSlider adversary;
  27.     private JLabel ok;
  28.     private Random rand;
  29.     private int pieces;
  30.     JBrainTetris(int pixels){
  31.         super(pixels);
  32.         db = new DefaultBrain();
  33.     }
  34.    
  35.     public static void main(String[] args){
  36.         JBrainTetris tetris = new JBrainTetris(16);
  37.         JFrame frame = JBrainTetris.createFrame(tetris);
  38.         frame.setVisible(true);    
  39.     }
  40.    
  41.  
  42.     @Override
  43.     public void tick(int verb){
  44.         if(brainMode.isSelected()){
  45.             if(pieces < count){
  46.                 board.undo();
  47.                 move = db.bestMove(board, currentPiece, board.getHeight(), null);
  48.                 pieces++;
  49.             }
  50.             aimPiece();
  51.         }
  52.         super.tick(verb);      
  53.     }
  54.    
  55.     //activates when brain starts working
  56.     //makes a piece go to the best place
  57.     private void aimPiece(){
  58.         if(! move.piece.equals(currentPiece))
  59.             super.tick(ROTATE);            
  60.         if(currentX > move.x)
  61.             super.tick(LEFT);
  62.         else if(currentX < move.x)
  63.             super.tick(RIGHT);     
  64.     }
  65.  
  66.    
  67.     @Override
  68.     public Piece pickNextPiece(){
  69.         int r = rand.nextInt(100);
  70.         if(r >= adversary.getValue()){
  71.             ok.setText("ok");
  72.             return super.pickNextPiece();
  73.         }
  74.         else{
  75.             ok.setText("*ok*");
  76.             double score = -1;
  77.             double curr;
  78.             Piece p = null;
  79.             Piece[] arr = Piece.getPieces();
  80.             for(int i=0; i<arr.length; i++){
  81.                 curr = db.bestMove(board, arr[i], board.getHeight(), null).score;
  82.                 if(curr > score){
  83.                     score = curr;
  84.                     p = arr[i];
  85.                 }
  86.             }
  87.             return p;
  88.         }          
  89.     }
  90.    
  91.     @Override
  92.     public void startGame(){
  93.         pieces = 0;
  94.         rand = new Random() ;
  95.         super.startGame();
  96.     }
  97.    
  98.    
  99.     @Override
  100.     public JComponent createControlPanel(){
  101.         JPanel panel = (JPanel)super.createControlPanel(); 
  102.         panel.add(new JLabel("Brain:"));
  103.         brainMode = new JCheckBox("Brain active");
  104.         panel.add(brainMode);
  105.        
  106.         little = new JPanel();
  107.         little.add(new JLabel("Adversary:"));
  108.         adversary = new JSlider(0, 100, 0);
  109.         adversary.setPreferredSize(new Dimension(100,15));
  110.         little.add(adversary);
  111.         ok = new JLabel("ok");
  112.         little.add(ok);
  113.         panel.add(little);     
  114.        
  115.         return panel;
  116.     }
  117.  
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement