Java [1242]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • vip

    czy ktos jest chetny do pomocy w napisaniu programy w javie?
    po krotce program ma robic
    wpisujemy ilosc kul i wciskamy start
    kule odbijaja sie od scianek i sobie kraza
    wiecej wytycznych zainteresowanym
    potrzebuje napisac ten program na zaliczenie semestru a nie wiem jak sie do tego zabrac
    prosze o pomoc
  • Anonim

    Kąty odbić wyliczamy z funkcji trygonometrycznych (kąt natarcia kąt odbicia). Wyświetlamy na jakimś rozszerzeniu JPanelu. Wersja iteracyjna na timerze lub na osobnych wątkach dla każdej kuli (ambitniejsze ale czy potrzebne). Jednym słowem przyjemne zadanko szkolne.
  • vip

    tresc:
    Należy zaimplementować aplikację, której okno
    podzielone jest na 2 części. W górnej części użytkownik podaje ile kół
    będzie poruszać się w dolnej. Liczbę kół wpisuje do pola tekstowego, obok
    którego znajdują się przyciski START oraz STOP. Przycisk START uruchamia
    poruszanie się kół, przycisk STOP zatrzymuje (użytkownik wtedy może podać
    inną liczbę kół). Koła odbijają się od brzegów obszaru, tak jak bile
    bilardowe. Dla uproszczenia zakładamy, że koła nie mogą odbijać się od
    siebie.

    mam czas do soboty a nie wiem co z czym.javy w sumie mialem 16 godz na cw i po tym mam napisac taki program.to chyba za trudny jak dla bardzo poczotkujacego.
    program ma byc prosty,przejzysty i dzialac.
    oj chyba polegne....
  • Dzemus

    Nie za trudny, bo można to napisać w max 200-300 liniach.

    1. Robisz klasę Bila, która powinna mieć położenie : x, y i składowe prędkości kuli vx i vy.

    2. Robisz sobie klasę odpowiedzialną za stół bilardowy - powinna mieć konstruktor przyjmujący liczbę bil i wymiary stołu (dla ułatwienia) - będzie ona odpowiadała za logikę aplikacji. Klasa powinna zawierać kolekcję (zbiór) Bil - w konstruktorze umieszczasz w tej kolekcji liczbę Bil odpowiadającą podanej w parametrze.

    3. W powyższej klasie piszesz metodę update(long time), która iteruje po Bilach i aktualizuje położenie zgodnie ze wzorami znanymi z kinematyki x = x + time*vx, y = y + time*vy.
    Jeżeli bila dotknie ściany, to przytulamy ją do ściany i zmieniamy wektor prędkości na odwrotny (czyli np
    if (x<0) { x = 0; dx = -dx; } ). Analogicznie dla pozostałych 3 ścian.

    4. Dziedziczysz sobie klasę np. BilardView po JPanel, podajesz na konstruktorze klasę reprezentującą logikę, po czym przeciążasz paintComponent(Graphics g) i w tej metodzie wyciągasz z klasy logiki wszystkie bile po czym je wyświetlasz.

    5. Tworzysz sobie wątek, który zostanie uruchomiony jak ktoś kliknie start, będzie kręcił się w kółko wg. schematu:

    logikaBilard.update(czas);
    wyswietlanieBilard.repaint();
    Thread.sleep(czas);

    dopóki ktoś nie kliknie Stop (jakaś flaga).

    6. Tworzysz sobie klasę przeciążającą JFrame (główną klasę aplikacji), wrzucasz w nią logikę, widok, wątek, przyciski start i stop itp., łączysz wszystko do kupy i działa.
  • Anonim

    No jeszcze zostało odbijanie się bil od siebie - musi być zdefiniowana średnica bili, sprawdzamy odległości między wszystkimi bilami (można zoptymalizować aby nie sprawdzać każdej z każdą - np. podzielić stół na sektory). Jeżeli odległość między bilami jest 2 * średnica, wtedy zmieniamy ich zwrot i kierunek.
  • Dzemus

    >Kamil napisał
    >tresc:
    > Dla uproszczenia zakładamy, że koła nie mogą
    >odbijać się od
    >siebie.


    Pół godziny pisania, 160 linii:

    http://rafb.net/p/Cd9hxU39.html

    Podziel sobie to na klasy, to będzie większe wyglądało.
  • Dzemus

    Hmm.. zapomniałem dodać blokowanie przycisku "Start", póki nie wciśnie się "Stop"... ale to sobie sam możesz zrobić.
  • vip

    wielkie dzieki.ratujesz mi zycie
    tylko ten link co podalej wogole mi sie nie otwiera
    dasz rade jako zalaznik na mail alien66@op.pl
    pozdrawiam
    z tym przyciskiem do pewniej dojde a jak nie to bede pisal
  • vip

    Ziemek wyslalem Ci print scrn z kompilacji.przejzyj i odp
    pozdrawiam