85 lines
3.2 KiB
JavaScript
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');
|
|
}); |