Würdet ihr dieses Projekt als "fortgeschritten" bezeichnen?
Hi! Seit einigen Jahren "lerne" ich javascript. Hab viele Pausen gehabt und nie wirklich was größeres entwickelt. Das ist mein erstes etwas grösseres Projekt, welches ein mobile game ist:
https://github.com/MyCodeNotWorking/Ballon_game
online testen (wenn ihr auf pc seid: developer tools -> in die Handy ansicht gehen -> Seite refreshen):
https://fly-balloon.netlify.app/ (ist nh absolute early development version).
Notes: ich hab kein einziges framework oder library benutzt. Alles wurde von grund auf geschrieben. Wie würdet ihr meine Kenntnisse anhand dieses githubs bewerten? Ich würde es als Anfänger-javascript einranken. Kann es halt gar nicht einschätzen, da ich noch nie wirklich "professionelles" angeschaut habe und es auch nur als hobby mache.
Mfg Weißbrot
1 Antwort
Hi WeissBrot965,
da du Klassen verwendest sowie Module. Ist dein Code fortgeschritten. Aber es gibt einige Dinge die man optimieren könnte. Nutze doch das ganze Potential von JavaScript aus und nutze unterschiedliche Schleifen-Arten. Zudem solltest du Semikolon verwenden, auch wenn es die automatisches Semikolon-Einfügung gibt, kann es zu auch zu Problemen führen. Es wird empfohlen dieses zu verwenden um Fehlerquellen zu minimieren. Es ist auch gängige Praxis dies zu tun.
Du kannst das ganze semmantischer machen und dein Skript in den Head-bereich packen. Da kannst du abfragen ob der DOM geladen wurde.
Also deine JavaScript-Sammlung ist fortgeschritten, aber um professionell zu arbeiten kommen noch einige Dinge vor die du optimieren kannst.
import { canvas, c } from "./canvas.js";
import title_screen from "./scenes/Title_Screen/Title_Screen.js";
import power_up_menu from "./scenes/Power_up_menu/Power_up_menu.js";
export let frame_counter = 0;
export let game;
class Main {
constructor() {
this.scene = title_screen;
//this.scene = power_up_menu;
}
loopObjects(objects, method) {
for(let i = 0; i < objects.length; i++) {
if(objects[i][method] !== undefined) {
objects[i][method]();
}
if(objects[i].ui_objects !== undefined && method === "update") {
this.loopObjects(objects[i].ui_objects, method);
}
if(objects[i].game_objects !== undefined && method === "update") {
this.loopObjects(objects[i].game_objects, method);
}
}
}
update() {
this.loopObjects(this.scene.ui_objects, "update");
this.loopObjects(this.scene.game_objects, "update");
if(this.scene.update !== undefined) {
this.scene.update();
}
}
draw() {
this.loopObjects(this.scene.game_objects, "draw");
this.loopObjects(this.scene.ui_objects, "draw");
if(this.scene.draw !== undefined) {
this.scene.draw();
}
}
}
window.addEventListener("load", function() {
game = new Main();
function updateMain() {
c.clearRect(0, 0, canvas.width, canvas.height);
frame_counter++;
game.update();
game.draw();
requestAnimationFrame(updateMain);
}
updateMain();
});
Hi! Da sind echt gute Tipps, danke für die Antwort, werde sie demnächst umsetzen. Und joa den gameloop hab ich mal aus einem alten Projekt kopiert und eingefügt. Funktioniert hat er ja xD
Auch cool das du es so schnell verstanden hast, dass in einem ui_object oder game_object nochmal ein "Gruppenelement" sein kann, welches auch noch mal eine Sammlung von ui oder game objects haben kann. Dachte meine Idee dazu währe absolut Banane.
Außerdem hast du geschrieben ohne Semicolons können Fehler kommen. War bei mir aber nie der Fall. Inwiefern schlussfolgerst du das?
Mfg Weißbrot