MÓDULO 6
En este último módulo veremos cómo utilizar los OBJETOS y, además, concluir con un proyecto final y como siempre, un test de aprendizaje.
Dirigirse al link para ver la presentación.
ó
ó
PROYECTO
Proyecto final
Para terminar, os proponemos realizar un proyecto para poner en práctica todo lo que hemos aprendido durante el curso. Ya que hemos estado siempre trabajando con ejemplos en el contexto de una baraja de carta, os proponemos construir un juego de Blackjack.
// Documento Javascript JEFERSON NUÑEZ 1001
// Tiempo para declarar variables
var playerHand = new Array();
var dealerHand = new Array();
var playerScore;
var dealerScore;
// 2d array - Primer nivel para costumes, segundo nivel para las tarjetas
var deck = new Array();
// Creación de una matriz de mis trajes aquí para su uso posterior
var suits = [ "hearts", "diamonds", "clubs", "spades" ];
// lo mismo aquí
var cards =
[
// Aquí, creación de cada objeto individual que representa una tarjeta. Tiene nombre y un valor
{ name: "ace", value: 11 },
{ name: "2", value: 2 },
{ name: "3", value: 3 },
{ name: "4", value: 4 },
{ name: "5", value: 5 },
{ name: "6", value: 6 },
{ name: "7", value: 7 },
{ name: "8", value: 8 },
{ name: "9", value: 9 },
{ name: "10", value: 10 },
{ name: "jack", value: 10 },
{ name: "queen", value: 10 },
{ name: "king", value: 10 }
];
for (i=0; i<4; i++)
{
var suit = suits[i]; // Apoderar nuestro suit en el array
deck[i] = new Array(); // 13 cartas por juego
for (j=0; j<13; j++) // Ordena las 13 cartas del palo del array
{
var cardName = cards[j].name;
// Aquí, creamos una url de la carta, y un "tratado" propiedad para decir si lo hemos utilizado
deck[i][j] =
{
url: "images/" + suit + "/" + cardName + "_of_" + suit + ".jpg",
dealt: false,
suit: suit,
name: cards[j].name,
value: cards[j].value
};
}
}
// Esta función da a los jugadores cartas
function deal()
{
var dealerSpace = document.getElementById("dealerspace");
var playerSpace = document.getElementById("playerspace");
//Una carta oculta para el distribuidor
dealerSpace.innerHTML += "<img src='images/facedown.jpg' height='200' width='139' id='hidden'>";
//Una carta visible para el distribuidor
var card = getCard(); // Obtener una nueva carta
dealerHand.push(card);
dealerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
//Dos cartas para el jugador
card = getCard();
playerHand.push(card);
playerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
card = getCard();
playerHand.push(card);
playerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
}
function getCard() // Repetir cartas al azar
{
var randSuit = Math.floor((Math.random()*4)); // Genera un número aleatorio entre 0 y 3 para la suit
var randCard = Math.floor((Math.random()*13)); // Genera un número aleatorio entre 0 y 12 para la tarjeta
// Comprobar para ver si esta carta se ha utilizado. Si es así, generar una nueva.
while(deck[randSuit][randCard].dealt) {
randSuit = Math.floor((Math.random()*4));
randCard = Math.floor((Math.random()*13));
}
// El "tratado" puesto anteriormente lo colocamos ahora, debido a que la carta esta siendo utilizada
deck[randSuit][randCard].dealt = true;
return deck[randSuit][randCard];
}
function gameReset()
{
document.getElementById("playerspace").innerHTML=""; //Restablecer la mesa(quitar imagenes de las cartas)
document.getElementById("dealerspace").innerHTML="";
playerHand = new Array(); //Limpiar cada mano
dealerHand = new Array();
playerScore = 0; //Restablecer el contador de puntuación
dealerScore = 0;
for (var i=0; i<4; i++) //barajar los naipes
{
for (var j=0; j<13; j++)
{
deck[i][j].dealt = false;
}
}
}
function hit() //Añadir una tarjeta a la mano del jugador
{
var playerSpace = document.getElementById("playerspace");
var card = getCard();
playerHand.push(card);
playerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
}
function hitDealer()
{
//Muestra la carta oculta
var hiddenCard = getCard();
document.getElementById("hidden").src = hiddenCard.url;
dealerHand.push(hiddenCard);
dealerScore = 0;
var numAces = 0;
//Contabilizar la puntuación del distribuidor
for (i=0; i<dealerHand.length; i++)
{
dealerScore += dealerHand[i].value;
//Contar ases
if (dealerHand[i].name == "ace")
{
numAces += 1;
}
}
//Puntuaciones menores de 17 años, se sitúa en el 17 y por encima mientras que funciona el: (dealerScore < 17)
{
var dealerSpace = document.getElementById("dealerspace");
var card = getCard();
dealerHand.push(card);
dealerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
dealerScore += card.value;
if(card.name == "ace")
{
numAces += 1;
}
if (dealerScore > 21 && numAces > 0)
{
dealerScore -= 10;
numAces -= 1;
}
}
}
function pScore()
{
playerScore = 0;
for (i=0; i<playerHand.length; i++) //La suma de la puntuación
{
playerScore += playerHand[i].value;
}
for (i=0; i<playerHand.length; i++)
{
if (playerHand[i].name == "ace" && playerScore > 21) //Ajustar por ases
{
playerScore -= 10;
}
}
}
function winner()
{
if (dealerScore > 21 && playerScore > 21)
{
alert("Ambos han perdido! Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (dealerScore === playerScore)
{
alert("Han empatado! Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (playerScore > 21 && dealerScore <= 21)
{
alert("Tu Perdiste, The Dealer Ganó. Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (dealerScore > 21 && playerScore <= 21)
{
alert("The Dealer Perdió, Tu ganaste! Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (dealerScore > playerScore && dealerScore <= 21)
{
alert("The Dealer Ganó. Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (playerScore > dealerScore && playerScore <= 21)
{
alert("Ganaste! Dealer: " + dealerScore + "; Player: " + playerScore);
}
else
{
alert("Me dejaste perplejo");
}
}
// Tiempo para declarar variables
var playerHand = new Array();
var dealerHand = new Array();
var playerScore;
var dealerScore;
// 2d array - Primer nivel para costumes, segundo nivel para las tarjetas
var deck = new Array();
// Creación de una matriz de mis trajes aquí para su uso posterior
var suits = [ "hearts", "diamonds", "clubs", "spades" ];
// lo mismo aquí
var cards =
[
// Aquí, creación de cada objeto individual que representa una tarjeta. Tiene nombre y un valor
{ name: "ace", value: 11 },
{ name: "2", value: 2 },
{ name: "3", value: 3 },
{ name: "4", value: 4 },
{ name: "5", value: 5 },
{ name: "6", value: 6 },
{ name: "7", value: 7 },
{ name: "8", value: 8 },
{ name: "9", value: 9 },
{ name: "10", value: 10 },
{ name: "jack", value: 10 },
{ name: "queen", value: 10 },
{ name: "king", value: 10 }
];
for (i=0; i<4; i++)
{
var suit = suits[i]; // Apoderar nuestro suit en el array
deck[i] = new Array(); // 13 cartas por juego
for (j=0; j<13; j++) // Ordena las 13 cartas del palo del array
{
var cardName = cards[j].name;
// Aquí, creamos una url de la carta, y un "tratado" propiedad para decir si lo hemos utilizado
deck[i][j] =
{
url: "images/" + suit + "/" + cardName + "_of_" + suit + ".jpg",
dealt: false,
suit: suit,
name: cards[j].name,
value: cards[j].value
};
}
}
// Esta función da a los jugadores cartas
function deal()
{
var dealerSpace = document.getElementById("dealerspace");
var playerSpace = document.getElementById("playerspace");
//Una carta oculta para el distribuidor
dealerSpace.innerHTML += "<img src='images/facedown.jpg' height='200' width='139' id='hidden'>";
//Una carta visible para el distribuidor
var card = getCard(); // Obtener una nueva carta
dealerHand.push(card);
dealerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
//Dos cartas para el jugador
card = getCard();
playerHand.push(card);
playerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
card = getCard();
playerHand.push(card);
playerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
}
function getCard() // Repetir cartas al azar
{
var randSuit = Math.floor((Math.random()*4)); // Genera un número aleatorio entre 0 y 3 para la suit
var randCard = Math.floor((Math.random()*13)); // Genera un número aleatorio entre 0 y 12 para la tarjeta
// Comprobar para ver si esta carta se ha utilizado. Si es así, generar una nueva.
while(deck[randSuit][randCard].dealt) {
randSuit = Math.floor((Math.random()*4));
randCard = Math.floor((Math.random()*13));
}
// El "tratado" puesto anteriormente lo colocamos ahora, debido a que la carta esta siendo utilizada
deck[randSuit][randCard].dealt = true;
return deck[randSuit][randCard];
}
function gameReset()
{
document.getElementById("playerspace").innerHTML=""; //Restablecer la mesa(quitar imagenes de las cartas)
document.getElementById("dealerspace").innerHTML="";
playerHand = new Array(); //Limpiar cada mano
dealerHand = new Array();
playerScore = 0; //Restablecer el contador de puntuación
dealerScore = 0;
for (var i=0; i<4; i++) //barajar los naipes
{
for (var j=0; j<13; j++)
{
deck[i][j].dealt = false;
}
}
}
function hit() //Añadir una tarjeta a la mano del jugador
{
var playerSpace = document.getElementById("playerspace");
var card = getCard();
playerHand.push(card);
playerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
}
function hitDealer()
{
//Muestra la carta oculta
var hiddenCard = getCard();
document.getElementById("hidden").src = hiddenCard.url;
dealerHand.push(hiddenCard);
dealerScore = 0;
var numAces = 0;
//Contabilizar la puntuación del distribuidor
for (i=0; i<dealerHand.length; i++)
{
dealerScore += dealerHand[i].value;
//Contar ases
if (dealerHand[i].name == "ace")
{
numAces += 1;
}
}
//Puntuaciones menores de 17 años, se sitúa en el 17 y por encima mientras que funciona el: (dealerScore < 17)
{
var dealerSpace = document.getElementById("dealerspace");
var card = getCard();
dealerHand.push(card);
dealerSpace.innerHTML += "<img src='" + card.url + "' height='200' width='139'>";
dealerScore += card.value;
if(card.name == "ace")
{
numAces += 1;
}
if (dealerScore > 21 && numAces > 0)
{
dealerScore -= 10;
numAces -= 1;
}
}
}
function pScore()
{
playerScore = 0;
for (i=0; i<playerHand.length; i++) //La suma de la puntuación
{
playerScore += playerHand[i].value;
}
for (i=0; i<playerHand.length; i++)
{
if (playerHand[i].name == "ace" && playerScore > 21) //Ajustar por ases
{
playerScore -= 10;
}
}
}
function winner()
{
if (dealerScore > 21 && playerScore > 21)
{
alert("Ambos han perdido! Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (dealerScore === playerScore)
{
alert("Han empatado! Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (playerScore > 21 && dealerScore <= 21)
{
alert("Tu Perdiste, The Dealer Ganó. Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (dealerScore > 21 && playerScore <= 21)
{
alert("The Dealer Perdió, Tu ganaste! Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (dealerScore > playerScore && dealerScore <= 21)
{
alert("The Dealer Ganó. Dealer: " + dealerScore + "; Player: " + playerScore);
}
else if (playerScore > dealerScore && playerScore <= 21)
{
alert("Ganaste! Dealer: " + dealerScore + "; Player: " + playerScore);
}
else
{
alert("Me dejaste perplejo");
}
}
CALIFICACIÓN PROYECTO FINAL
TEST DE APRENDIZAJE
JEFERSON NUÑEZ
1001
Muchas pero muchas gracias, en serio estoy mas que agradecida x su ayuda, me fue muy util toda la guia de cada uno de sus modulos de programaciòn con javascript
ResponderBorrar