-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
80 lines (72 loc) · 2.23 KB
/
index.js
File metadata and controls
80 lines (72 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const readline = require('readline');
const { predictRPS, updateData } = require('./ai'); // Assuming 'ai.js' contains your AI logic
const { loadBrowser, closeBrowser, runCode } = require('./renderer');
const gameTable = {
"rock": "scissors",
"scissors": "paper",
"paper": "rock"
}
let moves = 0;
let aiWins = 0;
// Create an interface for input and output
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// Function to prompt user for input
function prompt(question) {
return new Promise((resolve) => {
rl.question(question, (answer) => {
resolve(answer.trim()); // Trim to remove leading/trailing whitespace
});
});
}
// Function to validate user input
function isValid(input) {
const validMoves = ['Rock', 'Paper', 'Scissors'];
return validMoves.includes(input);
}
console.oldLog = console.log
console.log = async (message) => {
runCode(`
let elem = document.createElement('p').innerText = message
document.body.append(elem)
`)
console.oldLog(message)
};
// Main function to run the game
async function main() {
loadBrowser();
let input;
let lastMove = 'Rock'; // Starting last move
while (true) {
input = await String(prompt('Enter your move (Rock, Paper, Scissors) -> "stop" to stop: ')).toLowerCase();
if (input === 'stop') {
console.log('Game stopped.');
break;
}
if (!isValid(input)) {
console.log('Invalid move! Please enter Rock, Paper, or Scissors.');
continue; // Ask for input again
}
let aiPrediction = predictRPS(lastMove);
console.log(`AI Move: ${gameTable[aiPrediction]}`);
console.log(`Your move: ${input}`);
if (aiPrediction === input) {
console.log('AI wins!');
aiWins += 1;
} else {
console.log('You win!');
}
moves += 1;
console.log('AI win rate: ' + aiWins / moves * 100)
// Update data with the last move and the user's input
updateData(lastMove, input);
lastMove = input; // Update last move
}
// Close the readline interface
rl.close();
closeBrowser();
}
// Start the game
main();