export default class Terrain {
constructor(canvas, textures) {
this.Canvas = canvas;
this.Textures = textures;
this.Columns = this.Canvas.Height / 2 / 32;
this.Rows = this.Canvas.Width / 2 / 32;
this.MapWidth = this.Rows * 32;
this.MapHeight = this.Columns * 32;
this.DrawGrid();
}
DrawGrid() {
for (let yGrid = 0; yGrid < this.Columns; yGrid++) {
for (let xGrid = 0; xGrid < this.Rows; xGrid++) {
const x = 32 * xGrid + this.MapWidth / 2;
const y = 32 * yGrid + this.MapHeight / 2;
const modulus = xGrid % 2;
if (!modulus) {
this.Canvas.Context.drawImage(this.Textures[yGrid !== 9 ? 0 : 1], x, y)
} else {
this.Canvas.Context.drawImage(this.Textures[yGrid !== 9 ? 2 : 3], x, y)
}
}
}
console.log("Terrain :");
console.log("Columns : " + this.Columns + " Rows : " + this.Rows + " Width : " + this.MapWidth + " Height : " + this.MapHeight);
}
}
C'est beaucoup plus clean comme ça mais c'est pas encore parfait :
- Utilises des const ou des let, jamais de var pour déclarer les variables.
- Modifies ton tableau Textures et transforme le en objet, ex :
const textures =
{
greenTile: "tonString",
greenBorderTile: "tonString2",
darkGreenTile: "tonString3",
darkGreenBorderTile: "tonString4"
}
C'est beaucoup plus lisible dans le code de savoir à quoi ça fait référence :
yGrid !== 9 ? this.texture.greenTile : this.texture.greenBorderTile
- Respectes les conventions du JS : les noms des properties en camelCase, les fonctions aussi. Là dans ton code tu te trimballes du PascalCase pour ton code à toi et les fonctions natives sont en camelCase c'est pas sexy
- Tu peux aussi utiliser des variables globales ou mieux générifier ton code pour qu'il soit plus facilemment maintenable : le 32, le 9 qui se balladent ça demande réflexion à relire alors que tu pourrais l'avoir en tant que variable ex : rowLength, lineLength
Tu as l'air de venir d'un langage basé sur la POO style C#. Saches que les conventions diffèrent en JS car c'est un langage basé sur les prototypes et non la POO. Cependant, ça demande de l'investissement pour bien saisir les principes donc c'est quelque chose que tu pourrais aborder si tu souhaites poursuivre dans ce langage !
Message édité le 22 mars 2021 à 12:53:44 par Pathos-II