Juego de blackjack Javascript

Estoy trabajando en un juego de blackjack de JavaScript para una class mía. Hasta ahora tengo un método para crear stacks para el mazo, el jugador y el repartidor. Otro crea el mazo, uno crea cada carta como un object. Otra baraja, una reparte cartas de la baraja de la baraja y otra agrega esas cartas a las otras stacks. Estoy tratando de ver algunas pantallas para ver qué está pasando hasta ahora antes de terminarlo, pero por mi vida no puedo get nada. Lo he protagonizado durante horas y espero que sea un estúpido error de syntax. Realmente agradecería a cualquiera que pudiera echar un vistazo a esto por mí y decirme por qué no me mostrarán mis pantallas. Siéntase libre de copyr y jugar.

<html> <head> <script type="text/javascript"> function stack() { this.cards = new Array(); this.makeDeck = createDeck(); this.shuffle = shuffle(); this.deal = dealHand(); this.addCard = AddCard(); this.combine = Combine(); this.cardCount = CardCount(); } function createDeck() { var ranks = new Array("Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"); var suits = new Array("Clubs", "Diamonds", "Hearts", "Spades"); var count = ranks.length * suits.length; count = parseInt(count); this.cards = new Array(count); for (s = 0; s < suits.length; s++) { for (r = 0; r < ranks.length; r++) { this.cards[s * ranks.length + r] = new card(ranks[r], suits[s]); } } } function card (inrank, insuit) { this.suit = insuit; this.rank = inrank; } function shuffle(n) { var i, j, k; var temp; for (i = 0; i < n; i++) for (j = 0; j < this.cards.length; j++) { k = Math.floor(Math.random() * this.cards.length); temp = this.cards[j]; this.cards[j] = this.cards[k]; this.cards[k] = temp; } function dealHand() { return this.cards.shift(); } function addCard(card) { this.cards.push(card); } function newGame() { var deck = new stack(); var player = new stack(); var dealer = new stack(); deck.makeDeck; deck.shuffle; player.addCard(deck.deal); player.addCard(deck.deal); dealer.addCard(deck.deal); dealer.addCard(deck.deal); display(); document.write("here"); } function display() { document.display.player_card_1.value ="here"; //player.cards.card[0].rank + " of " + player.cards.card[0].suit; //document.display.player_card_1_val.value = player.cards.card[0].value; } </script> <style type="text/css"> input { background:transparent } </style> </head> <body> <script type="text/javascript"> </script> <table bgcolor="#33CC33"> <tr> <td style="font:14pt bold">Your cards</td> <td></td> <td style="font:14pt bold">Dealer's cards</td> <td></td> </tr> <tr> <td><input type="text" readonly="readonly" value="" name="player_card_1"></td> <td><input type="text" readonly="readonly" value="" name="p_card_1_val"></td> <td><input type="password" readonly="readonly" value="" name="dealer_card_1"></td> <td><input type="password" readonly="readonly" value="" name="d_card_1_val"></td> </tr> <tr> <td><input type="text" readonly="readonly" value="" name="player_card_2"></td> <td><input type="text" readonly="readonly" value="" name="p_card_2_val"></td> <td><input type="text" readonly="readonly" value="" name="dealer_card_2"></td> <td><input type="text" readonly="readonly" value="" name="d_card_2_val"></td> </tr> <tr> <td><input type="text" readonly="readonly" value="" name="player_card_3"></td> <td><input type="text" readonly="readonly" value="" name="p_card_3_val"></td> <td><input type="text" readonly="readonly" value="" name="dealer_card_3"></td> <td><input type="text" readonly="readonly" value="" name="d_card_3_val"></td> </tr> <tr> <td><input type="text" readonly="readonly" value="" name="player_card_4"></td> <td><input type="text" readonly="readonly" value="" name="p_card_4_val"></td> <td><input type="text" readonly="readonly" value="" name="dealer_card_4"></td> <td><input type="text" readonly="readonly" value="" name="d_card_4_val"></td> </tr> <tr> <td><input type="text" readonly="readonly" value="" name="player_card_5"></td> <td><input type="text" readonly="readonly" value="" name="p_card_5_val"></td> <td><input type="text" readonly="readonly" value="" name="dealer_card_5"></td> <td><input type="text" readonly="readonly" value="" name="d_card_5_val"></td> </tr> <tr> <td><input type="text" readonly="readonly" value="Total"></td> <td><input type="text" readonly="readonly" value=""></td> <td><input type="text" readonly="readonly" value="Total"></td> <td><input type="text" readonly="readonly" value=""></td> </tr> </table> <br> <form name="buttons" action=""> <input type="button" value="Deal" name="deal" onclick="newGame()"> <input type="button" value="Hit" name="hit"> <input type="button" value="Stand" name="stand"> </form> </body> </html> 

2 Solutions collect form web for “Juego de blackjack Javascript”

Para empezar, su function shuffle() no tiene un paréntesis de cierre:

Cambia esto:

 function shuffle(n) { var i, j, k; var temp; for (i = 0; i < n; i++) for (j = 0; j < this.cards.length; j++) { k = Math.floor(Math.random() * this.cards.length); temp = this.cards[j]; this.cards[j] = this.cards[k]; this.cards[k] = temp; } 

A esto:

 function shuffle(n) { var i, j, k; var temp; for (i = 0; i < n; i++) for (j = 0; j < this.cards.length; j++) { k = Math.floor(Math.random() * this.cards.length); temp = this.cards[j]; this.cards[j] = this.cards[k]; this.cards[k] = temp; } } 

Algunos problemas sintácticos y lógicos

Entre paréntesis alnetworkingedor de sus valores apropiados en la línea:

 this.cards[s * ranks.length + r] = new card(ranks[r], suits[s]); 

como

 (s*ranks.length) + r != s * (ranks.length + r) 

EDITAR: tampoco me gusta que tu function stack () tenga tantos "miembros" locales. Por ejemplo, ¿es realmente necesario que su object jugador tenga una instancia local de createDeck () o shuffle ()? Estos deberían tener un scope más alto (global).

Creo que estás complicando el asunto. Puedo ofrecerle consejos adicionales si lo desea, pero veremos qué tan lejos va esto primero. 🙂

Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.