Gra wąż

0

Do snake dodałem stronę tytułową umożliwiającą wybór długości węża na początku gry.

2

Nie chcę Cię dobić @Adept123, bo wiadomo że każdy się uczy itd., ale z przykrością stwierdzam, że produkujesz paskudny kod. Paskudny pod względem wizualnym (czytelność jest tragiczna), jak również pod względem algorytmicznym i struktur danych. Łamiesz wszelkie możliwe wytyczne związane z formatowaniem kodu, używasz najróżniejszych przestarzałych technik, a nawet wykorzystujesz iście starożytne własności języka.

Pracujesz na pececie z DOS-em, że używasz krótkich nazw, w dodatku tylko dużymi literami? Mamy 2020 rok, w Lazarusie możesz używać długich nazw plików, a także stosować przestrzenie nazw (kropki wewnątrz nazwy modułu), dzięki czemu łatwiej zarządzać plikami projektu. Poza tym podzieliłeś projekt na dwa moduły w sumie bez żadnej potrzeby – nieco ponad 300 linijek kodu może istnieć w jednym module.

Pierwszy problem to formatowanie kodu, co od razu odpycha:

  • wcięcia są nieregularnej głębokości – w Pascalu obowiązują wcięcia w rozmiarze dwóch spacji,
  • nie stosujesz pustych linii pomiędzy procedurami i do oddzielania niezwiązanych logicznie ze sobą bloków kodu,
  • niektóre słowa kluczowe piszesz dużą literą, choć w Pascalu zawsze wszystkie słowa kluczowe pisze się małymi literami,
  • używasz nic nie mówiących identyfikatorów dla zmiennych, w dodatku w notacji przeznaczonej dla języka C,
  • nazywasz argumenty procedur tak samo jak zmienne, przez co nie da się ich odróżnić od zmiennych, bez zaglądnięcia do nagłówka procedury (lub skorzystania z podpowiedzi edytora kodu), w dodatku wybierasz nazwy kolidujące z wbudowanymi funkcjami (np. Length),
  • piszesz po kilka instrukcji w jednej linijce, co potwornie komplikuje analizę kodu,
  • nazywasz procedury w zły sposób – nazwa każdej procedury powinna się zaczynać od czasownika w najprostszej formie, a nie od rzeczownika.
  • pomijasz znak średnika w każdej ostatniej instrukcji, przez komplikujesz kod i utrudniasz sobie jego pisanie.

Druga rzecz to struktura kodu:

  • używasz kupy zmiennych globalnych, zamiast przekazywanych w parametrze procedur zmiennych lokalnych,
  • tworzysz bardzo długie i wszystko robiące procedury, zamiast pisać więcej krótkich procedur odpowiadających tylko za jedną czynność,
  • piszesz bardzo długie i złożone instrukcje warunkowe, znów robiące wiele rzeczy,
  • piszesz kod proceduralnie, choć znacznie krócej, szybciej i wygodniej jest pisać kod obiektowy (olać, jeśli po prostu uczysz się pisać kod niskopoziomowo – to też ważna umiejętność),
  • porównujesz zmienne logiczne z wartościami True/False w instrukcjach warunkowych, co jest niespotykane/dziwne,
  • nie stosujesz skróconego zapisu inkrementacji (operator += i temu podobne), który jest przecież natywny dla FPC,
  • tworzysz kilka jednoargumentowych warunków zamiast jednego wieloargumentowego (wydłużasz kod).

To tak ogólnie. Jeśli chcesz wiedzieć jak formatować kod, przeczytaj artykuł Object Pascal Style Guide – są pokazane liczne przykłady co robić i czego nie robić. Co do technicznych aspektów to cóż – kursów i tutoriali w sieci mnóstwo, więc jest co czytać.

Nie zniechęcaj się – po prostu przełknij powyższe i zastosuj się do tego, a gwarantuję, że z biegiem czasu będziesz pisał coraz lepszy i coraz ładniejszy kod, który łatwo będzie utrzymywać i łatwo analizować przez osobny postronne.


PS: jeśli publikujesz źródła, to nie wrzucaj osobnych modułów, a po prostu wszystkie pliki projektu, bez pliku wykonywalnego, binarek i kopii zapasowych (zwykle znajdują się w katalogu lib), oraz bez pliku z zapisem sesji (rozszerzenie .lps). Kompletne źródła projektu to plik z rozszerzeniem .lps, wszystkie .pp lub .pas (zależy których używasz) oraz ew. grafiki, dźwięki, pliki konfiguracyjne i inne, bez których program nie będzie działał poprawnie.

Jak jesteś zbyt leniwy na ręczne kopiowanie przed archiwizacją, to skorzystaj z opcji w Lazarusie – w głównym menu kliknij w Project i wybierz opcję Publish project.... Będziesz mógł albo tylko stworzyć kopię plików projektu, albo dodatkowo spakować je do archiwum. Tylko czytaj to co jest napisanie w komunikatach podczas publikowania.

0

Małe zmiany w kodzie.

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

Robot: CCBot