Ocena kodu gry typu clicker

0

Cześć,

chciałbym Was prosić o ocenę gry jaką stworzyłem w ramach nauki JS-a. To gra typu clicker. Zależy mi głównie na ocenie kodu :)

Repozytorium na GitHubie: Github
Podgląd Live: Live

Za wszelkie uwagi dziękuję :)

1

Możesz powiedzieć, czemu mają służyć te linie:

buyElephant.removeEventListener;
(...)
buyLion.removeEventListener;

?

To i tak nie będzie mieć żadnego efektu (bo nie wywołujesz metody removeEventListener, skoro nie ma nawiasów, to nie Pascal), ale nawet jakbyś dodał nawiasy, to nie miałoby sensu w tej postaci.

	playerWallet.currentMoney += playerWallet.DollarsClick;
	playerWallet.totalClicks ++;
	playerWallet.totalDollarsClicked += playerWallet.DollarsClick;
	
	document.getElementById("current-money").innerHTML = playerWallet.currentMoney;
	
	document.getElementById("total-clicks").innerHTML = playerWallet.totalClicks;
	
	document.getElementById("total-dollars-clicked").innerHTML = playerWallet.totalDollarsClicked;

Tu i w innych miejscach masz pomieszanie logiki z prezentacją, tzn. z jednej strony masz jakieś obiekty w grze, na których działasz (np. playerWallet.currentMoney += playerWallet.DollarsClick;) a z drugiej strony masz kod, który wyświetla to na ekranie (np. document.getElementById("current-money").innerHTML = playerWallet.currentMoney;). Bardziej eleganckie podejście byłoby oddzielenie tych dwóch rzeczy (np. stworzenie funkcji updateGUI albo innej, może kilku funkcji, które będą aktualniać DOM), tym sposobem mógłbyś oddzielić logikę gry od wyświetlania (i np. umożliwi łatwą podmiankę interfejsu na inny, albo dodanie innej logiki do tego samego GUI), poza tym również bardziej czytelny byłby kod.

0

Coś chyba sie rozsypało, bo ja mam sam html+olbrzymie obrazki.

2

Tak na szybko to bardzo rozciągnąłeś ten kod...
Kilka uwag:

  1. można było zdefiniować jeden obiekt animals ze wszystkimi zwięrzętami zamiast wielu zmiennych typu const i potem skorzystać z kluczy
  2. zamiast używać innerHtml można skorzystać z textContent (link)
  3. zamiast przypisywać eventy do każdego "zwierzaka" można skorzystać z eventDelegation, poczytaj na google

Po tych zmianach kod się skurczy do 100 lub nawet mniej linii...

2
setInterval(() => document.getElementById('click-img').click(), 10);

;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1