Nauka programowania - pierwsze kroki

0

Zacząłem naukę programowanie właściwie dzięki temu forum,gdy na nie natrafiłem kilka miesięcy temu. Jednak po przeczytaniu książek i przerobieniu przykładów przyszedł moment żeby coś napisać jakąś aplikację. Jednak tu jest mój problem wiem co chciałbym napisać(gre snake'a/tower defense) jednak nie wiem jak mam się za to zabrać? od czego zacząć skąd wiedzieć co pisać i jak to pisać? Jeżeli można to bardzo prosiłbym o porady użytkowników jak również doświadczonych osób jak @Shalom, @Krolik @niezdecydowany @datdata i innych ;) Dziękuję za wyrozumiałość i porady.

1

A bo ja wiem? Musisz siąść i zacząć pisać :) Sugerowałbym podejście top-down. Tzn piszesz aplikacje od góry, zaczynając od jakiegoś new Game().start() a potem powoli implementujesz kolejne poziomy aplikacji.

1

Jak już masz ogólny szablon tak jak Shalom napisał to rozbijasz problem na części, potem te części na drobne elementy (pamiętając cały czas o tym, że trzeba je potem jakoś posklejać), a potem robisz jeden po drugim, jak nie wiesz jak dany drobiazg zrobić to szukasz w internetach. Jakoś się nigdy za bardzo nad tym nie zastanawiałem.

1

a naucz się najpierw jakieś proste rysunki robić w jakieś javieFX czy innym swingu. Potem już w miarę potrzeb, żeby ten rysunek w prawo albo w lewo przesunąć, gta 10 to to nie będzie, ale zawsze jest gdzie łapy wsadzić.

3

Po pierwsze usiądź, weź długopis i postaraj się napisać/wymyśleć/naszkicować co ma zawierać Twoja gra. Jeśli to ma być snake to np.

  • Plansza
    • ma wymiar nxm
    • złożona z pól
  • Wąż
    • porusza się po polach
    • zjada owoce
    • poprzez zjadanie owoców 'wydłuża się' _
  • Owoce/cokolwiek tam bedzie zbierał
    • dodaje punkty do wyniku gracza/partii

Masz jakiś zarys klas oraz podstawowych zachowań który będzie Ci potrzebny.
Siadasz kodujesz, dodajesz nowe klasy w ramach potrzeb, rozkminiasz. Powtórz.

Tu masz to co chciałem napisać, ale wytłumaczone w lepszy sposób http://learnpythonthehardway.org/book/ex43.html

4

Proces opisany bardzo skrótowo przez @NoZi to projektowanie. Sama umiejętność programowania, pisania kodu, nie wystarcza. Jeżeli chcesz napisać np. snake albo td to musisz najpierw zaprojektować taką aplikację. Proces projektowania można na początku podzielić sobie na dwie fazy:

  1. Określ co chcesz zrobić. Stwórz tzw. przypadki użycia. Będą one opisywać podstawowe interakcje użytkownika z aplikacją, oraz podstawowe elementy aplikacji. Nie opisuj szczegółowych działań, przykładowo w td nie opisuj w jaki sposób można dokładnie upgradować poszczególne wieże. Napisz, że można to zrobić.
  2. W tej fazie zaprojektuj jak powinno wykonać się działania. I znowuż zamiast super dokładnych opisów klas, opisuj ogólne ścieżki, ale korzystając już z pojęć, które są techniczne. Przykładowo upgrade wierzy w TD:

Użytkownik może upgradować wieżę
Warunki początkowe

  • wieża istnieje na planszy
  • wieża nie ma maksymalnego poziomu (-> ograniczenia poziomów wież, -> drzewko technologii)
  • użytkownik posiada zasoby potrzebne do upgradu

Akcja

  • Użytkownik wybiera wieżę ( -> interakcja z elementami na planszy)
  • Z menu wybiera pożądany upgrade (-> menu kontroli wieży, -> aktywność elementów)
  • Uruchamia upgrade ( -> interakcja z elementami na planszy)

Efekty

  • Utworzenie zadania upgrade-u ( -> zadania modelu, -> zadania GUI, -> scheduler )
  • Zmiana wizualna elementu na czas upgrade-u ( -> animacje)
  • Zakończenie zadania ( -> zwracanie wyników zadań schedulera )
  • Zmiany w modelu

Jak rozpiszesz sobie poszczególne elementy oraz interakcje między nimi, to jesteś już blisko przejścia do kodowania. Masz gotowe "moduły" kodu. Czasami będą to pojedyncze klasy, czasami grupy klas.

Pamiętaj, że:

  • nie musisz zaprojektować wszystkiego na raz,
  • staraj się tworzyć elementy spełniające zasadę minimalnej koniecznej użyteczności. Inaczej mówiąc doprowadź element do stanu gdy działa. Dopiero wtedy bierz się za kolejny
  • programuj i projektuj w sposób przyrostowy. Nie wszystko na raz.
  • nie bój się zmiany.
  • pisz testy.

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