conditionals lesson hacks
conditionals hacks
Popcorn Hacks:
Develop a basic combat system that allows characters to engage in battles with enemies. This will help you practice using functions, conditionals, and basic game mechanics in JavaScript.
Popcorn Hack Part 1 - 1: Using initializeData Function
- Add 
speedto theinitializeData(data = null)function and give it a default value. - Add 
seedto the HTML output. - Add 
speedto the JSON data. - Test calling 
initializeDatawith no argument, and then using adataJSON object as an argument. 
Popcorn Hack Part 1 - 2: Adding IJKL Key Conditions in handleKeyDown
- Add a 
casestatement for each of the IJKL keys in thehandleKeyDown({ keyCode })switch statement. - Send the key code for each IJKL key to the 
gameObject.handleKeyDownmethod. - Use 
console.log()to outputgameObject. 
Popcorn Hack 2: Creating a Simple Attack System
- Add a 
booleanvariable namedcanAttack, and set it tofalse. - Use an 
ifstatement to check if the player can attack. - If 
canAttackisfalse, output “Can’t attack.” - Use 
Math.random()to determine if the player is allowed to attack. (Tip: Use ChatGPT for help withMath.random()if needed!) - This will pick a random number to decide if the attack can happen.
 - Use 
console.log()for all outputs. 
Popcorn Hack 3: Level Requirement Check
- Use the 
ternary operatorto create an output if the player meets the level requirements. - If not, output a message telling the player they are under-leveled.
 - Use 
console.log()to print your output. 
Homework:
Objectives
  
Option 1: Create a simple combat system.
- Allow characters to fight enemies.
 - Use basic functions and conditionals in JavaScript.
 - Focus on making it easy to understand how battles work.
 
  Option 2: Make a dialogue system for your NPC (Non-Player Character).
- Use the 
prompt()function to ask the player for a response (choose a number from 1 to 4). - This dialogue should appear when the player gets close to the NPC and presses a button.
 
</span>
Additional Tips:
- For Option 1:
    
- Start by writing down what the characters and enemies will be. Create simple names and attributes (like health).
 - Use 
console.log()to print out what's happening at each step. This will help you understand the flow of your code. - Look for example code online to see how others have created combat systems. Don't be afraid to borrow ideas!
 
 - For Option 2:
    
- Plan out the dialogue options before you start coding. Write them down in a list.
 - Use comments in your code to remind yourself what each part does. For example, 
// Ask the player for a response. - Test your code frequently. After writing a few lines, run it to see if it works before adding more.
 
 
%%html
<!-- HTML output div -->
<div id="message"></div>
<script>
    function runWhenDOMLoaded() {
        const messageElement = document.getElementById("message");
        function displayMessage(message) {
            console.log(message); // Log to console
            messageElement.textContent = message; // Display on the webpage
        }
        // Initial greeting
        displayMessage('A red fish greets you "Hi!"');
        // Get user input
        const userChoice = prompt("What do you do: 1. Greet, 2. Insult, 3. Ignore. Type the number of your choice:");
        // Handle the user's choice using conditions
        if (userChoice === "1") {
            displayMessage("You greet back! The fish smiles and continue the conversation.");
        } else if (userChoice === "2") {
            displayMessage('"Go kys you stupid ass bitch" you say. The fish slaps you lol.');
        } else if (userChoice === "3") {
            displayMessage('You ignore the fish. They mumble something along the lines of "rude...".');
        } else {
            displayMessage("That's not a valid choice. Please try again!");
        }
    }
    // Ensure the function runs only after the page loads
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', runWhenDOMLoaded);
    } else {
        runWhenDOMLoaded();
    }
</script>
%javascript
class GameObject {
    constructor() {
        this.velocity = { x: 0, y: 0 };
        this.direction = '';
        this.xVelocity = 1;
        this.yVelocity = 1;
    }
    handleKeyDown({ keyCode }) {
        switch (keyCode) {
            case 73: // 'I' key
                this.direction = 'up';
                break;
            case 74: // 'J' key
                this.direction = 'left';
                break;
            case 75: // 'K' key
                this.direction = 'down';
                break;
            case 76: // 'L' key
                this.direction = 'right';
                break;
        }
    }
}
// Example usage
const gameObject = new GameObject();
console.log('Initial State:', gameObject);
gameObject.handleKeyDown({ keyCode: 73 }); // Simulate 'I' key press
console.log('After I Key Press:', gameObject);
gameObject.handleKeyDown({ keyCode: 74 }); // Simulate 'J' key press
console.log('After J Key Press:', gameObject);
gameObject.handleKeyDown({ keyCode: 75 }); // Simulate 'K' key press
console.log('After K Key Press:', gameObject);
gameObject.handleKeyDown({ keyCode: 76 }); // Simulate 'L' key press
console.log('After L Key Press:', gameObject);
%%html
<output id="output1"></output>
<script>
function intializeData(data = null) {
    // Define default values
    let scaleFactor = 9/16;
    let animationRate = 1;
    let position = [0, 0];
    // add speed with default value 0
    let speed = 1;
    // Check if data is provided
    if (data) {
        scaleFactor = data.SCALE_FACTOR || scaleFactor;
        animationRate = data.ANIMATION_RATE || animationRate;
        position = data.INIT_POSITION || position;
        speed = data.SPEED || speed;
        
    }
    document.getElementById("output1").innerHTML = `
        <p>Scale Factor: ${scaleFactor}</p>
        <p>Animation Rate: ${animationRate}</p>
        <p>Initial Position: ${position}</p>
        <p>Initial Speed: ${speed}</p>
    `;
}
var data = {
    SCALE_FACTOR: 1/1,
    ANIMATION_RATE: 25,
    INIT_POSITION: [100, 100],
    SPEED: 10
}
// Uncomment one of the following lines to test the if statement in the function
//intializeData();
intializeData(data);
</script>
%%js
let canAttack = false
if (canAttack){
    console.log("Can Attack")
}
else{
    console.log("Can't Attack")
}
canAttack = Math.random() < 0.5 ? true : false
if (canAttack){
    console.log("Can Attack")
}
else{
    console.log("Can't Attack")
}