Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package robot.ascii;
- import control.Control;
- import control.RobotControl;
- import robot.Robot;
- import robot.ascii.impl.Arm;
- import robot.ascii.impl.Bar;
- import robot.ascii.impl.Block;
- import robot.ascii.impl.Drawable;
- import robot.impl.RobotImpl;
- import robot.impl.RobotInitException;
- import java.io.IOException;
- import javax.swing.JFrame;
- import com.googlecode.lanterna.terminal.DefaultTerminalFactory;
- import com.googlecode.lanterna.terminal.Terminal;
- import com.googlecode.lanterna.terminal.swing.SwingTerminal;
- import com.googlecode.lanterna.terminal.swing.SwingTerminalFrame;
- // designed by Caspar, additional code by Ross
- public class ASCIIBot extends AbstractASCIIBot implements Robot {
- private Terminal terminal;
- private Bar bars[];
- private Block blocks[];
- private int columnHeights[];
- private Arm arm;
- private Block heldBlock;
- private int[] barHeights;
- private int[] blockHeights;
- public static void main(String[] args) throws IOException {
- new RobotControl().control(new ASCIIBot(), null, null);
- }
- // MUST CALL DEFAULT SUPERCLASS CONSTRUCTOR!
- public ASCIIBot() throws IOException {
- super();
- // create the terminal 20 rows, 15 columns
- //Terminal terminalFrame = new DefaultTerminalFactory().createTerminal();
- //Terminal = terminalFrame.createSwingTerminal(15, Control.MAX_HEIGHT);
- //terminalFrame = TerminalFacade.createSwingTerminal(22, 14);
- try {
- Terminal terminalFrame = new DefaultTerminalFactory().createTerminal(22, 14);
- } catch (IOException e) {
- e.printStackTrace();
- }
- // required by Lanterna framework to initialise
- terminalFrame.enterPrivateMode();
- terminalFrame.setCursorVisible(false);
- terminalFrame.clearScreen();
- }
- @Override
- public void init(int[] barHeights, int[] blockHeights, int height, int width, int depth) {
- this.bars = new Bar[barHeights.length];
- this.blocks = new Block[blockHeights.length];
- this.columnHeights = new int [11];
- arm = new Arm (13, 1, 0);
- heldBlock = null;
- // delay 100 milliseconds for next "frame"
- delayAnimation();
- //drawing bars
- for(int i = 0; i < barHeights.length; i++) {
- bars[i] = new Bar(barHeights[i], i+3);
- columnHeights[i+3] = barHeights[i];
- }
- //drawing blocks
- int blockThreePos = 3;
- for (int i = 0; i < blockHeights.length; i++) {
- if (blockHeights[i] == 1) {
- blocks[i] = new Block(blockHeights[i], 1, columnHeights[1]);
- columnHeights[1] += blockHeights[i];
- }
- if (blockHeights[i] == 2) {
- blocks[i] = new Block(blockHeights[i], 2, columnHeights[2]);
- columnHeights[2] += blockHeights[i];
- }
- if (blockHeights[i] == 3) {
- blocks[i] = new Block(blockHeights[i], blockThreePos, columnHeights[blockThreePos]);
- columnHeights[blockThreePos] += blockHeights[i];
- blockThreePos++;
- }
- }
- drawAll();
- }
- //this is the draw all method
- private void drawAll () {
- terminalFrame.clearScreen();
- for (int i = 0; i < bars.length; i++) {
- bars[i].draw(terminalFrame);
- }
- for (int i = 0; i < blocks.length; i++) {
- blocks[i].draw(terminalFrame);
- }
- arm.draw(terminalFrame);
- delayAnimation();
- }
- @Override
- public void pick()
- {
- for (int i = 0; i < blocks.length; i++) {
- if (blocks[i].getTop() == arm.getY() && blocks[i].getX() == arm.getX()) {
- heldBlock = blocks[i];
- }
- }
- }
- @Override
- public void drop()
- {
- heldBlock = null;
- }
- @Override
- public void up()
- {
- arm.up();
- if (heldBlock != null) {
- heldBlock.up();
- }
- drawAll();
- }
- @Override
- public void down()
- {
- arm.down();
- if (heldBlock != null) {
- heldBlock.down();
- }
- drawAll();
- }
- @Override
- public void contract()
- {
- arm.contract();
- if (heldBlock != null) {
- heldBlock.left();
- }
- drawAll();
- }
- @Override
- public void extend()
- {
- arm.extend();
- if (heldBlock != null) {
- heldBlock.right();
- }
- drawAll();
- }
- @Override
- public void lower()
- {
- arm.lower();
- if (heldBlock != null) {
- heldBlock.down();
- }
- drawAll();
- }
- @Override
- public void raise()
- {
- arm.raise();
- if (heldBlock != null) {
- heldBlock.up();
- }
- drawAll();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement