Advertisement
chloelwt

Untitled

Nov 20th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.90 KB | None | 0 0
  1. public class Turtle {
  2.   private Page page;
  3.   private Pen pen;
  4.   private int x = 0, y = 0;
  5.   public boolean penDown = true;
  6.  
  7.   public Turtle(Page page, Pen pen) {
  8.     this.page = page;
  9.     this.pen = pen;
  10.   }
  11.  
  12.   public void setPen(Pen pen) {
  13.     this.pen = pen;
  14.   }
  15.  
  16.   public void penUp() {
  17.     this.penDown = false;
  18.   }
  19.  
  20.   public void penDown() {
  21.     this.penDown = true;
  22.   }
  23.  
  24.   public boolean isPenDown() {
  25.     if (this.penDown == true) {
  26.       return true;
  27.     }
  28.     return false;
  29.   }
  30.  
  31.   public void move(Direction direction, int distance) {
  32.     assert distance > 0;
  33.     switch (direction) {
  34.       case NORTH:
  35.         for (int i = 0; i < distance; i++) {
  36.           if (this.x > 0) {
  37.             this.x--;
  38.           } else {
  39.             this.x = 0;
  40.           }
  41.           if (this.isPenDown()) {
  42.             this.makeMark();
  43.           }
  44.         }
  45.  
  46.       case EAST:
  47.         for (int i = 0; i < distance; i++) {
  48.           if (this.y > 0) {
  49.             this.y--;
  50.           } else {
  51.             this.y = 0;
  52.           }
  53.           if (this.isPenDown()) {
  54.             this.makeMark();
  55.           }
  56.         }
  57.  
  58.       case SOUTH:
  59.         for (int i = 0; i < distance; i++) {
  60.           if (this.x < (page.size() - 1)) {
  61.             this.x++;
  62.           } else {
  63.             this.x = 0;
  64.           }
  65.           if (this.isPenDown()) {
  66.             this.makeMark();
  67.           }
  68.         }
  69.  
  70.       case WEST:
  71.         for (int i = 0; i < distance; i++) {
  72.           if (this.y < (page.size() - 1)) {
  73.             this.y++;
  74.           } else {
  75.             this.y = 0;
  76.           }
  77.           if (this.isPenDown()) {
  78.             this.makeMark();
  79.           }
  80.         }
  81.     }
  82.   }
  83.  
  84.   private void makeMark() {
  85.     page.draw(this.x, this.y, pen);
  86.   }
  87.  
  88.   private void move(int deltaI, int deltaJ, int distance) {
  89.     this.y += distance * deltaI;
  90.     this.x += distance * deltaJ;
  91.   }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement