Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tetris;
- import java.awt.Dimension;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.Random;
- import javax.swing.Box;
- import javax.swing.BoxLayout;
- import javax.swing.JButton;
- import javax.swing.JCheckBox;
- import javax.swing.JComponent;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.JSlider;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.ChangeListener;
- public class JBrainTetris extends JTetris {
- public DefaultBrain db;
- protected JCheckBox brainMode;
- private Brain.Move move;
- private JPanel little;
- private JSlider adversary;
- private JLabel ok;
- private Random rand;
- private int pieces;
- JBrainTetris(int pixels){
- super(pixels);
- db = new DefaultBrain();
- }
- public static void main(String[] args){
- JBrainTetris tetris = new JBrainTetris(16);
- JFrame frame = JBrainTetris.createFrame(tetris);
- frame.setVisible(true);
- }
- @Override
- public void tick(int verb){
- if(brainMode.isSelected()){
- if(pieces < count){
- board.undo();
- move = db.bestMove(board, currentPiece, board.getHeight(), null);
- pieces++;
- }
- aimPiece();
- }
- super.tick(verb);
- }
- //activates when brain starts working
- //makes a piece go to the best place
- private void aimPiece(){
- if(! move.piece.equals(currentPiece))
- super.tick(ROTATE);
- if(currentX > move.x)
- super.tick(LEFT);
- else if(currentX < move.x)
- super.tick(RIGHT);
- }
- @Override
- public Piece pickNextPiece(){
- int r = rand.nextInt(100);
- if(r >= adversary.getValue()){
- ok.setText("ok");
- return super.pickNextPiece();
- }
- else{
- ok.setText("*ok*");
- double score = -1;
- double curr;
- Piece p = null;
- Piece[] arr = Piece.getPieces();
- for(int i=0; i<arr.length; i++){
- curr = db.bestMove(board, arr[i], board.getHeight(), null).score;
- if(curr > score){
- score = curr;
- p = arr[i];
- }
- }
- return p;
- }
- }
- @Override
- public void startGame(){
- pieces = 0;
- rand = new Random() ;
- super.startGame();
- }
- @Override
- public JComponent createControlPanel(){
- JPanel panel = (JPanel)super.createControlPanel();
- panel.add(new JLabel("Brain:"));
- brainMode = new JCheckBox("Brain active");
- panel.add(brainMode);
- little = new JPanel();
- little.add(new JLabel("Adversary:"));
- adversary = new JSlider(0, 100, 0);
- adversary.setPreferredSize(new Dimension(100,15));
- little.add(adversary);
- ok = new JLabel("ok");
- little.add(ok);
- panel.add(little);
- return panel;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement