Wyzwanie jest proste. Podaj możliwie najkrótszy kod, aby odtworzyć klasyczną grę w ponga dla dwóch graczy http://en.wikipedia.org/wiki/Pong . Poziom grafiki i funkcjonalności powinien być jak najbardziej zbliżony do tej demonstracji javascript http://codeincomplete.com/posts/2011/5/14/javascript_pong/demo.html (ale bez dodatkowych opcji można kliknąć po lewej stronie lub informacje o ramce, fps itp. w prawym dolnym rogu).
Jak zawsze kod musi być napisany w wolnym języku (w obu zmysłach) i powinien być dostępny na Linuksie. Wszelkie używane biblioteki muszą być również bezpłatne, łatwo dostępne i nie mogą być napisane na potrzeby tego konkursu (a także nie mogą zawierać jeszcze działającej wersji Ponga!).
code-golf
graphical-output
game
Felipa
źródło
źródło
Odpowiedzi:
JavaScript, 883 (+ 70 HTML)
Skrypt można umieścić na końcu
<body>
lub wywołaćonLoad
. Potrzebuje następującego elementu canvas:Gracz 1 używa klawiszy qi a, a gracz 2 używa klawiszy pi l. Naciśnij escklawisz, aby wstrzymać, a dowolny klawisz, aby rozpocząć / kontynuować.
Można grać w przeglądarce tutaj .
Nie byłem pewien, jakiej fizyki się posługiwać, więc zacząłem od prostej metody refleksji, a potem dodałem trochę różnorodności i trochę z nią eksperymentowałem. Na prędkość piłki w kierunku y ma wpływ to, gdzie na łopatce uderzysz piłkę, więc masz pewną kontrolę nad tym, dokąd piłka idzie. Prędkość piłki w kierunku x powoli wzrasta z każdym uderzeniem w rajdu.
Podejrzewam, że będzie dość łatwo pokonany przez rozwiązania wykorzystujące biblioteki, ale dobrze się bawiłem, robiąc to w prostym javascript.
źródło
20
do zmiennej o nazwieg
i zapisać jeden bajt.sed, 35
Lekko podnosząc poprzeczkę dzięki medytacji sed znaczka pocztowego.
Medytacja odbywa się na stdin / stdout na dwóch komputerach, niekoniecznie połączonych siecią. Medytacja rozpoczyna się w stanie
z guru zero po lewej i jeden po prawej. Nawias kątowy przesuwa się w lewo i prawo, a jeśli guru manewruje swoją liczbą, aby skontaktować się z kursorem, gdy chodzi o ich bok, ich wynik jest zwiększany o jeden, a oni radują się.
Medytacja jest inicjowana przez wpisanie powyższego stanu do
sed -f medi.sed
, a komputer odpowiada następnym stanem. Obowiązkowi typy guru, którzy zapowiadają medytację, czytają na głos następny klawisz, który wcisną, przy czym obaj guru naciskają święty kluczenter
w przyszłość w tym samym czasie. Sumienny komputer odpowiada następnym stanem. To z kolei jest odczytywane na głos podczas pisania jednogłośnie, jak w ostatnim. Kontynuujcie postępy w przyszłości, aż do osiągnięcia nieskończonej błogości.Guru pragnący wyzwania może grać w trybie „turbo”, w którym guru próbuje wspólnie przewidzieć następny stan komputera i wpisuje go w monicie zamiast bieżącego stanu. Guru będą mieli mądrość, by zweryfikować zgodność między ich przewidywaniami przed wejściem w przyszłość.
źródło
Python (z pygame ) 650 bajtów
cechy
Na koniec chciałbym poprosić, aby z różnych powodów nie wybrano tego rozwiązania jako przyjętej odpowiedzi.
Przykładowy zrzut ekranu:
Uwaga: czcionka użyta w wyniku może różnić się w zależności od systemu.
źródło
HTML i JavaScript (weź 2) - 525
Ponieważ OP nie wydawało się zbytnio przejmować częścią „jak najbliżej”, oto alternatywne rozwiązanie, które bezlitośnie uprościłem, rozebrałem i grałem w golfa. Q / A i P / L do gry, ale każdy inny klawisz ma również wpływ. Ponownie kod jest w pełni samowystarczalny i przetestowałem go w Chromium 25 w systemie Linux. Mogę grać w golfa jeszcze bardziej, jeśli możesz zaakceptować małe błędy lub większe pogorszenie jakości grafiki / rozgrywki.
Dzięki Shmiddty
źródło
c=window.c
. Przypisujesz sobie zmienną globalną.++S[n]
do.random(++S[n])
HTML i JavaScript - 1663
Wbrew mojej lepszej ocenie, wybrałem szalone podejście do gry w golfa z kodu demo. Usunąłem niektóre funkcje i elementy interfejsu, ale ogólnie działa dokładnie tak samo - 0, 1 lub 2, aby wybrać liczbę ludzkich graczy, Q / A i P / L do przeniesienia.
O ile nie popełniłem błędów, rozgrywka powinna być identyczna, piksel dla piksela i milisekunda dla milisekundy, z oryginałem przy 640 * 480 (wskazówka: zmiana rozmiaru okna przeglądarki zmienia rozmiar gry w wersji demo). Po prostu nie podaje instrukcji, nie ogłasza zwycięzcy i nie obsługuje esc.
Kod jest w pełni samodzielny i przetestowałem go w Chromium 25 w systemie Linux. Firefox bardzo go nie lubi.
Trochę kredytów dla Shmiddty za ulepszenia
źródło
Przetwarzanie, 487 znaków
Przykładowy zrzut ekranu:
Ten kod został stworzony z myślą o skrócie, więc jest dość błędny (piłka czasami przechodzi przez wiosło lub owija się wokół niego). Kontrole są Q / A dla Gracza 1 i O / L dla Gracza 2.
źródło
C # - 1283 znaków
Można to pograć w golfa trochę więcej, ale oto jest.
Edycja: Nie widziałem wymogu wolnego, uruchamianego w systemie Linux języka ...
źródło
Tcl / Tk , 932 bajty
Musi być uruchomiony w interaktywnej powłoce
Uwaga:
Tylko bardzo minimalna wersja Ponga, w której piłka porusza się tylko pod kątem ukośnym i zawsze ma taką samą prędkość.
źródło