EndFrameless / Java-render

0 stars 0 forks source link

1 #1

Open EndFrameless opened 1 month ago

EndFrameless commented 1 month ago

`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;

private int[] xPoints = new int[3];
private int[] yPoints = new int[3];
private int pointCount = 0;

public TriangleDrawing() {
    super("Рисование треугольника");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(600, 400);
    setLocationRelativeTo(null); // По центру экрана

    drawingPanel = new JPanel() {
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);

            if (drawFilledTriangle && pointCount == 3) {
                g.setColor(Color.WHITE);
                g.fillPolygon(xPoints, yPoints, 3);
            }

            if (drawOutlineTriangle && pointCount == 3) {
                g.setColor(Color.WHITE);
                g.drawPolygon(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_SPACE) {
        drawFilledTriangle = true;
        drawOutlineTriangle = false;
    } else if (e.getKeyCode() == KeyEvent.VK_ASTERISK) {
        drawOutlineTriangle = true;
        drawFilledTriangle = false;
    }
    drawingPanel.repaint();
}

@Override
public void keyReleased(KeyEvent e) {}

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> new TriangleDrawing());
}

}

`

EndFrameless commented 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());
}
EndFrameless commented 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); // Цвет символов

                // Рисуем треугольник символами
                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());
}
EndFrameless commented 1 month ago

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("Неверный ответ для рендера");
    }
}

}

EndFrameless commented 1 month ago

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

EndFrameless commented 1 month ago

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

EndFrameless commented 1 month ago

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

EndFrameless commented 1 month ago

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

EndFrameless commented 1 month ago

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. Считывание строки: String choice = scanner.nextLine(); теперь считывает строку, введенную пользователем, вместо целого числа.
  2. Сравнение строк: if (choice.equals("1")) сравнивает введенную строку с "1" с помощью метода equals(). Это более правильный подход, так как сравнивает содержимое строк, а не ссылки на объекты.

Теперь код будет работать корректно, независимо от того, какой символ введет пользователь, кроме "1".

3,433/12,000