用模块化封装“石头剪刀布”游戏
时间: 2024-09-06 12:02:29 浏览: 45
为了使用模块化的方式封装“石头剪刀布”(Rock-Paper-Scissors,简称RPS)游戏,我们可以将其拆分成几个模块,分别负责游戏规则、玩家操作和结果判断。以下是一个基础的示例:
1. **game-rules.js**: 定义游戏规则
```javascript
module.exports = {
rules: {
rock: 'scissors',
scissors: 'paper',
paper: 'rock'
},
compare(playerChoice, aiChoice) {
if (playerChoice === aiChoice) {
return '平局';
} else {
return this.rules[playerChoice] === aiChoice ? '玩家胜利' : 'AI胜利';
}
}
};
```
2. **player-input.js**: 获取玩家的选择
```javascript
module.exports.getChoice = function(promptMessage) {
return prompt(promptMessage);
};
```
3. **ai-strategy.js**: 设定AI的随机策略
```javascript
module.exports.aiChoose = function() {
return ['rock', 'paper', 'scissors'][Math.floor(Math.random() * 3)];
};
```
4. **game-engine.js**: 主程序入口
```javascript
const gameRules = require('./game-rules');
const playerInput = require('./player-input');
const aiStrategy = require('./ai-strategy');
function playGame() {
const playerChoice = playerInput.getChoice('请选择(rock/paper/scissors): ');
const aiChoice = aiStrategy.aiChoose();
const comparisonResult = gameRules.compare(playerChoice, aiChoice);
console.log(`你选了 ${playerChoice}, AI选了 ${aiChoice}。结果是: ${comparisonResult}`);
}
playGame();
```
现在你可以单独测试每个模块,然后在`game-engine.js`中整合它们。如果想要增加复杂性(比如计分系统),只需在相应的地方添加新的模块即可。