Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 5

Движение круга по диагонали

09.02.2014, 16:15. Показов 7150. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо заставить двигаться круг по диагонали (по осям x и y) или хотя бы по оси y. Перелопатил много информации, но так и не понял как реализовать данный метод Помогите плиз если не трудно в Java я только начинающий
Вот код в котором circle2 должен двигаться по траектории вниз:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
public class Picture
{
    private Square wall;
    private Square window;
    private Triangle roof;
    private Circle sun;
    private Circle sun2;
 
    /**
     * Constructor for objects of class Picture
     */
    public Picture()
    {
        // nothing to do... instance variables are automatically set to null
    }
 
    /**
     * Draw this picture.
     */
    public void draw()
    {
        wall = new Square();
        wall.moveVertical(80);
        wall.changeSize(100);
        wall.makeVisible();
 
        window = new Square();
        window.changeColor("black");
        window.moveHorizontal(20);
        window.moveVertical(100);
        window.makeVisible();
 
        roof = new Triangle();
        roof.changeSize(50, 140);
        roof.moveHorizontal(60);
        roof.moveVertical(70);
        roof.makeVisible();
 
        sun = new Circle();
        sun.changeColor("blue");
        sun.moveHorizontal(180);
        sun.moveVertical(-10);
        sun.changeSize(60);
        sun.makeVisible();
        
        sun2 = new Circle();
        sun2.changeColor("red");
        sun2.moveHorizontal(20);
        sun2.moveVertical(-30);
        sun2.changeSize(60);
        sun2.makeVisible();
    }
 
    /**
     * Change this picture to black/white display
     */
    public void setBlackAndWhite()
    {
        if(wall != null)   // only if it's painted already...
        {
            wall.changeColor("black");
            window.changeColor("white");
            roof.changeColor("black");
            sun.changeColor("black");
        }
    }
 
    /**
     * Change this picture to use color display
     */
    public void setColor()
    {
        if(wall != null)   // only if it's painted already...
        {
            wall.changeColor("red");
            window.changeColor("black");
            roof.changeColor("green");
            sun.changeColor("yellow");
        }
    }
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2014, 16:15
Ответы с готовыми решениями:

Движение круга по синусоиде
Помогите нарисовать круг,движущийся по синусойде. Заранее спасибо

Изобразить движение круга
Надо простую программу,например движение круга в Турбо паскаль ,а не в ABC. For I:=1 to 200 do begin setcolor(15); ...

Движение круга по форме
Как сделать чтобы в форме рандомно появлялся круг и начал двигаться в произвольном направлении с произвольной скоростью? необходимо чтоб...

4
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
09.02.2014, 18:27

Не по теме:

Цитата Сообщение от Tatapin Посмотреть сообщение
круг по диагонали
треугольник, прямоугольник
трапеции и овалы еще не двигали на этом форуме



поиск по форуму Вас спасет быстрее
1
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
09.02.2014, 18:53
получаете "текущие" координаты и уже к ним добавляете по +1 (будет движение в нижний правый угол), двигаться может до тех пор, пока по проверке не достигнем границы (в нашем случае габариты поля) (можно через while(object.x != разрешение_по_х && object.y != разрешение_по_y) {....
1
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 5
10.02.2014, 02:03  [ТС]
Цитата Сообщение от tankomaz Посмотреть сообщение
получаете "текущие" координаты и уже к ним добавляете по +1 (будет движение в нижний правый угол), двигаться может до тех пор, пока по проверке не достигнем границы (в нашем случае габариты поля) (можно через while(object.x != разрешение_по_х && object.y != разрешение_по_y) {....
Так то понятно, что нужно координату увеличить на "+1" на каждом шаге только вот не понятно как, эхххх был бы турбо паскаль было бы гораздо проще типа a[i]:=a[i]+1, но это не паскаль и не html и не VBa и к большому сожалению принципа данного языка понять не могу т. к. никто не объяснял даже азов программирования по java Понимаю, что это пустяковое задание, но для меня это тьма тьмущая, если кто может опишите подробно данный метод и куда именно внедрить его в программном коде?
По моим мыслям метод должен быть организован после данных строк:
Java
1
2
3
4
5
6
sun2 = new Circle();
        sun2.changeColor("red");
        sun2.moveHorizontal(20);
        sun2.moveVertical(-30);
        sun2.changeSize(60);
        sun2.makeVisible();
либо после строки:
Java
1
sun2.moveVertical(-30);
Конечно напишу сейчас глупость, но только так я могу представить код:
while(object.x !=20) do (object.x !=20+1..n) либо sun2.moveVertical(-30=-30++1);
Читал в интернете, что можно организовать движение через метод draw() и
public void sunset(), но мой мозг так и не дошел до финиша из-за не хватки знаний
Прошу знающих направить меня по верному пути и сори за мои глупые предположения
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.02.2014, 12:05
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package easybudda.movingball;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class MovingBall {
    private static final int WIDTH = 480;
    private static final int HEIGHT = 360;
    private static final int DIAMETER = 20;
    private static final int FREQ = 10;
    private static final Color BACKGROUND_COLOR = Color.WHITE;
    private static final Color BALL_COLOR = Color.RED;
    
    private int xPos = 0;
    private int yPos = 0;
    private int dX = -1;
    private int dY = -1;
    private JPanel ballPanel;
    
    @SuppressWarnings("serial")
    MovingBall() {
        ballPanel = new JPanel() {  
            @Override 
            public Dimension getPreferredSize() {
                return new Dimension(WIDTH, HEIGHT);
            }
            
            @Override
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                g.setColor(BALL_COLOR);
                g.fillOval(xPos, yPos, DIAMETER, DIAMETER);
            }
        };
        ballPanel.setOpaque(true);
        ballPanel.setBackground(BACKGROUND_COLOR);
        
        Timer timer = new Timer(FREQ, new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                if ( xPos < 1 || xPos + DIAMETER > WIDTH - 1 )
                    dX *= -1;
                if ( yPos < 1 || yPos > HEIGHT - DIAMETER - 1 )
                    dY *= -1;
                xPos += dX;
                yPos += dY;
                ballPanel.repaint();
            }
        });
        
        JFrame mainFrame = new JFrame("Moving Ball");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.add(ballPanel);
        mainFrame.setSize(WIDTH, HEIGHT + DIAMETER);
        mainFrame.setVisible(true);
        timer.start();
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new MovingBall();
            }
        });
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2014, 12:05
Помогаю со студенческими работами здесь

Движение круга в квадрате.
Помогите пожалуйста!! Надо нарисовать так, чтобы в квадрате круг двигался по всему периметру(как классическая заставка Windows)!! ...

Движение круга по дуге
Здраствуйте!Как можно реализовать движение круга по дуге?Какой функцией задать дугу?

Движение круга по форме
Подскажите пожалуйста какая разница в написании програмного кода между перемещением замкнутой линии (круга) по форме, и перемещение...

Движение круга по дуге
создать программу демонстрирующую движение круга по дуге

Движение круга в круге
Ребята помогите очень срочно решить такую задачу. При запучке программы на экран должно выводится два круга, один большой, другой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru