Penguins vs. Communists

Penguins vs. Communists

The year is 1950 during the Cold War. The Soviet communists are making plans to invade Antarctica. The penguins of the south aren't going down without a fight.

You will decide the fate of the penguins or communists through Javascript callbacks.

Assignment Requirements

  • Create two parties (Create a Javascript class and use the new keyword to instantiate the parties)
  • Each party has a name ("Penguins" and "Communists" - or whatever you want)
  • Each party has a starting population of 1,000,000
  • Flip a coin (random number between 1 and 2) to see which party attacks first
    • This will just be a randomly generated number (Hint: Math.random(); Also this will happen only one time and at the beginning of your game)
  • Create a function called sendNuke(party, onHit, onMiss) where:
  • the first parameter party is the Javascript object of the party that will be attacked
  • the second parameter onHit is a callback function that will be called if the attack is successful
  • the third parameter onMiss is a callback function that will be called if the attack is unsuccessful
  • the onHit and onMiss functions each take one parameter of type party (just forwarding the party you already passed into sendNuke)
  • Print messages in the callbacks that are appropriate - e.g. if the attack missed then it would log "The Penguins' nuke missed the Communists and instead landed in the ocean" or something along those lines
  • A random algorithm will be used to determine if the attack is a miss or a hit (this can happen in the sendNuke function
  • If an attack is successful initiate a random damage amount
  • After an attack is completed (or missed) the opposing party will initiate an attack.
  • This process will repeat until one of the parties reaches a 0 population

This will assess your understanding of the following topics:

  • Objects/Associative Arrays
  • Constructors or "Classes"
  • Callback functions
  • Functional programming concepts

Passing off this exercise completes Programming Principles Level 3 in the Super Transcript.

Extra Credit

For a better user experience, add some delay between attacks using setInterval. You won't be able to do this inside of a loop, so you'll need to learn about clearInterval as well.