用java设计一个小球碰撞的小游戏,要有关卡得分的
时间: 2024-03-02 10:54:38 浏览: 23
好的,我可以为您提供一个简单的小球碰撞小游戏的Java代码。这个游戏有多个关卡,每个关卡都有一个目标得分。玩家通过控制小球移动和碰撞来得分。以下是代码示例:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class BallGame extends JPanel implements ActionListener, KeyListener {
private static final long serialVersionUID = 1L;
private int ballX = 0;
private int ballY = 0;
private int ballSize = 50;
private int ballSpeedX = 5;
private int ballSpeedY = 5;
private int score = 0;
private int level = 1;
private int targetScore = 50;
private Timer timer;
public static void main(String[] args) {
JFrame frame = new JFrame("Ball Game");
BallGame game = new BallGame();
frame.add(game);
frame.setSize(500, 500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public BallGame() {
timer = new Timer(50, this);
timer.start();
addKeyListener(this);
setFocusable(true);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillOval(ballX, ballY, ballSize, ballSize);
g.setColor(Color.BLACK);
g.drawString("Score: " + score, 10, 20);
g.drawString("Level: " + level, 10, 40);
g.drawString("Target Score: " + targetScore, 10, 60);
}
public void actionPerformed(ActionEvent e) {
ballX += ballSpeedX;
ballY += ballSpeedY;
if (ballX < 0 || ballX > getWidth() - ballSize) {
ballSpeedX = -ballSpeedX;
}
if (ballY < 0 || ballY > getHeight() - ballSize) {
ballSpeedY = -ballSpeedY;
}
if (score >= targetScore) {
level++;
targetScore += 50;
ballSpeedX++;
ballSpeedY++;
}
repaint();
}
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_LEFT) {
ballSpeedX = -5;
}
if (keyCode == KeyEvent.VK_RIGHT) {
ballSpeedX = 5;
}
if (keyCode == KeyEvent.VK_UP) {
ballSpeedY = -5;
}
if (keyCode == KeyEvent.VK_DOWN) {
ballSpeedY = 5;
}
if (keyCode == KeyEvent.VK_SPACE) {
if (score >= targetScore) {
score = 0;
} else {
score += 10;
}
}
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
ballSpeedX = 0;
ballSpeedY = 0;
}
}
```
该代码使用Java Swing库创建了一个包含小球和得分的面板。玩家可以使用箭头键控制小球的移动,使用空格键来获得得分。游戏有多个关卡,每个关卡有一个目标得分。当玩家达到目标得分时,游戏将进入下一个更难的关卡。