GithubHelp home page GithubHelp logo

devleague / js-zombies Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mrbarbasa/js-zombies

0.0 7.0 202.0 5.59 MB

An object-oriented programming exercise modeling a basic player vs. zombie game.

CSS 0.95% JavaScript 98.84% HTML 0.21%

js-zombies's Introduction

JavaScript Zombies

  1. Navigate to this project in your terminal.
  2. Run live-server.
  3. Open http://localhost:8080 in Chrome. You should see failing tests.
  4. Complete the exercise by following the comments in zombies.js or the README.

For each test you complete:

  1. Save zombies.js.
  2. Reload http://localhost:8080 in Chrome.
  3. Check if the test passes.
  4. If it passes, commit your work.

Item(name)

Creates an item.

Parameters name: string, The item's name.

Public Properties name: string


Weapon(name, damage)

Creates a weapon item. Weapon items can be equipped for use in battle.

The Weapon class constructor will call the super class Item constructor while passing in the 1 Item constructor param

Parameters name: string, The weapon's name. damage: number, The weapon's damage.

Public Properties damage: number

Weapon Extends Item Class

The Weapon class will extend the Item class.


Food(name, energy)

Creates a food item. Food items give energy, restoring health to the player.

The Food class constructor will call the super class Item constructor while passing in the 1 Item constructor param

Parameters name: string, The food's name. energy: number, The energy the food provides.

Public Properties energy: number

Food Extends Item Class

The Food class will extend the Item class.


Player(name, health, strength, speed)

Creates a player in a zombie-infested world.

Player Constructor method

Parameters name: string, The player's name. health: number, The player's health. strength: number, The player's strength. speed: number, The player's speed.

Private Properties pack: array, Default value should be empty. maxHealth: number, Default value should be set to health.

Public Properties name: string health: number strength: number speed: number isAlive: boolean, Default value should be true. equipped: Weapon/boolean, Default value should be false.

Player.Methods

getPack()

Player accesses his pack

Returns private variable pack in Array form.


getMaxHealth()

How Sick are you?

Returns private variable maxHealth.


takeItem(item)

Player takes an item from the world and places it into their pack.

Player's pack can only hold a maximum of 3 items, so if they try to add more than that, return false. Before returning true or false, print a message containing the player and item names if successful. Otherwise, print a message saying that the pack is full so the item could not be stored. Note: The player is allowed to store similar items (items with the same name). You should be able to invoke this function on a Player instance.

Parameters item: Item/Weapon/Food, The item to take.

Returns: boolean, Whether player was able to store item in pack.


discardItem(item)

Player discards an item from their pack.

Use Array's indexOf method to check if the pack contains the item. If an item is not found in the pack, indexOf returns -1. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

If the item is in the pack, remove it from the pack using Array's splice method. Note: The splice method can also be used for array element replacement. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice Then print the player and item names and a message saying the item was discarded. Return true for the successful discard.

If the item is not in the pack, return a message with the item name saying nothing was discarded since the item could not be found. Return false in this case.

You should be able to invoke this function on a Player instance.

Parameters item: Item/Weapon/Food, The item to discard.

Returns: boolean, Whether player was able to remove item from pack.


checkPack()

Player checks the contents of their pack.

Nicely format and print the items in the player's pack. To access the pack, be sure to use Player's getPack method. You should be able to invoke this function on a Player instance.


equip(itemToEquip)

Player equips a weapon item.

Player can only equip Weapon instances. Player can only equip weapon items from their pack.

If the player already has a weapon equipped (the equipped property is set to an Item), find the itemToEquip in the pack and replace it with the currently equipped item. Then set the equipped property to the itemToEquip.

However, if the player has nothing equipped, simply equip itemToEquip and remove it from the pack. You should be able to invoke this function on a Player instance.

Parameters itemToEquip: Weapon, The weapon item to equip.


eat(itemToEat)

Player eats a food item, restoring their health.

Player can only eat Food instances. Player can only eat food items from their pack.

Remove itemToEat from the pack. Increase the player's health by the food's energy amount, but do not exceed the player's max health. If exceeded, simply set player's health to max health instead. To access the player's max health, be sure to use Player's getMaxHealth method. You should be able to invoke this function on a Player instance.

Parameters itemToEat: Food, The food item to eat.


useItem(item)

Player uses an item from the pack.

If the item is a weapon, the player should equip the item. If the item is food, the player should eat the item. You should be able to invoke this function on a Player instance.

Parameters item: Item/Weapon/Food, The item to use.


equippedWith()

Player checks their equipment.

Prints the player's name and equipped weapon's name. If nothing is equipped, prints a message saying so. Also returns the equipped weapon's name or false if nothing is equipped. You should be able to invoke this function on a Player instance.

Returns: weapon name or false: string/boolean, Weapon name or false if nothing is equipped.


Zombie (health, strength, speed)

Creates a normal zombie.

Parameters health: number, The zombie's health. strength: number, The zombie's strength. speed: number, The zombie's speed.

Private Properties maxHealth: number, Default value should be set to health.

Public Properties health: number strength: number speed: number isAlive: boolean, Default value should be true.


FastZombie(health, strength, speed)

Creates a fast zombie.

The FastZombie class will extend the Zombie class.

Parameters health: number, The zombie's health. strength: number, The zombie's strength. speed: number, The zombie's speed.

FastZombie Extends Zombie Class

The FastZombie class will extend the Zombie class.


StrongZombie(health, strength, speed)

Creates a strong zombie.

The StrongZombie class will extend the Zombie class.

Parameters health: number, The zombie's health. strength: number, The zombie's strength. speed: number, The zombie's speed.

StrongZombie Extends Zombie Class

The StrongZombie class will extend the Zombie class.


RangedZombie(health, strength, speed)

Creates a ranged zombie.

The RangedZombie class will extend the Zombie class.

Parameters health: number, The zombie's health. strength: number, The zombie's strength. speed: number, The zombie's speed.

RangedZombie Extends Zombie Class

The RangedZombie class will extend the Zombie class.


ExplodingZombie(health, strength, speed)

Creates an exploding zombie.

The ExplodingZombie class will extend the Zombie class.

Parameters health: number, The zombie's health. strength: number, The zombie's strength. speed: number, The zombie's speed.

ExplodingZombie Extends Zombie Class

The ExplodingZombie class will extend the Zombie class.

js-zombies's People

Contributors

joekarlsson avatar mrbarbasa avatar nakaz avatar sgnl avatar theremix avatar thgaskell avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

js-zombies's Issues

non-differing types

Refactor the end of the exerice

FastZombie StrongZombie RangedZombie ExplodingZombie

ideas are, new properties, if it makes sense

add methods to each subclass, where it makes sense

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.