alexagame / games /HackGame.js
hansaka01's picture
Upload 30 files
44eba2f verified
Raw
History Blame Contribute Delete
1.49 kB
/**
* Hack Game Logic (Bulls and Cows style)
* bot generates a PIN, user guesses using inline keyboard.
* Hints: Correct position (Bulls), Correct digit but wrong position (Cows).
*/
class HackGame {
constructor(length = 4, bet = 100) {
this.length = length;
this.bet = bet;
this.target = this.generatePin(length);
this.attempts = 0;
this.maxAttempts = length + 3;
this.currentGuess = "";
}
generatePin(length) {
let pin = "";
const digits = "0123456789";
for (let i = 0; i < length; i++) {
pin += digits[Math.floor(Math.random() * digits.length)];
}
return pin;
}
checkGuess(guess) {
let bulls = 0;
let cows = 0;
const targetArr = this.target.split("");
const guessArr = guess.split("");
// Check bulls
for (let i = 0; i < targetArr.length; i++) {
if (targetArr[i] === guessArr[i]) {
bulls++;
targetArr[i] = null;
guessArr[i] = null;
}
}
// Check cows
for (let i = 0; i < guessArr.length; i++) {
if (guessArr[i] !== null) {
const index = targetArr.indexOf(guessArr[i]);
if (index !== -1) {
cows++;
targetArr[index] = null;
}
}
}
return { bulls, cows };
}
}
module.exports = HackGame;