
标题:人狗大战的JAVA代码实现
在程序设计中,经典的游戏场景常常能够激发程序员的创造力。今天,我们将用Java编写一个简单的“人狗大战”小游戏。在这个游戏中,玩家将控制一个人,能够通过键盘控制其移动,同时避免被狗捕捉。
java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HumanDogBattle extends JPanel implements ActionListener, KeyListener {
private int humanX = 50, humanY = 50; // 人的位置
private int dogX = 100, dogY = 100; // 狗的位置
private Timer timer;
public HumanDogBattle() {
timer = new Timer(30, this);
timer.start();
setFocusable(true);
addKeyListener(this);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillRect(humanX, humanY, 20, 20); // 绘制人
g.setColor(Color.RED);
g.fillRect(dogX, dogY, 20, 20); // 绘制狗
}
@Override
public void actionPerformed(ActionEvent e) {
// 简单的狗追逐逻辑
if (dogX < humanX) dogX++;
if (dogX > humanX) dogX--;
if (dogY < humanY) dogY++;
if (dogY > humanY) dogY--;
repaint();
// 判断游戏结束
if (Math.abs(humanX - dogX) < 20 && Math.abs(humanY - dogY) < 20) {
timer.stop();
JOptionPane.showMessageDialog(this, "Game Over!");
}
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP -> humanY = Math.max(0, humanY - 5);
case KeyEvent.VK_DOWN -> humanY = Math.min(getHeight() - 20, humanY + 5);
case KeyEvent.VK_LEFT -> humanX = Math.max(0, humanX - 5);
case KeyEvent.VK_RIGHT -> humanX = Math.min(getWidth() - 20, humanX + 5);
}
}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
public static void main(String[] args) {
JFrame frame = new JFrame("人狗大战");
HumanDogBattle game = new HumanDogBattle();
frame.add(game);
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
在以上代码中,我们创建了一个简单的界面,展示了一个人和一只狗。玩家可以使用方向键控制人的移动,而狗则会自动向人靠近。如果狗碰到人,游戏就结束了,并弹出提示框显示“Game Over”。
通过这个简单的示例,我们不仅可以掌握Java的图形化编程技巧,也能体会到游戏开发的乐趣。希望大家可以在这个基础上继续完善,添加更多功能,比如得分系统或多只狗的追逐,提高趣味性和挑战性。