Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.88 KB | None | 0 0
  1. package tetris;
  2.  
  3. import java.awt.Dimension;
  4. import java.util.Random;
  5.  
  6. import javax.swing.BoxLayout;
  7. import javax.swing.JCheckBox;
  8. import javax.swing.JComponent;
  9. import javax.swing.JFrame;
  10. import javax.swing.JLabel;
  11. import javax.swing.JPanel;
  12. import javax.swing.JSlider;
  13. import javax.swing.UIManager;
  14.  
  15.  
  16.  
  17. public class JBrainTetris  extends JTetris{
  18.     private JCheckBox brainMode;
  19.     private Brain brain;
  20.     private JSlider adversary;
  21.     private JPanel little;
  22.     private JLabel status;
  23.     private Brain.Move newPiece;
  24.     private int pieceCount;
  25.    
  26.    
  27.     JBrainTetris(int pixels){
  28.         super(pixels);
  29.         brain = new DefaultBrain();    
  30.     }
  31.    
  32.     @Override()
  33.     public void startGame(){       
  34.         pieceCount = 0;
  35.         super.startGame(); 
  36.     }
  37.    
  38.    
  39.    
  40.     private void checkMove(){
  41.         if(newPiece.x < super.currentX)
  42.             super.tick(LEFT);
  43.         else{
  44.             if(newPiece.x > super.currentX)
  45.                 super.tick(RIGHT);
  46.         }      
  47.     }
  48.    
  49.     private void checkRotate(){
  50.         if(!(newPiece.piece).equals(currentPiece)) super.tick(ROTATE);
  51.     }
  52.    
  53.     @Override()
  54.     public void tick(int verb){
  55.         if(brainMode.isSelected()){
  56.             if(pieceCount < super.count){          
  57.                 pieceCount++;
  58.                 super.board.undo();
  59.                 newPiece = brain.bestMove(super.board, currentPiece, super.board.getHeight(), newPiece);
  60.             }          
  61.             checkMove();
  62.             checkRotate();         
  63.         }
  64.         super.tick(DOWN);
  65.     }
  66.    
  67.    
  68.    
  69.     @Override()
  70.     public JComponent createControlPanel() {
  71.         JPanel panel = (JPanel)super.createControlPanel();     
  72.         panel.add(new JLabel("Brain:"));
  73.         brainMode = new JCheckBox("Brain active");
  74.         panel.add(brainMode);
  75.         addAdversary(panel);
  76.         status = new JLabel("ok");
  77.         return panel;
  78.    
  79.     }
  80.    
  81.    
  82.     private void addAdversary(JPanel p){
  83.         little = new JPanel();
  84.         little.add(new JLabel("Adversary:"));      
  85.         adversary = new JSlider(0, 100, 0);
  86.         adversary.setPreferredSize(new Dimension(100,15));
  87.         little.add(adversary);
  88.         p.add(little);     
  89.     }
  90.    
  91.    
  92.     private int random(){
  93.         Random r = new Random();
  94.         int ran = r.nextInt(100);
  95.         while(ran == 0)
  96.             ran = r.nextInt(100);
  97.         return ran;    
  98.     }
  99.    
  100.     @Override()
  101.     public Piece pickNextPiece() {
  102.         int rand = random();       
  103.         if(rand >= adversary.getValue()){
  104.             status.setText("ok");
  105.             return super.pickNextPiece();          
  106.         }
  107.         else
  108.             return worstPiece();                   
  109.     }
  110.    
  111.    
  112.     private Piece worstPiece(){
  113.         Piece doom = null;
  114.         Piece[] pie = Piece.getPieces();
  115.         double rate = 0;
  116.         Brain.Move m = null;
  117.         for(int i = 0; i < pie.length; i++){
  118.             m = brain.bestMove(super.board, pie[i], super.board.getHeight(), m);
  119.             if(m.score > rate) {
  120.                 doom = m.piece;
  121.                 rate = m.score;
  122.             }          
  123.         }
  124.         return doom;   
  125.     }
  126.    
  127.    
  128.    
  129.    
  130.     public static void main(String[] args) {
  131.         try {
  132.             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  133.         } catch (Exception ignored) { }
  134.        
  135.         JBrainTetris tetris = new JBrainTetris(16);
  136.         JFrame frame = JTetris.createFrame(tetris);
  137.         frame.setVisible(true);
  138.     }
  139.  
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement