Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Turtle {
- private Page page;
- private Pen pen;
- private int x = 0, y = 0;
- public boolean penDown = true;
- public Turtle(Page page, Pen pen) {
- this.page = page;
- this.pen = pen;
- }
- public void setPen(Pen pen) {
- this.pen = pen;
- }
- public void penUp() {
- this.penDown = false;
- }
- public void penDown() {
- this.penDown = true;
- }
- public boolean isPenDown() {
- if (this.penDown == true) {
- return true;
- }
- return false;
- }
- public void move(Direction direction, int distance) {
- assert distance > 0;
- switch (direction) {
- case NORTH:
- for (int i = 0; i < distance; i++) {
- if (this.x > 0) {
- this.x--;
- } else {
- this.x = 0;
- }
- if (this.isPenDown()) {
- this.makeMark();
- }
- }
- case EAST:
- for (int i = 0; i < distance; i++) {
- if (this.y > 0) {
- this.y--;
- } else {
- this.y = 0;
- }
- if (this.isPenDown()) {
- this.makeMark();
- }
- }
- case SOUTH:
- for (int i = 0; i < distance; i++) {
- if (this.x < (page.size() - 1)) {
- this.x++;
- } else {
- this.x = 0;
- }
- if (this.isPenDown()) {
- this.makeMark();
- }
- }
- case WEST:
- for (int i = 0; i < distance; i++) {
- if (this.y < (page.size() - 1)) {
- this.y++;
- } else {
- this.y = 0;
- }
- if (this.isPenDown()) {
- this.makeMark();
- }
- }
- }
- }
- private void makeMark() {
- page.draw(this.x, this.y, pen);
- }
- private void move(int deltaI, int deltaJ, int distance) {
- this.y += distance * deltaI;
- this.x += distance * deltaJ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement