ROS2话题发布与RVIZ2可视化结合的俄罗斯方块游戏

2020-09-03

ROS2话题发布与RVIZ2可视化结合的俄罗斯方块游戏

项目描述

本资源文件提供了一个基于ROS2的话题机制和RVIZ2可视化的俄罗斯方块游戏实现。通过编写Tetris.hTetris.cppBlock.hBlock.cppMap.hMap.cpp三个类,锻炼了C++编程能力。同时,利用key.cpp通过ROS2的话题机制读取键盘输入信息,并将这些信息通过话题发布给RVIZ2,实现游戏的可视化。

功能介绍

1. Tetris类

  • 功能:Tetris类是游戏的核心,继承自rclcpp::Node。它负责订阅其他节点发布的话题,控制方块的移动、旋转,处理方块触底后融入地图的逻辑,以及检测并清除满行的地图块。
  • 实现:Tetris类通过订阅键盘输入话题,根据输入信息控制方块的移动和旋转。当方块触底后,调用Map类的方法将方块融入地图,并检测是否有满行需要清除。

2. Map类

  • 功能:Map类负责管理游戏地图,实现方块触底后融入地图的逻辑,以及检测并清除满行的地图块。
  • 实现:Map类使用二维数组保存地图中每个格子的状态(是否为空),并提供方法用于方块融入地图和清除满行的操作。

3. Block类

  • 功能:Block类负责管理方块的移动、旋转,以及判断方块是否接触到地图块。
  • 实现:Block类保存了方块的类型、当前占用的格子、当前在地图中的位置等数据,并提供方法用于方块的移动、旋转和碰撞检测。

4. key.cpp

  • 功能:key.cpp通过ROS2的话题机制读取键盘输入信息,并将这些信息发布到ROS2的话题中,供Tetris类订阅和处理。
  • 实现:key.cpp通过监听键盘输入,将输入信息转换为ROS2话题消息并发布。

使用说明

  1. 编译与运行
    • 确保已安装ROS2和RVIZ2。
    • 克隆本仓库到本地,并进入项目目录。
    • 使用colcon build命令编译项目。
    • 运行ros2 launch命令启动游戏节点和RVIZ2可视化界面。
  2. 游戏操作
    • 使用键盘方向键控制方块的移动和旋转。
    • 方块触底后会融入地图,满行后会自动清除。

注意事项

  • 本项目的方块处理逻辑较为简单,适合ROS2和RVIZ2的入门学习。
  • 对于更复杂的俄罗斯方块游戏逻辑,可以参考其他俄罗斯方块教程进行优化。

贡献

欢迎对本项目进行改进和扩展,如有任何问题或建议,请提交Issue或Pull Request。

下载链接

ROS2话题发布与RVIZ2可视化结合的俄罗斯方块游戏