当前位置:   article > 正文

一个用Java编写的屏幕测距工具,包括游戏地图测量功能

一个用Java编写的屏幕测距工具,包括游戏地图测量功能

 该程序提供了一个简单便捷的方式,在屏幕上测量距离,包括游戏地图分析在内。它允许用户准确确定屏幕上两点之间的距离,帮助游戏过程中的战略规划、资源管理和决策制定。

 特点:

  • 简单易用的界面:直观的控制使测量距离变得轻松。
  • 精准测量:提供屏幕距离的精确测量。

注意:确保应用程序窗口覆盖屏幕上感兴趣的区域,以进行准确的测量。对于游戏地图,请调整缩放级别或分辨率,以匹配游戏内的设置,从而进行精确测量。

示例用法:

  • 在策略游戏中,测量单位或游戏地图上的战略点之间的距离,以规划移动并预测敌人的行动。
  • 在角色扮演游戏中,测量位置之间的距离,以估计旅行时间并优化探索路线。
  • 在模拟游戏中,测量对象或地标之间的距离,以计算游戏环境内的尺寸和空间关系。

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.MouseAdapter;
  4. import java.awt.event.MouseEvent;
  5. public class DistanceCalculator extends JFrame {
  6. private Point point1;
  7. private Point point2;
  8. private Point initialClick;
  9. public DistanceCalculator() {
  10. setTitle("小影测距计算器");
  11. setSize(500, 500);
  12. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  13. setLocationRelativeTo(null);
  14. setAlwaysOnTop(true); // 设置窗口置顶
  15. // setExtendedState(JFrame.MAXIMIZED_BOTH);
  16. JPanel panel = new JPanel() {
  17. @Override
  18. protected void paintComponent(Graphics g) {
  19. g.setColor(Color.RED);
  20. Font boldLargeFont = new Font("Serif", Font.BOLD, 30);
  21. g.setFont(boldLargeFont);
  22. g.drawString("小影测距辅助器",(getWidth()/2)-120,50 );
  23. Font f2 = new Font("Serif", Font.BOLD, 15);
  24. g.setFont(f2);
  25. super.paintComponent(g);
  26. if (point1 != null) {
  27. g.setColor(Color.RED);
  28. g.fillOval(point1.x - 5, point1.y - 5, 10, 10);
  29. }
  30. if (point2 != null) {
  31. g.setColor(Color.BLUE);
  32. g.fillOval(point2.x - 5, point2.y - 5, 10, 10);
  33. }
  34. if (point1 != null && point2 != null) {
  35. g.setColor(Color.BLACK);
  36. g.drawLine(point1.x, point1.y, point2.x, point2.y);
  37. double distance = point1.distance(point2);
  38. // 100米等于100像素
  39. double mi=100;// 100米
  40. double px = 100;// 像素
  41. double metersForTargetPixels = mi / px;// 计算1px定于多少米
  42. double resultMi = distance * metersForTargetPixels;// 米
  43. g.drawString("距离:" + distance + " 像素;"+resultMi+"米", 10, getHeight() - 10);
  44. }
  45. }
  46. };
  47. panel.setOpaque(false); // Make the panel transparent
  48. setUndecorated(true); // Remove window decorations
  49. setBackground(new Color(100, 100, 100, 100)); // Set the JFrame background color to be transparent
  50. panel.addMouseListener(new MouseAdapter() {
  51. @Override
  52. public void mouseClicked(MouseEvent e) {
  53. if (point1 == null) {
  54. point1 = e.getPoint();
  55. } else if (point2 == null) {
  56. point2 = e.getPoint();
  57. } else {
  58. // Reset points if two points are already recorded
  59. point1 = e.getPoint();
  60. point2 = null;
  61. }
  62. panel.repaint();
  63. }
  64. @Override
  65. public void mousePressed(MouseEvent e) {
  66. initialClick = e.getPoint();
  67. }
  68. });
  69. panel.addMouseMotionListener(new MouseAdapter() {
  70. @Override
  71. public void mouseDragged(MouseEvent e) {
  72. // get location of Window
  73. int thisX = getLocation().x;
  74. int thisY = getLocation().y;
  75. // Determine how much the mouse moved since the initial click
  76. int xMoved = (thisX + e.getX()) - (thisX + initialClick.x);
  77. int yMoved = (thisY + e.getY()) - (thisY + initialClick.y);
  78. // Move window to this position
  79. int X = thisX + xMoved;
  80. int Y = thisY + yMoved;
  81. setLocation(X, Y);
  82. }
  83. });
  84. add(panel);
  85. setVisible(true);
  86. }
  87. @Override
  88. public void paint(Graphics g) {
  89. super.paint(g);
  90. if (point1 != null && point2 != null) {
  91. g.setColor(Color.BLACK);
  92. g.drawLine(point1.x, point1.y, point2.x, point2.y);
  93. }
  94. }
  95. public static void main(String[] args) {
  96. SwingUtilities.invokeLater(DistanceCalculator::new);
  97. }
  98. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/619740
推荐阅读
相关标签
  

闽ICP备14008679号