Giter VIP home page Giter VIP logo

ace's People

Contributors

imbrn avatar maxwelfcoelho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ace's Issues

Change Scene draw API

Instead of using this.canvas inside a Scene implementation of draw method, it's more appropriate and favors encapsulation to use canvas as an argument of that.

We can see an example in the moving-ball example:

draw(): void {
this.canvas.fillStyle = "black";
this.canvas.fill(rect({ x: 0, y: 0, width: this.resolution.width, height: this.resolution.height }));
this.canvas.fillStyle = "green";
this.canvas.fill(circle({ x: this.x, y: this.y, radius: 50 }));
}

After this API change it should look like:

draw(canvas: Canvas): void { 
   canvas.fillStyle = "black"; 
   canvas.fill(rect({ x: 0, y: 0, width: this.resolution.width, height: this.resolution.height })); 
    
   canvas.fillStyle = "green"; 
   canvas.fill(circle({ x: this.x, y: this.y, radius: 50 })); 
 }

In this way, we can avoid exposing canvas abstraction to the whole scene but just for the drawing step.

Support transformation

Support some kind of transformation system so that objects of the game can be translated, scaled and rotated.

Easing functions

Implement a mechanism for using Easing functions. It should be considered related to an animation module.

This module probably depends on #22 (Supports transformation)

Support sprites

For this issue, we must consider scaling up/down images as the sprites should fit into the canvas based on the scene resolution. For this reason, maybe it's important to define a way for scaling areas using the coordinates-system module.

Also, at this first version, we shouldn´t worry about offering a lot of algorithms for scaling up/down images, but I think using the Nearest Neighbour Algorithm is enough for now.

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.