Пишу программу, которая принимает координаты от пользователя и рисует на экране какие-то фигуры звездочками(*)
например, прямоугольник, то есть прямоугольник = 100,150,50,50 как x, y, ширина, высота. как мне это сделать??
Пишу программу, которая принимает координаты от пользователя и рисует на экране какие-то фигуры звездочками(*)
например, прямоугольник, то есть прямоугольник = 100,150,50,50 как x, y, ширина, высота. как мне это сделать??
Я думаю, что это руководство очень полезно для вас: http://download.oracle.com/javase/tutorial/2d/geometry/primitives.html
Что такое «рисунок со звездами»? Если это текстовый режим с моноширинным шрифтом, вам нужно будет печатать его горизонтальными линиями звезд, вычисляя правильную длину. Для прямоугольников это легко, для треугольников немного сложнее, пятиугольник — это просто комбинация прямоугольника и нескольких треугольников. См. алгоритм Брезенхэма для вдохновения.
Также обратите внимание, что разрешение в текстовом режиме довольно низкое; стандартное окно терминала имеет ширину всего 80 символов, и вы вряд ли сможете сделать его намного шире, чем, скажем, 200-300 символов, поэтому важно правильное округление.
Если это только прямоугольники, то в вашем методе рисования должно работать следующее...
int xIncrement = (int)g.getFont().getStringBounds("*", null).getWidth();
int yIncrement = (int)g.getFont().getStringBounds("*", null).getHeight();
for(int i = y; i < y + height; i += xIncrement)
for(int j = x; j < x + width; j += yIncrement)
g.drawString("*", j, i);
Для треугольников и других фигур это немного сложнее, но вы можете вычислить градиенты линий, разделяющих точки, и, следовательно, получить начальный x для каждой линии.
Как правило, старайтесь избегать «рисования звезд»...
Если вы не имеете в виду графический интерфейс, координата Y может быть количеством строк, которые вы должны «пропустить», а координата x напоминает количество пробелов, которые вы вводите в строке.
Таким образом, в основном, x = 2 и y = 3 означает, что вам нужно будет спуститься на 3 строки и переместиться на 2 пробела вправо.
Ниже приведено из javadoc
x - новая координата x для верхнего левого угла этого прямоугольника y - новая координата y для верхнего левого угла этого прямоугольника