Java机器人案例

wen java案例 1

本文目录导读:

Java机器人案例

  1. 基础机器人(控制台版)
  2. 智能聊天机器人
  3. 完整机器人系统(面向对象设计)
  4. 图形界面机器人模拟器
  5. 运行说明

我为您提供一个完整的Java机器人案例,包含多种经典实现,从简单到复杂:

基础机器人(控制台版)

// 简单的机器人控制台案例
public class SimpleRobot {
    private String name;
    private int x;
    private int y;
    private String direction;
    public SimpleRobot(String name) {
        this.name = name;
        this.x = 0;
        this.y = 0;
        this.direction = "NORTH";
    }
    public void move() {
        switch (direction) {
            case "NORTH": y++; break;
            case "SOUTH": y--; break;
            case "EAST": x++; break;
            case "WEST": x--; break;
        }
        System.out.println(name + " 移动到 (" + x + ", " + y + ")");
    }
    public void turnLeft() {
        switch (direction) {
            case "NORTH": direction = "WEST"; break;
            case "WEST": direction = "SOUTH"; break;
            case "SOUTH": direction = "EAST"; break;
            case "EAST": direction = "NORTH"; break;
        }
        System.out.println(name + " 转向 " + direction);
    }
    public void turnRight() {
        switch (direction) {
            case "NORTH": direction = "EAST"; break;
            case "EAST": direction = "SOUTH"; break;
            case "SOUTH": direction = "WEST"; break;
            case "WEST": direction = "NORTH"; break;
        }
        System.out.println(name + " 转向 " + direction);
    }
    public static void main(String[] args) {
        SimpleRobot robot = new SimpleRobot("R2-D2");
        robot.move();
        robot.turnRight();
        robot.move();
        robot.turnLeft();
        robot.move();
    }
}

智能聊天机器人

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Random;
public class ChatBot {
    private String name;
    private Map<String, String[]> responses;
    private Random random;
    public ChatBot(String name) {
        this.name = name;
        this.random = new Random();
        initializeResponses();
    }
    private void initializeResponses() {
        responses = new HashMap<>();
        responses.put("hello", new String[]{
            "你好!我是" + name + ",很高兴见到你!",
            "嗨!有什么我可以帮助你的吗?",
            "你好!今天过得怎么样?"
        });
        responses.put("how are you", new String[]{
            "我很好,谢谢关心!你怎么样?",
            "状态不错!感谢你问道。",
            "作为一个机器人,我总是充满活力!"
        });
        responses.put("name", new String[]{
            "我叫" + name + "!",
            "我是" + name + ",很高兴认识你!"
        });
        responses.put("bye", new String[]{
            "再见!希望很快再见到你!",
            "拜拜!祝你有个美好的一天!",
            "再见!我会想你的!"
        });
        responses.put("default", new String[]{
            "我不太明白你的意思,能换个说法吗?",
            "这个话题我不太熟悉,我们能聊点别的吗?",
            "请告诉我更多关于这个的信息。"
        });
    }
    public String getResponse(String input) {
        String lower = input.toLowerCase();
        // 关键词匹配
        if (lower.contains("hello") || lower.contains("hi")) {
            return getRandomResponse("hello");
        } else if (lower.contains("how are you")) {
            return getRandomResponse("how are you");
        } else if (lower.contains("name")) {
            return getRandomResponse("name");
        } else if (lower.contains("bye") || lower.contains("goodbye")) {
            return getRandomResponse("bye");
        } else {
            return getRandomResponse("default");
        }
    }
    private String getRandomResponse(String key) {
        String[] responsesArray = responses.get(key);
        int index = random.nextInt(responsesArray.length);
        return responsesArray[index];
    }
    public static void main(String[] args) {
        ChatBot bot = new ChatBot("小智");
        Scanner scanner = new Scanner(System.in);
        System.out.println("欢迎来到聊天机器人!输入 'exit' 退出。");
        System.out.println("=====================================");
        while (true) {
            System.out.print("你: ");
            String input = scanner.nextLine();
            if (input.equalsIgnoreCase("exit")) {
                System.out.println("再见!");
                break;
            }
            String response = bot.getResponse(input);
            System.out.println(bot.name + ": " + response);
        }
        scanner.close();
    }
}

完整机器人系统(面向对象设计)

import java.util.ArrayList;
import java.util.List;
// 传感器接口
interface Sensor {
    String getData();
}
// 执行器接口
interface Actuator {
    void execute(String command);
}
// 机器人基类
abstract class Robot {
    protected String name;
    protected int batteryLevel;
    protected boolean isActive;
    protected List<Sensor> sensors;
    protected List<Actuator> actuators;
    public Robot(String name) {
        this.name = name;
        this.batteryLevel = 100;
        this.isActive = false;
        this.sensors = new ArrayList<>();
        this.actuators = new ArrayList<>();
    }
    public void addSensor(Sensor sensor) {
        sensors.add(sensor);
        System.out.println("添加传感器: " + sensor.getClass().getSimpleName());
    }
    public void addActuator(Actuator actuator) {
        actuators.add(actuator);
        System.out.println("添加执行器: " + actuator.getClass().getSimpleName());
    }
    public void start() {
        if (batteryLevel > 0) {
            isActive = true;
            System.out.println(name + " 已启动");
        } else {
            System.out.println(name + " 电池电量不足,无法启动");
        }
    }
    public void stop() {
        isActive = false;
        System.out.println(name + " 已停止");
    }
    public void recharge() {
        batteryLevel = 100;
        System.out.println(name + " 已充满电");
    }
    public void readSensors() {
        if (!isActive) {
            System.out.println(name + " 未启动,无法读取传感器数据");
            return;
        }
        System.out.println(name + " 传感器数据:");
        for (Sensor sensor : sensors) {
            System.out.println("- " + sensor.getData());
        }
    }
    public abstract void performTask();
}
// 温度传感器
class TemperatureSensor implements Sensor {
    private double temperature;
    public TemperatureSensor() {
        this.temperature = 20.0;
    }
    @Override
    public String getData() {
        temperature += (Math.random() - 0.5) * 2;
        return "温度: " + String.format("%.1f", temperature) + "°C";
    }
}
// 距离传感器
class DistanceSensor implements Sensor {
    private int distance;
    public DistanceSensor() {
        this.distance = 100;
    }
    @Override
    public String getData() {
        distance = (int)(Math.random() * 200);
        return "距离: " + distance + "cm";
    }
}
// 电机执行器
class MotorActuator implements Actuator {
    @Override
    public void execute(String command) {
        System.out.println("电机执行: " + command);
    }
}
// 机械臂执行器
class ArmActuator implements Actuator {
    @Override
    public void execute(String command) {
        System.out.println("机械臂执行: " + command);
    }
}
// 具体机器人实现
class CleaningRobot extends Robot {
    public CleaningRobot() {
        super("清洁机器人");
        addSensor(new DistanceSensor());
        addActuator(new MotorActuator());
    }
    @Override
    public void performTask() {
        if (isActive) {
            System.out.println(name + " 正在清洁地板...");
            // 模拟清洁动作
            for (Actuator actuator : actuators) {
                actuator.execute("移动和清洁");
            }
            batteryLevel -= 10;
            System.out.println("清洁完成,电量剩余: " + batteryLevel + "%");
        }
    }
}
class CookingRobot extends Robot {
    public CookingRobot() {
        super("烹饪机器人");
        addSensor(new TemperatureSensor());
        addActuator(new ArmActuator());
    }
    @Override
    public void performTask() {
        if (isActive) {
            System.out.println(name + " 正在准备料理...");
            for (Actuator actuator : actuators) {
                actuator.execute("混合食材");
            }
            batteryLevel -= 15;
            System.out.println("料理完成,电量剩余: " + batteryLevel + "%");
        }
    }
}
// 主测试类
public class RobotDemo {
    public static void main(String[] args) {
        System.out.println("===== 机器人演示系统 =====");
        System.out.println();
        // 创建清洁机器人
        System.out.println("--- 清洁机器人 ---");
        CleaningRobot cleaningRobot = new CleaningRobot();
        cleaningRobot.start();
        cleaningRobot.performTask();
        cleaningRobot.readSensors();
        System.out.println();
        // 创建烹饪机器人
        System.out.println("--- 烹饪机器人 ---");
        CookingRobot cookingRobot = new CookingRobot();
        cookingRobot.start();
        cookingRobot.performTask();
        cookingRobot.readSensors();
        System.out.println();
        // 电量不足演示
        System.out.println("--- 电量管理 ---");
        cleaningRobot.performTask();
        cleaningRobot.stop();
        cleaningRobot.recharge();
        cleaningRobot.start();
        cleaningRobot.stop();
        // 批量操作
        System.out.println("\n--- 批量机器人操作 ---");
        List<Robot> robots = new ArrayList<>();
        robots.add(cleaningRobot);
        robots.add(cookingRobot);
        for (Robot robot : robots) {
            System.out.println(robot.name + " 电池状态: " + robot.batteryLevel + "%");
        }
    }
}

图形界面机器人模拟器

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class RobotSimulator extends JPanel {
    private int robotX = 200;
    private int robotY = 200;
    private String direction = "RIGHT";
    private int stepSize = 10;
    public RobotSimulator() {
        setPreferredSize(new Dimension(400, 400));
        setBackground(Color.WHITE);
        setFocusable(true);
        addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                switch (e.getKeyCode()) {
                    case KeyEvent.VK_UP:
                        robotY -= stepSize;
                        direction = "UP";
                        break;
                    case KeyEvent.VK_DOWN:
                        robotY += stepSize;
                        direction = "DOWN";
                        break;
                    case KeyEvent.VK_LEFT:
                        robotX -= stepSize;
                        direction = "LEFT";
                        break;
                    case KeyEvent.VK_RIGHT:
                        robotX += stepSize;
                        direction = "RIGHT";
                        break;
                }
                repaint();
            }
        });
    }
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // 绘制网格
        g.setColor(Color.LIGHT_GRAY);
        for (int i = 0; i < getWidth(); i += 20) {
            g.drawLine(i, 0, i, getHeight());
            g.drawLine(0, i, getWidth(), i);
        }
        // 绘制机器人
        g.setColor(Color.BLUE);
        g.fillOval(robotX - 20, robotY - 20, 40, 40);
        // 绘制方向指示
        g.setColor(Color.RED);
        g.fillOval(robotX - 5, robotY - 5, 10, 10);
        // 显示坐标和方向
        g.setColor(Color.BLACK);
        g.drawString("位置: (" + robotX + ", " + robotY + ")", 10, 20);
        g.drawString("方向: " + direction, 10, 40);
        g.drawString("使用方向键移动机器人", 10, 60);
    }
    public static void main(String[] args) {
        JFrame frame = new JFrame("机器人模拟器");
        RobotSimulator simulator = new RobotSimulator();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.add(simulator, BorderLayout.CENTER);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        simulator.requestFocus();
    }
}

运行说明

编译运行

# 编译
javac SimpleRobot.java
javac ChatBot.java
javac RobotDemo.java
javac RobotSimulator.java
# 运行(任选一个)
java SimpleRobot
java ChatBot
java RobotDemo
java RobotSimulator

功能特点

案例 主要特点 适用场景
SimpleRobot 简单移动控制 学习基本语法
ChatBot 关键词匹配回答 了解自然语言处理
RobotDemo 面向对象设计 学习设计模式
RobotSimulator 图形界面交互 学习GUI编程

这些案例涵盖了Java的核心概念,包括面向对象、接口、集合、异常处理、GUI编程等,适合不同水平的学习者,您可以根据需要修改和扩展这些案例。

抱歉,评论功能暂时关闭!