Java 实现游戏综合战力六边形雷达图,并输出为图片,包含所有代码
时间: 2024-04-05 08:32:25 浏览: 22
好的,以下是一个简单的 Java 实现游戏综合战力六边形雷达图的示例代码,可以输出为图片:
```
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class RadarChart {
private int size;
private double[][] data;
private String[] labels;
private Color[] colors;
private int width;
private int height;
public RadarChart(int size, double[][] data, String[] labels, Color[] colors, int width, int height) {
this.size = size;
this.data = data;
this.labels = labels;
this.colors = colors;
this.width = width;
this.height = height;
}
public void saveImage(String filename) throws IOException {
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = image.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);
int centerX = width / 2;
int centerY = height / 2;
int radius = Math.min(width, height) / 2 - 20;
int[] xPoints = new int[size];
int[] yPoints = new int[size];
for (int i = 0; i < size; i++) {
double angle = 2 * Math.PI / size * i - Math.PI / 2;
int x = centerX + (int) (radius * Math.cos(angle));
int y = centerY + (int) (radius * Math.sin(angle));
xPoints[i] = x;
yPoints[i] = y;
}
g2d.setColor(Color.GRAY);
for (int i = 0; i < size; i++) {
g2d.drawLine(centerX, centerY, xPoints[i], yPoints[i]);
}
g2d.setStroke(new BasicStroke(2));
for (int i = 0; i < data.length; i++) {
int[] dataPoints = new int[size];
for (int j = 0; j < size; j++) {
double value = data[i][j];
double ratio = value / 100;
int x = (int) (centerX + ratio * radius * Math.cos(2 * Math.PI / size * j - Math.PI / 2));
int y = (int) (centerY + ratio * radius * Math.sin(2 * Math.PI / size * j - Math.PI / 2));
dataPoints[j] = y;
}
Color color = colors[i % colors.length];
g2d.setColor(color);
g2d.fillPolygon(xPoints, dataPoints, size);
g2d.setColor(color.darker());
g2d.drawPolygon(xPoints, dataPoints, size);
}
g2d.setColor(Color.BLACK);
g2d.setStroke(new BasicStroke(3));
g2d.drawPolygon(xPoints, yPoints, size);
g2d.dispose();
ImageIO.write(image, "png", new File(filename));
}
public static void main(String[] args) throws IOException {
int size = 6;
double[][] data = {{80, 60, 70, 90, 50, 70}, {60, 80, 50, 70, 90, 80}};
String[] labels = {"攻击", "防御", "生命", "敏捷", "智力", "精神"};
Color[] colors = {new Color(255, 192, 0), new Color(0, 192, 255)};
int width = 600;
int height = 600;
RadarChart radarChart = new RadarChart(size, data, labels, colors, width, height);
radarChart.saveImage("radar.png");
}
}
```
此代码实现了一个 `RadarChart` 类,可以根据输入的数据绘制出六边形雷达图,并将其保存为图片 `radar.png`。你可以通过修改 `main` 函数里的 `size`、`data`、`labels`、`colors`、`width` 和 `height` 参数来生成自己的雷达图。