Как заставить шарик двигаться используя цикл? - Java
Формулировка задачи:
Доброго всем дня.
Есть прога которая рисует круг при нажатии мышки и теперь мне нужно заставить этот круг двигатся и отбиватся от краев.Это нужно зделать с помощью цыкла(или цыклов).Только я вот не понимаю какой и как цыкл здесь задействовать .
Вот часть кода где я описываю панельку где рисую круг и событие(нажатие мышки) при котором появляется круг.
Если нужно будет скину весь код.
Листинг программы
- pan = new Panel() {
- public void paint(Graphics g) {
- Color newColor = new Color((int) (Math.random() * 255), (int) (Math.random() * 255),(int) (Math.random() * 255));
- g.setColor(newColor);
- g.fillOval(X, Y, r, r);
- }
- };
- pan.addMouseListener(new MouseAdapter() {
- public void mousePressed(MouseEvent e) {
- r = 70;
- X = e.getX() - r / 2;
- Y = e.getY() - r / 2;
- pan.repaint();
- }
- });
Решение задачи: «Как заставить шарик двигаться используя цикл?»
textual
Листинг программы
- package movingball;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.image.BufferedImage;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class MovingBall extends JPanel {
- BufferedImage img;
- int WIDTH;
- int HEIGHT;
- int X, Y, dx, dy, R;
- MovingBall() {
- WIDTH = 640;
- HEIGHT = 480;
- X = 0;
- Y = 0;
- dx = 1;
- dy = 1;
- R = 15;
- JFrame frame = new JFrame("movement");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setPreferredSize(new Dimension(WIDTH, HEIGHT));
- img = new BufferedImage(WIDTH + R, HEIGHT + R, BufferedImage.TYPE_INT_BGR);
- frame.add(this);
- frame.pack();
- javax.swing.Timer timer = new javax.swing.Timer(20, new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (X + R < 0 | X + R > WIDTH) {
- dx *= (-1);
- }
- if (Y + R < 0 | Y + R > HEIGHT) {
- dy *= (-1);
- }
- X += dx;
- Y += dy;
- paintOnImg();
- }
- });
- timer.start();
- frame.setResizable(false);
- frame.setVisible(true);
- }
- public void paintOnImg() {
- Graphics g = img.createGraphics();
- g.setColor(Color.WHITE);
- g.fillRect(0, 0, WIDTH + R, HEIGHT + R); //cleaning the image;
- g.setColor(Color.RED);
- g.fillOval(X + R, Y + R, R, R);
- g.dispose();
- repaint();
- }
- @Override
- public void paint(Graphics g) {
- g.drawImage(img, 0, 0, null);
- }
- @Override
- public void update(Graphics g) {
- paint(g);
- }
- public static void main(String[] args) {
- new MovingBall();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д