Массив: Реализовать анимацию для заданного объекта... - Java

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Прошу немного мне помочь, сам с проблемой справиться не могу. Учусь в универе и дано не совсем обычное задание. Есть char массив, в нем отрисована картинка. Как это выглядит видно на первом скрине. Задача: реализовать анимацию для отдельного объекта. Для шляпы, к примеру. С поставленной задачей я справился, но беда в том, что в Java нет очистки экрана, как я понял. И вместо нормальной анимации я получаю просто 30 выведенных на экран массивов, с разными положениями шляпы. Вопрос: знающие люди, подскажите, пожалуйста, как и куда можно выгружать этот массив, чтобы он корректно отрисовывался и была возможность очистки экрана? Пробовал JTeaxtArea, но что-то пошло не так. С GUI ранее в Java не работал, так что не пинайте сильно.

Решение задачи: «Массив: Реализовать анимацию для заданного объекта...»

textual
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.util.ArrayList;
  6. import java.util.Iterator;
  7. import java.util.List;
  8.  
  9.  
  10. public class ShapeFrame extends JFrame {
  11.     private JButton jButton = new JButton("Text");
  12.     private int count = 0;
  13.     Timer timer = new Timer(50, new ActionListener() {
  14.         private boolean direction = false;
  15.  
  16.         @Override
  17.         public void actionPerformed(ActionEvent e) {
  18.             if (!direction) {
  19.                 if (count++ > 20) {
  20.                     direction = true;
  21.                 }
  22.             } else {
  23.                 if (count-- < 1) {
  24.                     direction = false;
  25.                 }
  26.             }
  27.             fillTextArea();
  28.             repaint();
  29.         }
  30.  
  31.  
  32.  
  33.     });
  34.  
  35.     private JTextArea jTextArea = new JTextArea();
  36.     private List<String> list = new ArrayList<>();
  37.  
  38.     public void fillTextArea() {
  39.         jTextArea.setText("");
  40.         String offset = "";
  41.         for (int i = 0; i < count ; i++) {
  42.             offset += " ";
  43.         }
  44.  
  45.         for (String s : list) {
  46.             jTextArea.append(offset + s + "\n");
  47.         }
  48.  
  49.     }
  50.  
  51.  
  52.     public ShapeFrame() throws HeadlessException {
  53.         jButton.addActionListener(new ActionListener() {
  54.             private boolean flag = false;
  55.             String c = "*";
  56.  
  57.             @Override
  58.             public void actionPerformed(ActionEvent e) {
  59.                 String cOld;
  60.  
  61.                 if (c.equals("*")) {
  62.                     c = String.valueOf('+');
  63.                     cOld = "\\*";
  64.                 } else {
  65.                     c = String.valueOf('*');
  66.                     cOld = "\\+";
  67.                 }
  68.                 //  System.out.println(list);
  69.                 Iterator<String> it = list.iterator();
  70.                 for (int i = 0; i < list.size(); i++) {
  71.                     list.set(i, list.get(i).replaceAll(cOld, c));
  72.                 }
  73.              }
  74.         });
  75.  
  76.         add(jButton, BorderLayout.NORTH);
  77.  
  78.         count = 0;
  79.         String offset = String.format("%-20s", " ");
  80.         list.add(offset);
  81.         list.add(offset);
  82.         list.add(offset + "    *    ");
  83.         list.add(offset + "   ***   ");
  84.         list.add(offset + " ******* ");
  85.         list.add(offset + "*********");
  86.         list.add(offset + " ******* ");
  87.         list.add(offset + "  *****  ");
  88.         list.add(offset + "**  *  **");
  89.         list.add(offset + "  *****  ");
  90.  
  91.         jTextArea.setFont(new Font("Courier New", Font.PLAIN, 12));
  92.         for (String s : list) {
  93.             jTextArea.append(s + "\n");
  94.         }
  95.         add(jTextArea);
  96.         timer.start();
  97.     }
  98.  
  99.     public static void main(String[] args) {
  100.  
  101.         SwingUtilities.invokeLater(new Runnable() {
  102.             @Override
  103.             public void run() {
  104.                 ShapeFrame shapeFrame = new ShapeFrame();
  105.                 shapeFrame.setSize(500, 400);
  106.                 shapeFrame.setVisible(true);
  107.             }
  108.         });
  109.     }
  110. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.462 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы