Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tetris;
- import java.awt.Dimension;
- import java.util.Random;
- import javax.swing.BoxLayout;
- 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.UIManager;
- public class JBrainTetris extends JTetris{
- private JCheckBox brainMode;
- private Brain brain;
- private JSlider adversary;
- private JPanel little;
- private JLabel status;
- private Brain.Move newPiece;
- private int pieceCount;
- JBrainTetris(int pixels){
- super(pixels);
- brain = new DefaultBrain();
- }
- @Override()
- public void startGame(){
- pieceCount = 0;
- super.startGame();
- }
- private void checkMove(){
- if(newPiece.x < super.currentX)
- super.tick(LEFT);
- else{
- if(newPiece.x > super.currentX)
- super.tick(RIGHT);
- }
- }
- private void checkRotate(){
- if(!(newPiece.piece).equals(currentPiece)) super.tick(ROTATE);
- }
- @Override()
- public void tick(int verb){
- if(brainMode.isSelected()){
- if(pieceCount < super.count){
- pieceCount++;
- super.board.undo();
- newPiece = brain.bestMove(super.board, currentPiece, super.board.getHeight(), newPiece);
- }
- checkMove();
- checkRotate();
- }
- super.tick(DOWN);
- }
- @Override()
- public JComponent createControlPanel() {
- JPanel panel = (JPanel)super.createControlPanel();
- panel.add(new JLabel("Brain:"));
- brainMode = new JCheckBox("Brain active");
- panel.add(brainMode);
- addAdversary(panel);
- status = new JLabel("ok");
- return panel;
- }
- private void addAdversary(JPanel p){
- little = new JPanel();
- little.add(new JLabel("Adversary:"));
- adversary = new JSlider(0, 100, 0);
- adversary.setPreferredSize(new Dimension(100,15));
- little.add(adversary);
- p.add(little);
- }
- private int random(){
- Random r = new Random();
- int ran = r.nextInt(100);
- while(ran == 0)
- ran = r.nextInt(100);
- return ran;
- }
- @Override()
- public Piece pickNextPiece() {
- int rand = random();
- if(rand >= adversary.getValue()){
- status.setText("ok");
- return super.pickNextPiece();
- }
- else
- return worstPiece();
- }
- private Piece worstPiece(){
- Piece doom = null;
- Piece[] pie = Piece.getPieces();
- double rate = 0;
- Brain.Move m = null;
- for(int i = 0; i < pie.length; i++){
- m = brain.bestMove(super.board, pie[i], super.board.getHeight(), m);
- if(m.score > rate) {
- doom = m.piece;
- rate = m.score;
- }
- }
- return doom;
- }
- public static void main(String[] args) {
- try {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- } catch (Exception ignored) { }
- JBrainTetris tetris = new JBrainTetris(16);
- JFrame frame = JTetris.createFrame(tetris);
- frame.setVisible(true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement