java小球碰撞窗体边缘来回反d的代码

java小球碰撞窗体边缘来回反d的代码,第1张

import java.awt.Color

import java.awt.Graphics

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

import java.util.Random

import javax.swing.JFrame

import javax.swing.JPanel

public class RunningBallDemo extends JFrame {

public static void main(String args[]) {

new RunningBallDemo()

}

public RunningBallDemo() {

Ball ballPanel = new Ball(5, 5)

getContentPane().add(ballPanel)

setBackground(Color.BLACK)

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0)

}

})

setSize(350, 350)

setVisible(true)

Thread thread1 = new Thread(ballPanel)

thread1.start()

}

}

class Ball extends JPanel implements Runnable {

int rgb = 0

Color color

int x, y

int dx = 5, dy = 5

Ball(int x, int y) {

this.x = x

this.y = y

}

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g)

setBackground(Color.BLACK)

g.setColor(color)

g.fillOval(x, y, 50, 50)

}

public void run() {

while (true) {

if (x <= 0) {

dx = 5

updateBallColor()

} else if ((x + 50) >= getWidth()) {

dx = -5

updateBallColor()

}

if (y <= 0) {

dy = 5

updateBallColor()

} else if ((y + 50) >= getHeight()) {

dy = -5

updateBallColor()

}

x = x + dx

y = y + dy

repaint()

try {

Thread.sleep(25)

} catch (InterruptedException e) {

}

}

}

public void updateBallColor() {

rgb = new Random().nextInt()

color = new Color(rgb)

}

}

在Java编程中,可以使用Graphics类和Color类来实现小球自由落体反d变颜色的功能。可以使用Graphics类中的drawOval()方法来画出小球,并使用fillOval()方法来填充小球的颜色。可以使用Color类中的getRGB()方法来获取每次反d后的新颜色。另外,也可以使用Thread类来实现小球的自由落体反d。

给小球类定义一个方法:碰撞;然后当周围环境的坐标到球心的距离等于小球的半径时,小球的运动路径算法就应该是轴对称的。先判断之前的运动方向,然后根据运动方向确定新的运动方向。这个其实就是线性方程做小球的运动轨迹而已。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11516393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存