Files
2024-08-31 12:07:21 +03:00

85 lines
3.2 KiB
JavaScript

const net = require('net');
const BlackjackGame = require('./blackjack_game.js');
const server = net.createServer((socket) => {
// This callback function will be called every time a new client connects to the server
console.log('Client connected');
const game = new BlackjackGame();
// send Start game message to client
socket.write('Welcome to Blackjack!\nCommands: \n1. New game\n2. Exit\n');
// Handle incoming data from the client
socket.on('data', (data) => {
console.log(`Received data from client: ${data}`);
console.log(`Type of data: ${typeof data}`)
console.log(`Data to string: ${data.toString()}`)
// expected data: 1.(start/play again) 1.exit 2.hit 2.stand
if (data.toString() === '1') {
game.dealInitialHands();
const dict = {
playerHand: game.playerHand,
playerScore: game.getHandValue(game.playerHand),
dealerHand: [game.dealerHand[0],'??'],
dealerScore: game.getHandValue([game.dealerHand[0]]),
winner: null
};
socket.write(JSON.stringify(dict));
}
else if (data.toString() === '2') {
socket.write('Thank you for playing!');
socket.end();
}
else if (["hit","h"].includes(data.toString()) && game.hasStarted) {
game.playerHit();
// check if player busts
if (game.getHandValue(game.playerHand) > 21) {
const json = {
playerHand: game.playerHand,
playerScore: game.getHandValue(game.playerHand),
dealerHand: game.dealerHand,
dealerScore: game.getHandValue(game.dealerHand),
winner: 'Dealer',
};
socket.write(JSON.stringify(json));
socket.write('Wanna play again?\n1. Yes\n2. No\n');
}
else{
const dict = {
playerHand: game.playerHand,
playerScore: game.getHandValue(game.playerHand),
dealerHand: [game.dealerHand[0],'??'],
dealerScore: game.getHandValue([game.dealerHand[0]]),
winner: null
};
socket.write(JSON.stringify(dict));
}
}
else if (["stand","s"].includes(data.toString()) && game.hasStarted) {
game.playerStand();
const dict = {
playerHand: game.playerHand,
playerScore: game.getHandValue(game.playerHand),
dealerHand: game.dealerHand,
dealerScore: game.getHandValue(game.dealerHand),
winner: game.determineWinner()
};
socket.write(JSON.stringify(dict));
socket.write('Wanna play again?\n1. Yes\n2. No\n');
}
else{
socket.write(JSON.stringify({error:"Invalid command"}));
}
});
// Handle client disconnection
socket.on('end', () => {
console.log('Client disconnected');
});
});
// Start the server and listen on port 3000
server.listen(3000, () => {
console.log('Server started on port 3000');
});