You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Math.random()*MAX实现随机位置和大小的星星效果?

解决方案:用随机数生成星星效果

首先定义几个常量来控制参数,方便后续调整:

// 窗口尺寸
private static final int MAX_WIDTH = 400;
private static final int MAX_HEIGHT = 400;
// 星星最大数量
private static final int MAX_STARS = 100;
// 星星最大尺寸(宽高)
private static final int MAX_SIZE = 5;

然后用循环替代重复的fillOval调用,每次循环生成随机的位置和大小:

gc.fillRect(0, 0, MAX_WIDTH, MAX_HEIGHT);
gc.setFill(Color.WHITE);

// 循环生成随机星星
for (int i = 0; i < MAX_STARS; i++) {
    // 生成随机x坐标:0 到 (窗口宽度 - 星星最大尺寸),避免星星超出窗口
    int x = (int) (Math.random() * (MAX_WIDTH - MAX_SIZE));
    // 生成随机y坐标
    int y = (int) (Math.random() * (MAX_HEIGHT - MAX_SIZE));
    // 生成随机大小:1 到 MAX_SIZE(避免大小为0)
    int size = (int) (Math.random() * MAX_SIZE) + 1;
    
    gc.fillOval(x, y, size, size);
}

关键细节说明:

  • Math.random() 返回**0.0(包含)到1.0(不包含)**的随机double值,乘以对应最大值就能得到目标范围的随机数,转成int适配fillOval的整数参数要求。
  • 计算x/y坐标时减去MAX_SIZE,是为了防止星星因位置太靠右下角而超出窗口边界。
  • 星星大小加1,是避免生成尺寸为0的无效星星。

如果要调整星星数量、大小或窗口尺寸,直接修改常量即可,不用手动编写大量重复代码。

内容的提问来源于stack exchange,提问作者Douglas Fuentes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:55:16