Day 11 of learning JavaScript: Objects and logical operators

Today I finished the blackjack app and I also learned two new fundamental things in JavaScript. First, I have learned about logical operators. "&&" stands for "and" and "||" stands for or. I applied this to the Blackjack app so that we can only trigger the newCard() function if we are alive and if we do not have Blackjack.

function newCard(){

    if(isAlive === true && hasBlackJack === false){ // the case gets executed if BOTH conditions are true
        let card = getRandomCard()
        sum += card
        cards.push(card)
        renderGame()
    }

}

// if we would have "||" as logical operator, then the case would be executed if one of both conditions are true

After I learned this, the Blackjack app was nearly finished. The only thing I needed to add was my name and my coins. And that is where I learned about objects. An object is a complex data type where you can store data, just like arrays.

let person = { // that's how you define an object (curly braces)
    name: "My Name", // the syntax within the object is different then outside
    coins: "200", // the properties that you create are kept apart through commas
    sayHello: function(){ // you can also define functions in an object. Such a function is called method.
        console.log("Hello")
    }
}

person.sayHello() // you call the properties through object.property

That is how you create an object. I wanted to use this on the Blackjack app, so I created an empty paragraph in the HTML with the id = "player-el". Then the properties I created should be shown in the paragraph:

let player = { //object
     name :"Sven", //properties
     chips : 200
}

let cards = [] 
let sum = 0
let hasBlackJack = false
let isAlive = false 
let message = ""
let messageEl = document.querySelector("#message-el")
let sumEl = document.querySelector("#sum-el")
let cardsEl = document.querySelector("#cards-el")





let playerEl = document.querySelector("#player-el") // get Element
playerEl.textContent = player.name + ": $" + player.chips // change content of the element to the desired properties etc.

After that, the Blackjack app was finished and I learned very much JavaScript with this project. Here are the final codes:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" >
    <meta http-equiv="X-UA-Compatible" content="IE=edge" >
    <meta name="viewport" content="width=device-width, initial-scale=1.0" >
    <title>Blackjack</title>
    <link rel="stylesheet" href="style.css" >
  </head>
  <body>
      <h1>Blackjack</h1>
      <p id="message-el">Want to play a round?</p>
      <p id="cards-el">Cards:</p>
      <p id="sum-el">Sum:</p>
      <button id="start-btn" onclick="startGame()">Start Game</button>
      <button id="newCard-btn" onclick="newCard()">New Card</button>
      <p id="player-el"></p>
      <script src="index.js"></script>
  </body>
</html>
body{
    text-align: center;
    font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
    color: white;
    background-image: url("images/table.jpg");
    background-size: cover;
    font-weight: bold;
}

h1{
    color: goldenrod;
}

#message-el {
    font-style: italic;
}

button{
    width: 150px;
    color: #016f32;
    background-color: goldenrod;
    padding: 0.25rem;
    border: none;
    border-radius: 3rem;
    font-weight: bold;
    margin-bottom: 2px;
    margin-top: 2px;
}
let player = {
     name :"Sven",
     chips : 200
}

let cards = [] 
let sum = 0
let hasBlackJack = false
let isAlive = false 
let message = ""
let messageEl = document.querySelector("#message-el")
let sumEl = document.querySelector("#sum-el")
let cardsEl = document.querySelector("#cards-el")





let playerEl = document.querySelector("#player-el")
playerEl.textContent = player.name + ": $" + player.chips

function getRandomCard(){
    let randomNumber = Math.floor( Math.random() * 13) +1;
    if(randomNumber === 1){
        randomNumber = 11
    }
    else if (randomNumber > 10){
        randomNumber = 10
    }

    return randomNumber

}


function startGame(){
    isAlive = true
    let firstCard = getRandomCard()
    let secondCard = getRandomCard()
    cards = [firstCard, secondCard] 
    sum = firstCard + secondCard
    renderGame()
}

function renderGame(){

    cardsEl.textContent = "Cards: "
    for(let i = 0; i<cards.length; i++){
        cardsEl.textContent += cards[i] + " "
    }

    sumEl.textContent = "Sum: " +sum

    if (sum <= 20){
        message = "Do you want to draw a new card?"
        messageEl.textContent = message
    }
    else if (sum === 21){
        message = "You've got Blackjack!"
        hasBlackJack = true
        messageEl.textContent = message
    }
    else {
        message = "You're out of the game!"
        isAlive = false
        messageEl.textContent = message
    }


}

function newCard(){

    if(isAlive === true && hasBlackJack === false){
        let card = getRandomCard()
        sum += card
        cards.push(card)
        renderGame()
    }

}

I hope you also learned valuable information with this project!