2015-09-08 4 views
2

Вот что я пытаюсь повторить:N количество коробок в коробках втягиваются

В настоящее время мой код выглядит следующим образом:

public void boxes() { 
    setLocation(20,20); 
    for(int j =0; j < 5; j = j+1) { 
    setLocation(20+50*j,20+50*j); 
     for (int i= 0; i<4; i= i+1) { 
      move(600-(50*j)); 
      turn(90); 
    } 
    } 
} 

и результат:

ПОЖАЛУЙСТА не напишите мне любой код, я бы предпочел просто общее объяснение того, как я могу сделать так, чтобы вычерченные поля не заканчивались в одной и той же точке. Я пытался понять это в течение последних двух часов без везения, и то, что у меня сейчас, пока что лучшее, что я получил. Спасибо!

Это основано на http://www.greenfoot.org/scenarios/3535

+0

какие коробки? это качание, связанное с чем-то? –

+0

квадраты в первом изображении имеют те же координаты, что и центр квадрата. и вам также нужно параметризовать ширину и высоту квадратов, я думаю. – Juvanis

+0

@FastSnail Я новичок в Java, и это всего лишь проект с зеленой ногой, у которого есть черепаха, которая рисует прямые линии. Я пытаюсь сделать его рисовать ящики внутри ящиков –

ответ

2

проблема является значением, которое вы передаете функции move(), она должна быть:

move(600-(50*j*2)); 

Причина заключается в том, что длина каждого ребра квадрата должны быть короче в два раза смещением от предыдущего квадрата, поскольку он начинает offset единиц глубже и заканчивается offset единиц раньше (offset=50 в этом случае).

+0

О, вау, большое вам спасибо за объяснение! Не думал, что это было так просто исправить. –

0

j выбирает следующий квадрат. Спросите себя:

  • приятно знать: конечная точка рисунка совпадает с указываем
  • вы начинаете (50, 50) больше внутри. Как вы пришли туда из предшествующего конечной точки
  • новая длина рисовать сколько меньше