Code Monkey home page Code Monkey logo

yoshisadventure's Introduction

Yoshi's adventure

Wat is het?

Yoshi's Adventure is space invaders in een Mario jasje. Het doel is om zo veel mogelijk punten te scoren door vijanden dood te maken. Laat je een vijand door dan verlies je punten. Als je dood ( door tegen een vijand aan te vliegen ) bent begin je weer vanaf het begin.

Er is ook een powerup te krijgen in het spel (sneeuwvlokje), deze geeft je een voordeel voor een bepaalde tijd.

https://cirflexx.github.io/YoshisAdventure/

Controls

  • Spatie/linker muisknop = schieten
  • W = omhoog
  • A = Naar links
  • S = Naar beneden
  • D = Naar rechts

Rechts boven in de hoek staat een refresh knop, als je op deze klikt wordt de website opnieuw geladen.

Installatie

  • Fork dit project naar een map die makkelijk voor jou te berijken is.
  • Open het in je favoriete programma om in te programmeren ( Kladblok, Visual Code, Webstorm, etc...).
  • Ga naar de map docs en klik op index.HTML om het spel lokaal te spelen.

Toepassingen

  • Strategy - Dee strategy pattern bevat het gedrag van Yoshi. De interface heet Behaviour. Dit wordt gebruikt om te bewegen schieten en dood te gaan.
  • Observer - Game is een Subject die checkt of Yoshi en de powerup elkaar raken. Als dit zo is stuurt deze een notifier af aan alle enemies. Deze worden dan voor 5 seconden erg sloom.
  • Singleton - Deze heb ik aangemaakt in de game.ts, zodat deze in elke andere class is aan te spreken zonder gedoe. Wordt meerdere keren gebruikt in yoshi.ts.
  • Interface - Gebruikt bij de strategy pattern en observer pattern. Bij strategy in behavior.ts. Bij observer in observer.ts en subject.ts.
  • Encapsulation - In bijna elke file zit incapsulation, dit staat bovenaan de file.
  • Composition - Dit heb ik gebruikt in Game, Yoshi, vehicleCloud en elke file in de Enemies map. Bijvoorbeeld in game.ts wordt een Goomba gemaakt. Deze geeft "container" en "this" mee, omdat de class Goomba hierom vraagt in de constructor (parent, subject:Subject);
  • Abstract class - enemies.ts is een abstract class. Hierdoor kan deze niet aangemaakt worden als een object. ( bv. this.enemy = new Enemy() kan niet meer).
  • Static class - In de utils.ts wordt er gechecked voor collision. Dit is een static class en wordt aangeroepen in de onCollision functie in game.ts.
  • Library - Ik heb greensock gebruikt om animaties te tonen. Zo wordt de score in het eindscherm voor de speler opgeteld en de refreshknop naar het midden gebracht(van rechtsboven). Ook zijn de animaties die eerst in de css waren vervangen door code in de game.ts.
  • Namespaces - In de player map en enemies map heb ik alle classes een namespace gegeven (behalve enemies.ts). Dit heb ik gedaan zodat mensen die de code lezen meteen weten of er een enemy of speler in het spel wordt gemaakt. Ook waren er 2 flying koopa's (rood en groen) hier was eerst geen onderscheid in te zien in de code, nu wel.
  • Enumeration - Staat in de enumerations folder. Hierin worden de keycodes omgezet in constanten die ik gebruik in yoshi.ts voor bewegen en schieten.
  • Polymorfisme - In game.ts wordt er in onCollision() door de Array met enemies heen geloopt. Door deze loop wordt de draw functie voor elke enemy aangeroepen.
  • Game Loop - In game.ts wordt in de constructor de functie gameloop aangeroepen. Deze roept de functies die erin staan constant uit omdat Game Loop zichzelf aanroept. Hierdoor wordt alles binnen Gameloop geupdated.
  • Inheritance - Goomba, Koopa, Lakitu en de andere vijanden erven van enemy.ts. Enemy.ts is een child van gameObject.ts. Yoshi, vihicleCloud en Egg erven ook van gameObject.ts.

UML

alt text


yoshisadventure's People

Contributors

cirflexx avatar rvleeuwen1992 avatar

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.