以下是一个简单的Java涂鸦跳跃游戏代码示例:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DoodleJump extends JPanel implements ActionListener {
private static final int WIDTH = 400;
private static final int HEIGHT = 600;
private static final int GROUND = 550;
private static final int PLAYER_SIZE = 25;
private static final int PLATFORM_WIDTH = 50;
private static final int PLATFORM_HEIGHT = 10;
private static final int PLATFORM_GAP = 200;
private static final int PLATFORM_COUNT = 6;
private static final int GRAVITY = 2;
private static final int JUMP_HEIGHT = 30;
private Timer timer;
private int playerX;
private int playerY;
private int velocityY;
private boolean isJumping;
private Platform[] platforms;
public DoodleJump() {
setPreferredSize(new Dimension(WIDTH, HEIGHT));
setBackground(Color.BLACK);
setFocusable(true);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
if (!isJumping) {
isJumping = true;
velocityY = -JUMP_HEIGHT;
}
}
}
});
playerX = WIDTH / 2;
playerY = GROUND;
velocityY = 0;
isJumping = false;
platforms = new Platform[PLATFORM_COUNT];
for (int i = 0; i < PLATFORM_COUNT; i++) {
platforms[i] = new Platform((int) (Math.random() * (WIDTH - PLATFORM_WIDTH)), GROUND - i * PLATFORM_GAP);
}
timer = new Timer(10, this);
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillOval(playerX - PLAYER_SIZE / 2, playerY - PLAYER_SIZE / 2, PLAYER_SIZE, PLAYER_SIZE);
for (Platform platform : platforms) {
g.fillRect(platform.getX(), platform.getY(), PLATFORM_WIDTH, PLATFORM_HEIGHT);
}
}
public void actionPerformed(ActionEvent e) {
playerY += velocityY;
if (isJumping) {
velocityY += GRAVITY;
}
if (playerY > GROUND) {
playerY = GROUND;
velocityY = 0;
isJumping = false;
}
for (Platform platform : platforms) {
if (playerY + PLAYER_SIZE / 2 > platform.getY() && playerY + PLAYER_SIZE / 2 < platform.getY() + PLATFORM_HEIGHT
&& playerX + PLAYER_SIZE / 2 > platform.getX() && playerX - PLAYER_SIZE / 2 < platform.getX() + PLATFORM_WIDTH) {
playerY = platform.getY() - PLAYER_SIZE / 2;
velocityY = 0;
isJumping = false;
}
}
for (Platform platform : platforms) {
platform.setY(platform.getY() + GRAVITY);
if (platform.getY() > HEIGHT) {
platform.setY(platform.getY() - PLATFORM_GAP * PLATFORM_COUNT);
platform.setX((int) (Math.random() * (WIDTH - PLATFORM_WIDTH)));
}
}
repaint();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Doodle Jump");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new DoodleJump());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private class Platform {
private int x;
private int y;
public Platform(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
}
}
这是一个简单的涂鸦跳跃游戏,玩家通过控制跳跃的小涂鸦在不断生成的平台上往上跳跃。玩家按下空格键时,小涂鸦会向上跳跃,玩家需要控制小涂鸦跳到平台上,如果没有跳到平台上就会掉下来,游戏结束。平台会不断从上面生成,玩家需要不断跳跃上去,直到无法继续跳跃
网友留言: