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

JavaScript实现Craps骰子游戏规则逻辑的问题与实现

模拟Craps骰子游戏的JavaScript实现与问题解决

需求规则

  • 模拟10次掷骰流程:从第1次掷骰开始,若两个骰子点数之和myRoll属于point数组[4, 5, 6, 8, 9, 10],首次出现的该数值即为确立的pointNumber。
  • 后续掷骰逻辑:
    • 若再次掷出已确立的pointNumber,输出消息Frontline winner!
    • 若掷出7,输出seven out并重置pointNumber
    • 其他情况保持当前pointNumber不变

初始代码的问题

初始代码存在逻辑缺陷:每次掷出符合point数组的数值时,都会直接覆盖pointNumber,无法保留首次确立的数值,不符合需求中“首次出现的数值为pointNumber”的规则。

const point = [4, 5, 6, 8, 9, 10]

let pointNumber = 0
const n = 10

for (let i = 1; i <= n; i++) {
  let dice1 = Math.floor(Math.random() * 6) + 1;
  let dice2 = Math.floor(Math.random() * 6) + 1;
  let myRoll = dice1 + dice2

  if (point.includes(myRoll)) {
    pointNumber = myRoll
  }
  console.log('Roll:' + i + ' Dice: ' + myRoll + ' Point:' + pointNumber)
}

优化后的代码

调整后代码修正了逻辑,能够正确保留首次确立的pointNumber,并按照需求处理后续掷骰的各种情况:

//const { point, craps, come_out, bigRed, Yo } = require('./checkRoll')

const point = [4,5,6,8,9,10]

let NonpointNumberArr = []
let pointNumberArr = []
let pointNumber = 0
const n = 10
let isPointWinner = false
let isSeven = false

for (let i=1; i<= n; i++) {
    let text = [`Roll: ${i}`]
    let dice1 = Math.floor(Math.random() * 6) + 1;
    let dice2 = Math.floor(Math.random() * 6) + 1;
    let myRoll = []
    myRoll[i] = dice1 + dice2
    text.push(`Dice: ${myRoll[i]}`)

    if(myRoll[i] === 7) {
        text.push(`seven out`)
        isSeven = true
        isPointWinner = false
        NonpointNumberArr.push(myRoll[i])
        pointNumber = 0
        pointNumberArr = []
    } else {
      
    if (!point.includes(myRoll[i])){
        isPointWinner = false
        text.push(`Point: ${pointNumber}`)
        NonpointNumberArr.push(myRoll[i])
    }}  
    
    if (point.includes(myRoll[i])){
        pointNumberArr.push(myRoll[i])
        if (myRoll[i] === pointNumber) {
            text.push(`frontline winner!`)
            pointNumber = 0
            pointNumberArr = []
        } else {
            pointNumber = pointNumberArr[0]
            text.push(`Point: ${pointNumber}`)
        }
    }

   isSeven = false
   console.log(text.join(' '))

   }

//  console.log(`\npoint number ${pointNumber}`)
//  console.log(`\npoint numbers: ${pointNumberArr}`)
//  console.log(`\nNon point numbers: ${NonpointNumberArr}`)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:50:39