如何修复控制台版石头剪刀布游戏在多轮后结果不显示的问题?
- 内容介绍
- 相关推荐
本文共计764个文字,预计阅读时间需要4分钟。
原文:
在实现控制台版“石头剪刀布(Rock Paper Scissors)”游戏时,一个常见却隐蔽的陷阱是:函数虽返回了新值,但调用后未将返回值重新赋给对应变量。这会导致后续逻辑始终基于初始轮次的 playerSelection 和 computerSelection 运行,造成“结果不更新”“分数不变”“看似重复同一局”的假象。
问题根源在于原始 game() 函数的写法:
function game() { getPlayerChoice(); // ✅ 调用了,但返回值未接收 getComputerChoice(); // ✅ 调用了,但返回值未接收 playRound(playerSelection, computerSelection); // ✅ 执行了,但返回值未保存 updateScore(result); // ❌ result 仍是第一轮的旧值! // … 后续轮次同理 }
由于 getPlayerChoice() 和 getComputerChoice() 都有 return 语句,但调用时未用变量承接,playerSelection 和 computerSelection 的值从未被更新;同理,playRound() 返回的新 result 也未重新赋值,导致 updateScore(result) 始终处理的是初始化时那一局的结果。
本文共计764个文字,预计阅读时间需要4分钟。
原文:
在实现控制台版“石头剪刀布(Rock Paper Scissors)”游戏时,一个常见却隐蔽的陷阱是:函数虽返回了新值,但调用后未将返回值重新赋给对应变量。这会导致后续逻辑始终基于初始轮次的 playerSelection 和 computerSelection 运行,造成“结果不更新”“分数不变”“看似重复同一局”的假象。
问题根源在于原始 game() 函数的写法:
function game() { getPlayerChoice(); // ✅ 调用了,但返回值未接收 getComputerChoice(); // ✅ 调用了,但返回值未接收 playRound(playerSelection, computerSelection); // ✅ 执行了,但返回值未保存 updateScore(result); // ❌ result 仍是第一轮的旧值! // … 后续轮次同理 }
由于 getPlayerChoice() 和 getComputerChoice() 都有 return 语句,但调用时未用变量承接,playerSelection 和 computerSelection 的值从未被更新;同理,playRound() 返回的新 result 也未重新赋值,导致 updateScore(result) 始终处理的是初始化时那一局的结果。

