彩色弹珠编程可以通过多种编程语言实现,例如Java、Python等。下面我将分别提供Java和Python的示例代码。
Java示例
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class BallsJFrame2 extends JFrame implements ChangeListener, ActionListener {
private JSpinner spinner;
private RollBalls ball;
private JButton btn1, btn2;
public BallsJFrame2() {
setTitle("彩色弹珠");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// 添加弹珠
ball = new RollBalls();
add(ball, BorderLayout.CENTER);
// 添加按钮
btn1 = new JButton("开始");
btn2 = new JButton("停止");
JPanel btnPanel = new JPanel();
btnPanel.add(btn1);
btnPanel.add(btn2);
add(btnPanel, BorderLayout.SOUTH);
// 添加监听器
btn1.addActionListener(this);
btn2.addActionListener(this);
ball.addChangeListener(this);
}
@Override
public void stateChanged(ChangeEvent e) {
repaint();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn1) {
ball.start();
} else if (e.getSource() == btn2) {
ball.stop();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
BallsJFrame2 frame = new BallsJFrame2();
frame.setVisible(true);
});
}
}
class RollBalls extends JPanel implements ChangeListener {
private int x = 0, y = 0;
private int dx = 5, dy = 5;
private Timer timer;
private boolean running = false;
public RollBalls() {
timer = new Timer(10, e -> {
if (y + dy > getHeight() || y + dy < 0) {
dy = -dy;
}
if (x + dx > getWidth() || x + dx < 0) {
dx = -dx;
}
x += dx;
y += dy;
repaint();
});
}
public void start() {
running = true;
timer.start();
}
public void stop() {
running = false;
timer.stop();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillOval(x, y, 50, 50);
}
}
```
Python示例