Как генерировать пустые определения, учитывая заголовочный файл

Измените метод movement, чтобы просто обновить дельту

public void movement(){
            x_position = x_position +10;
}

Удалите вызов movement из вашего метода paintComponent

Обновите вас Timer для вызова movement method

Timer timer = new Timer(50, e -> {
        canvas.movement();
        canvas.repaint();
 });

и как насчет операторов if, где, если версия исчезает с экрана, она возвращается к началу? я должен был бы сделать отдельный метод для проверки? и если так, я бы назвал это в графике или в таймере? Спасибо

blockquote>

Вы продолжаете задавать этот вопрос, и вы продолжаете получать один и тот же ответ, я не уверен, что вы ожидаете изменить.

Я бы подумал использовать что-то вроде , например, , которое просто рисует «переполнение» изображения, чтобы заполнить оставшееся пространство, или , например, или даже , это пример , который использует BufferedImage#getSubImage, что, вероятно, более эффективно.

Основываясь на первых двух примерах, вы также можете сделать что-то вроде ...

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                BufferedImage background = new BufferedImage(800, 200, BufferedImage.TYPE_INT_RGB);
                Graphics2D g2d = background.createGraphics();
                g2d.setColor(Color.WHITE);
                g2d.fillRect(0, 0, 800, 200);
                g2d.setColor(Color.RED);
                g2d.drawLine(0, 0, 800, 200);
                g2d.drawLine(0, 200, 800, 0);

                JFrame frame = new JFrame();
                frame.add(new RenderPane(background));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class RenderPane extends JPanel {

        private BufferedImage bgMaster;
        private BufferedImage bgImage;
        private Timer timer;

        private double delta = 1.0;
        private double backgroundXPos = 0;

        public RenderPane(BufferedImage background) {
            this.bgMaster = background;
            bgImage = new BufferedImage(getPreferredSize().width, getPreferredSize().height, bgMaster.getType());
            renderBackground();
            timer = new Timer(5, new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent evt) {
                    backgroundXPos -= delta;
                    if (backgroundXPos + background.getWidth() < 0) {
                        System.out.println("Reset");
                        backgroundXPos = 0;
                    }
                    renderBackground();
                    repaint();
                }
            });
            timer.start();
        }

        protected void renderBackground() {
            Graphics2D g2d = bgImage.createGraphics();
            g2d.drawImage(bgMaster, (int)backgroundXPos, 0, null);

            double overflow = bgMaster.getWidth() - (backgroundXPos * -1) - getWidth();
            if (overflow < 0) {
                double overflowX = getWidth() + overflow;
                g2d.drawImage(bgMaster, (int)overflowX, 0, null);
            }

            g2d.dispose();
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(400, 200);
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g.create();
            if (bgImage != null) {
                g2d.drawImage(bgImage, 0, 0, this);
            }
            g2d.dispose();
        }

    }

}

10
задан user23434 22 October 2008 в 11:01
поделиться

2 ответа

Это - более трудная проблема, чем Вам могло бы понравиться, поскольку анализирующий C++ может быстро стать трудной задачей. Ваш лучший выбор состоял бы в том, чтобы выбрать существующий синтаксический анализатор с хорошим интерфейсом.

Быстрый поиск нашел этот поток, который имеет много рекомендаций для синтаксических анализаторов, чтобы сделать что-то подобное.

В очень худшем Вы смогли использовать БОЛЬШОЙ ГЛОТОК-> Python и затем использовать отражение об этом для печати фиктивной реализации.

Извините это - только полуответ, но я не думаю, что существует существующий инструмент, чтобы сделать это (кроме платформы насмешки, которая является, вероятно, тем же объемом работы как использование синтаксического анализатора).

1
ответ дан 4 December 2019 в 04:53
поделиться

Создайте одно тестовое приложение, которое читает заголовочный файл и создает исходный файл. Тестовое приложение должно проанализировать заголовочный файл для знания имен функций.

0
ответ дан 4 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: