Skocz do zawartości

Mateusz

Członkowie
  • Postów

    40
  • Dołączył

  • Ostatnio

    Nigdy

Posty napisane przez Mateusz

  1. JOGL służy jedynie renderowaniu, nie projektowaniu. Przekazujesz mu zbiór trójkątów, kamere i wykonuje obraz. Jest to całkiem fajny binging do OpenGL. Możesz sobie utworzyć taki samochód w np. Blenderze, a potem wczytać jego model i wyrenderować.

    Polecam najpierw zapoznać się z OpenGL (bo tutaj tutoriali jest masa), a w następnej kolejności używać metod będące odpowiednikami w JOGL, ponieważ on jedynie przekazuje je dalej do OpenGL.

    Dowiedz się jeszcze, czy nie możesz użyć LWJGL, który jest następcą już starego JOGL'a i ma dobre tutoriale na oficjalnej stronie.

    Ja od siebie polecę https://en.wikibooks.org/wiki/OpenGL_Programming .

    EDIT: Zapomniałem, że jeśli to projekt na uczelnie, to raczej nie będzie wymagany OpenGL >= 3.0, który jest trudniejszy. W takim razie wiedzę możesz brać np. z https://www3.ntu.edu.sg/home/ehchua/programming/opengl/JOGL2.0.html

  2. Każda metoda musi należeć do jakiejś klasy, dotyczy również to public static void main. Klasy wewnętrzne nie mogą mieć statycznych metod, musisz dać ją do innego pliku, np:

    Akwarium.java:

    public class Akwarium {
        public static void main(String[] args) {
            System.out.println(Czydoplynie.rybka1(null));
        }
    }

     

    Czydoplynie.java

    class Czydoplynie {
        public static boolean rybka1(boolean[][] tablica){
            //TODO
            return false;
        }
    }

    Polecam użyć jakiegoś dobrego IDE do pisania kodu, który będzie sporo podpowiadał i pomagał (IntelliJ - darmowa wersja, lub Netbeans)

  3. Szczerze? Idź w iOS. Może i nie będzie łatwo, bo zakładam, że sprzętu nie masz, a do najdroższych należy. Jeżeli zainwestujesz, to w pracy bardzo szybko Ci się zwróci, gdyż iOS'owcow w Polsce brakuje, natomiast Androidowcow jest od groma. Jeśli Cie nie stać, to polecam zapoznać się z Hackintoshem, bądź wirtualizacją Mac OS (tak, da się). Do nauki wystarczające.

  4. Ja natomiast odradzam startu od C++, jest to ciężki język jak na dzisiejsze czasy dla początkujących. Zawsze możesz później wrócić do niego (o ile będziesz musiał / potrzebował / chciał). Zacznij śmiało od prostszych języków, jak Python. Gdy już nabierzesz wprawy, możesz przejść do C# lub Java (ale wątpię, czy będziesz chciał ;) )
  5. Jeszcze dodam od siebie:

    - Znając Jave możesz pisać wszelkiej maści aplikacji (Aplikacje Desktopowe, Mobilne, Web'owe), co jest wielkim atutem (jeśli dobrze piszesz, to nie będą o wiele wolniejsze od tych w C++, a wraz z java 9 mają się kompilować do natywnego kodu). To samo C#, lecz tylko na Microsoft (wyjątkami są Mono (nie wiem jak bardzo kompatybilne), xamarin i podobne)

    - Wypowiedź twórcy C++ na temat 5 języków, których każdy programista powinien znać, ponieważ programista, który zna tylko jeden język, prędzej czy później się zatraci, a technologie przychodzą i odchodzą.

    https://www.youtube.com/watch?v=NvWTnIoQZj4

    Uprzedzam, w filmiku nie chodzi o to, żeby lepiej znać pythona, czy rubiego, tylko że gdy znasz już te lub pokrewne języki, każdy następny będzie bardzo podobny, więc szybko się odnajdziesz.

    Jeżeli bardzo komuś zależy na połączeniu szybkości C++ i łatwości C#/Javy, to polecam się przyjrzeć D.

    A wracając do oryginalnego tematu, niestety droga informatyka jest (prawie) jak lekarza. Musi być na bieżąco, bo inaczej popłynie pod prąd. Musisz się nauczyć szybko przyswajać wiedzę o nowościach, a gdy zaczniesz dostrzegać schematy, będzie łatwiej. Chyba, że planujesz pracować w jakimś korpo, w którym wciąż się używa Java 1.4 ;) . Zdaje mi się, że najłatwiej mają Ci od mikrokontrolerów i sterowników, tam wciąż króluje C i nie wiem czy zmiany zachodzą tak często.

    Dobry programista pracuje na abstrakcjach, a nie języku ;)

  6. Uszanowanko,

    C++ to język bardzo wymagający, dzisiaj o ile nie robisz rzeczy wymagających obliczeniowo ( np. Sztuczna Inteligencja lub Big Data w jakiejkolwiek postaci), możesz się obyć bez. Ale kopa daje ;) Nie zgodzę się z tym, że ssie. Każdy język ssie jeśli się go nie umie lub nie poprawnie zastosuje.

    C# - nowoczesny język, dużo ułatwień, oferuje więcej niż Java, ale Microsoft ;)

    Java - odradzający się fenix. Wraz z java 8 wraca do łask (i to nie tylko lambdy). No i plus jest taki, że znając jeden język napiszesz na dowolny sprzęt [i debugujesz wszędzie] (poza mikrokontrolerami, tam C ).

    Python, Ruby, Javascript - języki, które miały swoje wąskie zastosowanie, ale stały się czymś więcej. Moim zdaniem dobre do krótkich zadań (proste apki, lub część przetwarzająca).

    Groovy - jw. z tym, że integruje się w 100% z javą, jak dla mnie dobra wstawka do przetwarzania JSON'ów itp. Piszesz jak w javie i pythonie jednocześnie.

    Scala, Clojure, Haskel - niestety nie mam zdania.

    Obecnie piszę w C++, Javie i w Groovym (przeważnie mieszając w jednej aplikacji wszystkie), ale gdybym zaczynał od 0, to raczej bym postawił na C#. (ze względu na język i oferty prac)

  7. Praktyka czyni mistrza! Ściągnij Android Studio (nie żadne eklipsy) i pisz. Co pisać? Przetestuj co możesz zrobić ze swoim telefonem: Kamera, Dźwięki, Baza Danych SQLite, HttpClient, itp. 

    Skąd czerpać wiedzę?

    Ja jestem fanem książek, złap jakąkolwiek, która ma kod od Android'a 4.0 (dodali Fragmenty, co jest ważnym elementem).

    Poza tym polecam:

    • https://developer.android.com/training/index.html
    http://www.androidhive.info/
  8. Nie uczmy złych nawyków (czepiam się). Pozwolę sobie poprawić ten kod:

     

    public class Prostopadloscian {

    private double bokA;

    private double bokB;

    private double bokC;

    public Prostopadloscian(double bokA, double bokB, double bokC) {

    this.bokA = bokA;

    this.bokB = bokB;

    this.bokC = bokC;

    }

    public double pole() {

    return 2 * ((bokA * bokB) + (bokB *bokC) + (bokA * bokC));

    }

    public double objetosc() {

    return bokA * bokB * bokC;

    }

    public static void main(String[] args) {

    Prostopadloscian figura = new Prostopadloscian(3,3,3);

    System.out.printf("Pole wynosi %f\n", figura.pole());

    System.out.printf("Objętość wynosi %f\n", figura.objetosc());

    }

    }

     

  9. Zależy czego dokładnie chcesz się nauczyć. Robienia stron -> rób strony, metaheurystyk -> koloruj grafy :)

    A tak na serio, co zawsze warto przećwiczyć w nowym języku:

    ciąg fibonaciego : nauka iteracji i rekurencji,'sklep z narzędziami: obiektowość i kolekcje,jw. z zapisem danych do plików: in/out,jw. z gui : gui (html lub lokalny system kontrolek),jw. z wykorzystaniem DB,jw. z technikami przekształcania obiektu na relacyjne dane, typu JPA/Hibernate (chyba, że jesteś fancy i chcesz użyć czegoś typu MongoDB),dla średnio-początkujących: operacje(dodawanie i mnożenie) macierzowe na wątkach: wielowątkowość.

    Potem jeszcze jakaś nauka security/session i już możesz robić dowolne rzeczy w danym języku. Dalej to jedynie biblioteki, które są już niezależne od języka.

    Musisz też zważyć na uwagę, że niby w każdym języku da się zrobić dowolną rzecz, to nie każdy służy ku temu. Gdzie indziej lepiej użyć skryptów, gdzie indziej języków kompilowanych.

    W większości przypadków, przejście z jednego języka na drugi, to kwestia nauczenia się jak zdefiniować klasę, metody i przepływ sterowania (if'y i pętle).

    Z prostych zadań to polecam poszukać sobie jakichś list zadań dla studentów informatyki z podstaw programowania i programowania obiektowego.

  10. Dołóż heurystykę, która będzie z prawdopodobieństwem szła zgodnie ze wskazówkami zegara, niż w losowe strony. Labirynt generuj na zasadzie otwierania ścian do sąsiedniego punktu

    Pro Paint :

    0FZPiZQ.png

    Pseudokod:

    Jeśli (random() < prawdopodobieństwo okręgu && można otworzyć ścianę po okręgu):
       Otwórz ścianę po okręgu
    W przeciwnym przypadku
       Otwórz losową ścianę

    Żeby wiedzieć która ściana jest na okręgu, wyliczasz sobie na podstawie trygonometrii z podanego kąta i odległości od środka planszy(promień). Dzięki temu uzyskasz punkt, w który powinieneś celować.

    Pamiętaj również o dwóch rzeczach przy generowaniu labiryntu:

    • Nie otwieraj dwa razy ściany do tego samego punktu (by nie tworzyć cykli)
    • Pamiętaj o powrotach, gdy natrafisz na miejsce, gdzie nie możesz już otworzyć żadnej ściany. Dzięki temu wszystkie punkty będą miały przynajmniej jedną otwartą ścianę.
×
×
  • Utwórz nowe...