Blackjack(二十一点)作业如何实现用户可多次选择是否要牌的循环逻辑
二十一点(Blackjack)要牌循环逻辑实现方案
核心修改要点
- 新增
while循环控制要牌流程,支持用户任意次数选择要牌,触发终止条件(用户选N/总点数≥21)时自动退出循环 - 修正原代码的牌值生成逻辑:玩家单次要牌仅生成1张1~11点的牌,原首次要牌生成2张牌的逻辑不符合规则
- 补充用户输入转布尔值的逻辑,正确匹配Y/N输入的判断,同时兼容大小写输入
- 新增爆牌提前终止逻辑,玩家总点数超过21时直接结束要牌流程,无需额外询问
完整可运行代码
let card = 0; let total = 0; let hitMe = true; let dealer = 0; // 玩家要牌循环逻辑 while (hitMe && total < 21) { // 弹出询问框获取用户输入 let userInput = prompt(`当前总点数:${total},是否要牌?Y/N`, "Y"); // 转换用户输入为布尔值,忽略大小写 hitMe = userInput.toUpperCase() === "Y"; if (hitMe) { // 生成1张1~11点的随机牌 card = Math.ceil(11 * Math.random()); total += card; } } // 庄家固定发2张牌 dealer = Math.ceil(11 * Math.random()) + Math.ceil(11 * Math.random()); // 输出最终结果 alert(`你的总点数是${total},庄家总点数是${dealer}。`);
循环逻辑说明
- 循环启动前置校验:只有当前玩家总点数小于21,且上一轮用户选择了要牌,才会发起新一轮要牌询问
- 输入容错处理:用户输入y/Y都会判定为要牌,输入其他内容统一判定为停止要牌
- 爆牌自动终止:玩家要牌后总点数≥21时,会直接跳出循环进入最终结算环节
内容的提问来源于stack exchange,提问作者honni_bee
相关产品推荐
相关产品推荐

