mirror of
https://github.com/milk-net/milk-net.github.io.git
synced 2025-04-19 17:43:42 -05:00
162 lines
5.1 KiB
JavaScript
162 lines
5.1 KiB
JavaScript
let playerHand = [];
|
|
let dealerHand = [];
|
|
let blackjackBet = 0;
|
|
|
|
function startGame() {
|
|
const username = document.getElementById('username-input').value.trim();
|
|
if (!username) {
|
|
alert('Please enter a username!');
|
|
return;
|
|
}
|
|
localStorage.setItem('casino-username', username);
|
|
localStorage.setItem('casino-money', 1000);
|
|
localStorage.setItem('casino-level', 1);
|
|
localStorage.setItem('casino-xp', 0);
|
|
localStorage.setItem('casino-blackjack-wins', 0);
|
|
showScreen('main-menu');
|
|
updateUI();
|
|
}
|
|
|
|
function showScreen(screenId) {
|
|
document.querySelectorAll('.screen').forEach(screen => screen.classList.remove('active'));
|
|
document.getElementById(screenId).classList.add('active');
|
|
updateUI();
|
|
}
|
|
|
|
function updateUI() {
|
|
const username = localStorage.getItem('casino-username') || 'Player';
|
|
const money = parseInt(localStorage.getItem('casino-money')) || 0;
|
|
const level = parseInt(localStorage.getItem('casino-level')) || 1;
|
|
const xp = parseInt(localStorage.getItem('casino-xp')) || 0;
|
|
const xpToNext = level * 100;
|
|
|
|
document.getElementById('player-username').innerText = username;
|
|
document.getElementById('player-money').innerText = money;
|
|
document.getElementById('player-level').innerText = level;
|
|
document.getElementById('player-xp').innerText = xp;
|
|
document.getElementById('player-xp-max').innerText = xpToNext;
|
|
document.getElementById('xp-progress').style.width = `${Math.min(100, (xp / xpToNext) * 100)}%`;
|
|
document.getElementById('blackjack-money').innerText = money;
|
|
|
|
document.getElementById('stats-username').innerText = username;
|
|
document.getElementById('stats-money').innerText = money;
|
|
document.getElementById('stats-level').innerText = level;
|
|
document.getElementById('stats-xp').innerText = xp;
|
|
document.getElementById('stats-blackjack-wins').innerText = localStorage.getItem('casino-blackjack-wins') || 0;
|
|
}
|
|
|
|
function returnToMenu() {
|
|
document.getElementById('blackjack-result').innerText = '';
|
|
document.getElementById('blackjack-game').classList.add('hidden');
|
|
showScreen('main-menu');
|
|
}
|
|
|
|
function getRandomCard() {
|
|
const cards = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
|
|
return cards[Math.floor(Math.random() * cards.length)];
|
|
}
|
|
|
|
function calculateTotal(hand) {
|
|
let total = 0;
|
|
let aces = 0;
|
|
hand.forEach(card => {
|
|
if (card === 'A') {
|
|
total += 11;
|
|
aces++;
|
|
} else if (['K', 'Q', 'J'].includes(card)) {
|
|
total += 10;
|
|
} else {
|
|
total += parseInt(card);
|
|
}
|
|
});
|
|
while (total > 21 && aces > 0) {
|
|
total -= 10;
|
|
aces--;
|
|
}
|
|
return total;
|
|
}
|
|
|
|
function startBlackjack() {
|
|
const bet = parseInt(document.getElementById('blackjack-bet').value);
|
|
let money = parseInt(localStorage.getItem('casino-money'));
|
|
if (!bet || bet <= 0 || bet > money) {
|
|
alert('Invalid bet amount.');
|
|
return;
|
|
}
|
|
blackjackBet = bet;
|
|
playerHand = [getRandomCard(), getRandomCard()];
|
|
dealerHand = [getRandomCard()];
|
|
money -= bet;
|
|
localStorage.setItem('casino-money', money);
|
|
document.getElementById('blackjack-game').classList.remove('hidden');
|
|
document.getElementById('blackjack-result').innerText = '';
|
|
updateBlackjackUI();
|
|
updateUI();
|
|
}
|
|
|
|
function updateBlackjackUI() {
|
|
document.getElementById('player-cards').innerText = playerHand.join(', ');
|
|
document.getElementById('player-total').innerText = calculateTotal(playerHand);
|
|
document.getElementById('dealer-cards').innerText = dealerHand.join(', ') + ', ?';
|
|
}
|
|
|
|
function hitCard() {
|
|
playerHand.push(getRandomCard());
|
|
const playerTotal = calculateTotal(playerHand);
|
|
updateBlackjackUI();
|
|
if (playerTotal > 21) {
|
|
endBlackjack('lose');
|
|
}
|
|
}
|
|
|
|
function stand() {
|
|
while (calculateTotal(dealerHand) < 17) {
|
|
dealerHand.push(getRandomCard());
|
|
}
|
|
finishBlackjackRound();
|
|
}
|
|
|
|
function finishBlackjackRound() {
|
|
const playerTotal = calculateTotal(playerHand);
|
|
const dealerTotal = calculateTotal(dealerHand);
|
|
let result = '';
|
|
if (dealerTotal > 21 || playerTotal > dealerTotal) {
|
|
result = 'win';
|
|
} else if (playerTotal < dealerTotal) {
|
|
result = 'lose';
|
|
} else {
|
|
result = 'draw';
|
|
}
|
|
endBlackjack(result);
|
|
}
|
|
|
|
function endBlackjack(result) {
|
|
const dealerTotal = calculateTotal(dealerHand);
|
|
document.getElementById('dealer-cards').innerText = dealerHand.join(', ') + ` (${dealerTotal})`;
|
|
let money = parseInt(localStorage.getItem('casino-money'));
|
|
let xp = parseInt(localStorage.getItem('casino-xp'));
|
|
let wins = parseInt(localStorage.getItem('casino-blackjack-wins'));
|
|
|
|
if (result === 'win') {
|
|
document.getElementById('blackjack-result').innerText = `You won $${blackjackBet * 2}!`;
|
|
money += blackjackBet * 2;
|
|
xp += 15;
|
|
wins += 1;
|
|
} else if (result === 'draw') {
|
|
document.getElementById('blackjack-result').innerText = 'It\'s a draw! Your bet is returned.';
|
|
money += blackjackBet;
|
|
} else {
|
|
document.getElementById('blackjack-result').innerText = 'You lost.';
|
|
}
|
|
|
|
localStorage.setItem('casino-money', money);
|
|
localStorage.setItem('casino-xp', xp);
|
|
localStorage.setItem('casino-blackjack-wins', wins);
|
|
updateUI();
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
if (localStorage.getItem('casino-username')) {
|
|
showScreen('main-menu');
|
|
}
|
|
});
|