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

如何在R中绘制随投掷结果变化的骰子 用于快艇骰子游戏开发

两个思路都可行,更推荐结合两者优势实现,不用提前存储素材,调用灵活且适配你现有的布局需求

首先修正你现有掷骰子函数的语法问题,增加边界校验:

rolls_the_dice <- function(X1 = 5){
  if(X1 <= 5 & X1 >= 1){
    return(sample(1:6, X1, replace = TRUE))
  } else {
    stop("单次投掷骰子数量需在1-5之间")
  }
}

核心实现逻辑

写一个独立的单个骰子绘制函数,传入点数、绘制起始坐标、骰子尺寸即可直接渲染对应骰子,无需预存素材:

# 单个骰子绘制函数
draw_single_dice <- function(point, x_left, y_bottom, size = 50) {
  # 绘制骰子外框
  rect(xleft = x_left, xright = x_left + size, 
       ybottom = y_bottom, ytop = y_bottom + size,
       col = "white", border = "black")
  # 预定义1-6点对应的点位相对坐标(按骰子尺寸比例设置,适配任意大小)
  point_loc <- list(
    `1` = matrix(c(0.5, 0.5), ncol = 2),
    `2` = matrix(c(0.2, 0.8, 0.8, 0.2), ncol = 2, byrow = TRUE),
    `3` = matrix(c(0.2, 0.8, 0.5, 0.5, 0.8, 0.2), ncol = 2, byrow = TRUE),
    `4` = matrix(c(0.2, 0.2, 0.2, 0.8, 0.8, 0.2, 0.8, 0.8), ncol = 2, byrow = TRUE),
    `5` = matrix(c(0.2, 0.2, 0.2, 0.8, 0.5, 0.5, 0.8, 0.2, 0.8, 0.8), ncol = 2, byrow = TRUE),
    `6` = matrix(c(0.2, 0.2, 0.2, 0.5, 0.2, 0.8, 0.8, 0.2, 0.8, 0.5, 0.8, 0.8), ncol = 2, byrow = TRUE)
  )
  # 计算实际坐标绘制点数
  pos <- point_loc[[as.character(point)]]
  points(x = x_left + pos[,1] * size, 
         y = y_bottom + pos[,2] * size,
         pch = 19, cex = 2, col = "black")
}

再写批量绘制函数,完全适配你第一个思路的5个骰子布局:

# 绘制一次投掷的5个骰子结果
draw_yahtzee_dice <- function(roll_res) {
  if(length(roll_res) != 5) stop("仅支持绘制5个骰子的投掷结果")
  # 初始化绘图区域,参数和你现有代码完全对齐
  plot(c(0, 200), c(0, 170), type = "n", xlab = "", ylab = "", axes = F, main = "")
  # 对应你现有代码的5个骰子左下角坐标
  dice_pos <- list(
    c(30, 0),
    c(0, 100),
    c(70, 100),
    c(140, 100),
    c(120, 0)
  )
  # 循环绘制所有骰子
  for (i in 1:5) {
    draw_single_dice(roll_res[i], dice_pos[[i]][1], dice_pos[[i]][2], size = 50)
  }
}

使用示例

# 投掷骰子
result <- rolls_the_dice()
# 绘制结果
draw_yahtzee_dice(result)

方案优势

  • 无需预存储任何素材,所有元素按需渲染,修改骰子样式、大小、布局都只需要调整对应参数即可
  • 完全兼容你原有布局逻辑,不需要调整位置规划
  • 可扩展性强,后续要实现重投指定骰子的功能,只需要重绘对应位置的骰子即可,不需要刷新整个画布

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:03