Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tetris;
- import java.awt.Dimension;
- 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.SwingUtilities;
- import javax.swing.UIManager;
- public class JBrainTetris extends JTetris {
- protected static DefaultBrain brain;
- protected JCheckBox brainMode;
- protected JSlider slider;
- protected JLabel ok;
- protected Brain.Move move;
- protected static int numPiece;
- JBrainTetris(int pixels) {
- super(pixels);
- }
- public static void main(String[] args) {
- try {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- } catch (Exception ignored) { }
- JBrainTetris tetris = new JBrainTetris(16);
- JFrame frame = JBrainTetris.createFrame(tetris);
- frame.setVisible(true);
- numPiece = -1;
- brain = new DefaultBrain();
- }
- @Override
- public JComponent createControlPanel() {
- JPanel panel = (JPanel)super.createControlPanel();
- brainMode = new JCheckBox("Brain active");
- panel.add(brainMode);
- panel.add(new JLabel("Adversary:"));
- slider = new JSlider(0, 100, 0);
- slider.setPreferredSize(new Dimension(100, 15));
- panel.add(slider);
- ok = new JLabel(" ok ");
- panel.add(ok);
- return panel;
- }
- @Override
- public void tick(int verb) {
- if(numPiece!=super.count || move==null) {
- numPiece = super.count;
- board.undo();
- move = brain.bestMove(board, currentPiece, currentY, null);
- }
- if(verb==DOWN) {
- if(brainMode.isSelected()) {
- if(move != null) {
- if(!move.piece.equals(currentPiece)) super.tick(ROTATE);
- if(move.x == currentX && move.y<currentY) {
- if(move.piece.equals(currentPiece)) {
- super.tick(DROP);
- return;
- }
- }else {
- if(move.x>currentX) super.tick(RIGHT);
- if(move.x<currentX) super.tick(LEFT);
- }
- }
- }
- super.tick(DOWN);
- }else {
- super.tick(verb);
- }
- }
- @Override
- public Piece pickNextPiece() {
- int rand = random.nextInt(100);
- if(slider.getValue()>rand) {
- ok.setText("*ok*");
- return getWorstPiece();
- }else {
- ok.setText(" ok ");
- return super.pickNextPiece();
- }
- }
- private Piece getWorstPiece() {
- Brain.Move result = brain.bestMove(board, pieces[0], board.getHeight(), null);
- for(int i=1; i<pieces.length; i++) {
- Brain.Move temp = brain.bestMove(board, pieces[i], board.getHeight(), null);
- if(temp.score > result.score) result = temp;
- }
- return result.piece;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement