Массив: Реализовать анимацию для заданного объекта... - Java
Формулировка задачи:
Доброго времени суток! Прошу немного мне помочь, сам с проблемой справиться не могу.
Учусь в универе и дано не совсем обычное задание. Есть char массив, в нем отрисована картинка. Как это выглядит видно на первом скрине. Задача: реализовать анимацию для отдельного объекта. Для шляпы, к примеру. С поставленной задачей я справился, но беда в том, что в Java нет очистки экрана, как я понял. И вместо нормальной анимации я получаю просто 30 выведенных на экран массивов, с разными положениями шляпы.
Вопрос: знающие люди, подскажите, пожалуйста, как и куда можно выгружать этот массив, чтобы он корректно отрисовывался и была возможность очистки экрана? Пробовал JTeaxtArea, но что-то пошло не так. С GUI ранее в Java не работал, так что не пинайте сильно.
Решение задачи: «Массив: Реализовать анимацию для заданного объекта...»
textual
Листинг программы
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- public class ShapeFrame extends JFrame {
- private JButton jButton = new JButton("Text");
- private int count = 0;
- Timer timer = new Timer(50, new ActionListener() {
- private boolean direction = false;
- @Override
- public void actionPerformed(ActionEvent e) {
- if (!direction) {
- if (count++ > 20) {
- direction = true;
- }
- } else {
- if (count-- < 1) {
- direction = false;
- }
- }
- fillTextArea();
- repaint();
- }
- });
- private JTextArea jTextArea = new JTextArea();
- private List<String> list = new ArrayList<>();
- public void fillTextArea() {
- jTextArea.setText("");
- String offset = "";
- for (int i = 0; i < count ; i++) {
- offset += " ";
- }
- for (String s : list) {
- jTextArea.append(offset + s + "\n");
- }
- }
- public ShapeFrame() throws HeadlessException {
- jButton.addActionListener(new ActionListener() {
- private boolean flag = false;
- String c = "*";
- @Override
- public void actionPerformed(ActionEvent e) {
- String cOld;
- if (c.equals("*")) {
- c = String.valueOf('+');
- cOld = "\\*";
- } else {
- c = String.valueOf('*');
- cOld = "\\+";
- }
- // System.out.println(list);
- Iterator<String> it = list.iterator();
- for (int i = 0; i < list.size(); i++) {
- list.set(i, list.get(i).replaceAll(cOld, c));
- }
- }
- });
- add(jButton, BorderLayout.NORTH);
- count = 0;
- String offset = String.format("%-20s", " ");
- list.add(offset);
- list.add(offset);
- list.add(offset + " * ");
- list.add(offset + " *** ");
- list.add(offset + " ******* ");
- list.add(offset + "*********");
- list.add(offset + " ******* ");
- list.add(offset + " ***** ");
- list.add(offset + "** * **");
- list.add(offset + " ***** ");
- jTextArea.setFont(new Font("Courier New", Font.PLAIN, 12));
- for (String s : list) {
- jTextArea.append(s + "\n");
- }
- add(jTextArea);
- timer.start();
- }
- public static void main(String[] args) {
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
- ShapeFrame shapeFrame = new ShapeFrame();
- shapeFrame.setSize(500, 400);
- shapeFrame.setVisible(true);
- }
- });
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д