Open EndFrameless opened 1 month ago
import javax.swing.; import java.awt.; import java.awt.event.*;
public class FilledTriangle extends JFrame implements KeyListener { private JPanel drawingPanel; private boolean drawTriangle = false;
private int[] xPoints = new int[3];
private int[] yPoints = new int[3];
private int pointCount = 0;
public FilledTriangle() {
super("Заполненный треугольник");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
setLocationRelativeTo(null); // По центру экрана
drawingPanel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (drawTriangle && pointCount == 3) {
g.setColor(Color.WHITE); // Цвет заполнения
g.fillPolygon(xPoints, yPoints, 3); // Рисуем заполненный треугольник
}
}
};
drawingPanel.setBackground(Color.BLACK);
drawingPanel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (pointCount < 3) {
xPoints[pointCount] = e.getX();
yPoints[pointCount] = e.getY();
pointCount++;
drawingPanel.repaint();
}
}
});
add(drawingPanel);
addKeyListener(this);
setVisible(true);
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_1) {
drawTriangle = true;
drawingPanel.repaint();
} else {
JOptionPane.showMessageDialog(this, "Неверное значение рендера");
}
}
@Override
public void keyReleased(KeyEvent e) {}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new FilledTriangle());
}
import javax.swing.; import java.awt.; import java.awt.event.*;
public class FilledTriangle extends JFrame implements KeyListener { private JPanel drawingPanel; private boolean drawTriangle = false;
private int[] xPoints = new int[3];
private int[] yPoints = new int[3];
private int pointCount = 0;
public FilledTriangle() {
super("Заполненный треугольник");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
setLocationRelativeTo(null); // По центру экрана
drawingPanel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (drawTriangle && pointCount == 3) {
g.setColor(Color.WHITE); // Цвет символов
// Рисуем треугольник символами
drawTriangleWithChars(g, xPoints, yPoints);
}
}
};
drawingPanel.setBackground(Color.BLACK);
drawingPanel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (pointCount < 3) {
xPoints[pointCount] = e.getX();
yPoints[pointCount] = e.getY();
pointCount++;
drawingPanel.repaint();
}
}
});
add(drawingPanel);
addKeyListener(this);
setVisible(true);
}
// Метод для рисования треугольника символами
private void drawTriangleWithChars(Graphics g, int[] xPoints, int[] yPoints) {
// Находим минимальную и максимальную координату по X и Y
int minX = Math.min(xPoints[0], Math.min(xPoints[1], xPoints[2]));
int maxX = Math.max(xPoints[0], Math.max(xPoints[1], xPoints[2]));
int minY = Math.min(yPoints[0], Math.min(yPoints[1], yPoints[2]));
int maxY = Math.max(yPoints[0], Math.max(yPoints[1], yPoints[2]));
// Итерируем по всем точкам внутри треугольника
for (int y = minY; y <= maxY; y++) {
for (int x = minX; x <= maxX; x++) {
// Проверяем, находится ли точка внутри треугольника
if (isPointInsideTriangle(x, y, xPoints, yPoints)) {
g.drawString("*", x, y); // Рисуем символ "*"
}
}
}
}
// Проверяем, находится ли точка внутри треугольника
private boolean isPointInsideTriangle(int x, int y, int[] xPoints, int[] yPoints) {
// Алгоритм проверки точки на принадлежность треугольнику
int a = ((yPoints[1] - yPoints[2]) * (x - xPoints[2]) + (xPoints[2] - xPoints[1]) * (y - yPoints[2])) /
((yPoints[1] - yPoints[2]) * (xPoints[0] - xPoints[2]) + (xPoints[2] - xPoints[1]) * (yPoints[0] - yPoints[2]));
int b = ((yPoints[2] - yPoints[0]) * (x - xPoints[0]) + (xPoints[0] - xPoints[2]) * (y - yPoints[0])) /
((yPoints[2] - yPoints[0]) * (xPoints[1] - xPoints[0]) + (xPoints[0] - xPoints[2]) * (yPoints[1] - yPoints[0]));
int c = ((yPoints[0] - yPoints[1]) * (x - xPoints[1]) + (xPoints[1] - xPoints[0]) * (y - yPoints[1])) /
((yPoints[0] - yPoints[1]) * (xPoints[2] - xPoints[1]) + (xPoints[1] - xPoints[0]) * (yPoints[2] - yPoints[1]));
return a >= 0 && b >= 0 && c >= 0 && a + b + c <= 1;
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_1) {
drawTriangle = true;
drawingPanel.repaint();
} else {
JOptionPane.showMessageDialog(this, "Неверное значение рендера");
}
}
@Override
public void keyReleased(KeyEvent e) {}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new FilledTriangle());
}
import java.util.Scanner;
public class TriangleRenderer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите 1 для рендера треугольника: ");
int choice = scanner.nextInt();
if (choice == 1) {
int height = 5; // Высота треугольника
for (int i = 0; i < height; i++) {
// Вывод пробелов перед звездочками
for (int j = 0; j < height - i - 1; j++) {
System.out.print(" ");
}
// Вывод звездочек
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
// Переход на новую строку
System.out.println();
}
} else {
System.out.println("Неверный ответ для рендера");
}
}
}
import java.util.Scanner;
public class TriangleRenderer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите 1 для рендера треугольника: ");
int choice = scanner.nextInt();
if (choice == 1) {
int height = 5; // Высота треугольника
for (int i = 0; i < height; i++) {
// Вывод пробелов перед звездочками
for (int j = 0; j < height - i - 1; j++) {
System.out.print(" ");
}
// Вывод звездочек
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
// Переход на новую строку
System.out.println();
}
} else {
System.out.println("Неверный ответ для рендера");
}
}
}
Изменения:
Результат:
*
Ⓑ Ⓑ ⒷⒷ ⒷⒷ
Теперь треугольник нарисован с прямым левым краем и наклоном вниз вправо.
1,819/12,000
import java.util.Scanner;
public class TriangleRenderer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите 1 для рендера треугольника: ");
int choice = scanner.nextInt();
if (choice == 1) {
int height = 5; // Высота треугольника
for (int i = 0; i < height; i++) {
// Вывод пробелов после звездочек
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
// Вывод звездочек
for (int j = height; j > i; j--) {
System.out.print("*");
}
// Переход на новую строку
System.out.println();
}
} else {
System.out.println("Неверный ответ для рендера");
}
}
}
Изменения:
Результат:
ⒷⒷ ⒷⒷ Ⓑ Ⓑ *
Теперь треугольник нарисован с прямым правым краем и наклоном влево.
2,267/12,000
import java.util.Scanner;
public class TriangleRenderer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите 1 для рендера треугольника: ");
int choice = scanner.nextInt();
if (choice == 1) {
int height = 5; // Высота треугольника
for (int i = height - 1; i >= 0; i--) { // Итерация в обратном порядке
// Вывод пробелов после звездочек
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
// Вывод звездочек
for (int j = height; j > i; j--) {
System.out.print("*");
}
// Переход на новую строку
System.out.println();
}
} else {
System.out.println("Неверный ответ для рендера");
}
}
}
Изменения:
Результат:
*
Ⓑ Ⓑ ⒷⒷ ⒷⒷ
Теперь треугольник перевернут вверх ногами, с прямым правым краем и наклоном влево.
2,642/12,000
import java.util.Scanner;
public class RectangleRenderer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите 1 для рендера прямоугольника: ");
int choice = scanner.nextInt();
if (choice == 1) {
int height = 5; // Высота прямоугольника
int width = 10; // Ширина прямоугольника
for (int i = 0; i < height; i++) {
// Вывод звездочек для каждой строки
for (int j = 0; j < width; j++) {
System.out.print("*");
}
// Переход на новую строку
System.out.println();
}
} else {
System.out.println("Неверный ответ для рендера");
}
}
}
Изменения:
Результат:
ⒷⒷⒷⒷⒷ ⒷⒷⒷⒷⒷ ⒷⒷⒷⒷⒷ ⒷⒷⒷⒷⒷ ⒷⒷⒷⒷⒷ
Теперь код рисует прямоугольник высотой 5 строк и шириной 10 звездочек. Вы можете изменять значения height и width для создания прямоугольников разных размеров.
3,043/12,000
import java.util.Scanner;
public class RectangleRenderer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите 1 для рендера прямоугольника: ");
String choice = scanner.nextLine(); // Считываем строку
if (choice.equals("1")) { // Сравниваем строку с "1"
int height = 5; // Высота прямоугольника
int width = 10; // Ширина прямоугольника
for (int i = 0; i < height; i++) {
// Вывод звездочек для каждой строки
for (int j = 0; j < width; j++) {
System.out.print("*");
}
// Переход на новую строку
System.out.println();
}
} else {
System.out.println("Неверный ответ для рендера");
}
}
}
Изменения:
Теперь код будет работать корректно, независимо от того, какой символ введет пользователь, кроме "1".
3,433/12,000
`import javax.swing.; import java.awt.; import java.awt.event.*;
public class TriangleDrawing extends JFrame implements KeyListener { private JPanel drawingPanel; private boolean drawFilledTriangle = false; private boolean drawOutlineTriangle = false;
}
`