Penguins JS Lessons

Download Homework
Submission Google Form for Homework

Data Abstraction Homework

In order to learn this subject of programming well, you have to practice:

Popcorn hack 1: Data Abstraction with functions

Popcorn hack 2: Data abstraction with classes

Final Task: Building a player system using classes and functions


Popcorn Hack 1 (Progress Check)

Data abstraction with functions:

Part 1: Edit the Account() function to print out the username and password to the console using console.log().

Part 2: Edit the ChangeUsername() function to accept a newUsername parameter, then set the username variable to the newUsername parameter.

Part 3: Edit the ChangePassword() function to accept a newPassword parameter, then set the password variable to the newPassword parameter.

Part 4: Make the Login() function check if the parameters _username and _password are equal to the username and password variables, then print out if the login succeeded or failed using console.log().

%% javascript
// put popcorn hack 1 code here:

let username = "Giuseppe";
let password = "giuseppe_very_awesome_password";

// part 1
function Account() {
	console.log("Username: " + username + ", Password: " + password);
}

// part 2
function ChangeUsername() {
	\	username = "NewUsername";
	console.log("New Username: " + username);
}

// part 3
function ChangePassword() {
	\	password = "NewPassword123";
	console.log("New Password: " + password);
}

// part 4
function Login(_username, _password) {
	if (/* check if equal */ && /* check if equal */) {
		// print out logged in succesfully
		console.log("Logged in successfully");
		return true;
	}
	else {
		// print out log in failure
		console.log("Log in failed");
		return false;
	}
}


<IPython.core.display.Javascript object>

Popcorn Hack 2 (Progress Check)

Use the examples provided in the lesson if you’re stuck.

Part 1: Make a class named House

Part 2: Make a constructor for the House class with the parameters cost, age, and size

Part 3: Make an instance of the House class with the name myHouse and fill the parameters with any numbers you want.

Write your code down here:

%% javascript

class house {
    constructor(cost, age, size) {
        this.cost = cost;
        this.age = age;
        this.size = size;
    }
}
let myHouse = new house(300000, 10, 2000);
console.log("The House costs $" + myHouse.cost + ", is " + myHouse.age + " years old, and is " + myHouse.size + " square feet.");
<IPython.core.display.Javascript object>

Final task

Part 1: Create 2 variables in the constructor like this: this.variableName = something. These variables will be called: this.positionX, this.velocityX.

Part 2: Create 2 methods called MoveLeft() and MoveRight(),
inside MoveLeft() set ‘this.velocityX’ to -200.
inside MoveRight() set ‘this.velocityX’ to 200.

Part 3: Create a function called UpdatePosition(). Inside this function, add ‘this.velocityX’ to ‘this.positionX’

Part 4: Call each method (MoveLeft(), MoveRight(), UpdatePosition() ), on the player object.

%% javascript
// final task code goes here:

class Player {
	// part 1
	constructor() {
		this.positionX = 0;
		this.velocityX = 0;
	}

	// part 2
	//Create 2 methods called `MoveLeft()` and `MoveRight()`, <br> inside MoveLeft() set 'this.velocityX' to -200. <br>inside MoveRight() set 'this.velocityX' to 200.
	MoveLeft() {
		this.velocityX = -200;
		console.log("VelocityX: " + this.velocityX);
	}

	MoveRight() {
		this.velocityX = 200;
		console.log("VelocityX: " + this.velocityX);
	}
	// part 3
	UpdatePosition() {
		this.positionX += this.velocityX * 0.016; // assuming 60 FPS, so delta time is ~0.016 seconds
		console.log("PositionX: " + this.positionX);
	}
}

// part 4
let player = new Player;

// call the functions on player here:

player.MoveRight();
player.UpdatePosition();
player.MoveLeft();
player.UpdatePosition();

<IPython.core.display.Javascript object>

Grading

Popcorn Hack 1: Completion gives 0.2 points.

Popcorn Hack 2: Completion gives 0.3 points.

Final Task: Completion gives 0.5 points. Max of 0.02 extra points from extra work relevant to the subject or finishing assignment in a way that shows exceptional comprehension of the lesson.


Make sure to submit your homework deployed link onto the global homework submission google sheet

Submission Google Form for Homework