用java编写一个300行的游戏代码
时间: 2024-05-04 10:21:34 浏览: 3
以下是一个简单的Java游戏代码,实现了一个简单的“吃豆人”游戏。
```
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class EatDots extends JPanel implements KeyListener {
private static final long serialVersionUID = 1L;
private static final int DOT_SIZE = 10;
private static final int DOT_COUNT = 100;
private static final int SPEED = 5;
private static final int WIDTH = 500;
private static final int HEIGHT = 500;
private Point[] dots;
private Point player;
private int direction;
private int score;
public EatDots() {
dots = new Point[DOT_COUNT];
for (int i = 0; i < DOT_COUNT; i++) {
dots[i] = new Point((int) (Math.random() * WIDTH), (int) (Math.random() * HEIGHT));
}
player = new Point(WIDTH / 2, HEIGHT / 2);
direction = KeyEvent.VK_LEFT;
score = 0;
}
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.BLACK);
for (Point dot : dots) {
g.fillOval(dot.x, dot.y, DOT_SIZE, DOT_SIZE);
}
g.setColor(Color.RED);
g.fillOval(player.x, player.y, DOT_SIZE, DOT_SIZE);
g.setColor(Color.BLACK);
g.drawString("Score: " + score, 10, 20);
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT && direction != KeyEvent.VK_RIGHT) {
direction = KeyEvent.VK_LEFT;
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT && direction != KeyEvent.VK_LEFT) {
direction = KeyEvent.VK_RIGHT;
} else if (e.getKeyCode() == KeyEvent.VK_UP && direction != KeyEvent.VK_DOWN) {
direction = KeyEvent.VK_UP;
} else if (e.getKeyCode() == KeyEvent.VK_DOWN && direction != KeyEvent.VK_UP) {
direction = KeyEvent.VK_DOWN;
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void movePlayer() {
if (direction == KeyEvent.VK_LEFT) {
player.x -= SPEED;
} else if (direction == KeyEvent.VK_RIGHT) {
player.x += SPEED;
} else if (direction == KeyEvent.VK_UP) {
player.y -= SPEED;
} else if (direction == KeyEvent.VK_DOWN) {
player.y += SPEED;
}
}
public void checkCollisions() {
for (int i = 0; i < DOT_COUNT; i++) {
if (player.distance(dots[i]) < DOT_SIZE) {
dots[i].x = (int) (Math.random() * WIDTH);
dots[i].y = (int) (Math.random() * HEIGHT);
score++;
}
}
}
public void run() {
while (true) {
movePlayer();
checkCollisions();
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Eat Dots");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
EatDots game = new EatDots();
frame.add(game);
frame.addKeyListener(game);
frame.setVisible(true);
game.run();
}
}
```
这个游戏使用了Java的Swing库来进行绘制,并且实现了KeyListener接口来处理玩家的输入。游戏中的点和玩家都是用Java的Point类表示的,游戏的运行是通过一个无限循环来实现的,每次循环中更新玩家的位置、检查碰撞、重绘界面等。这个游戏的主要目的是演示如何使用Java来编写简单的游戏,因此并不是非常完整和复杂。