Die Herausforderung ist einfach. Geben Sie den kürzestmöglichen Code ein, um das klassische Pong-Spiel für 2 Spieler zu reproduzieren . Http://en.wikipedia.org/wiki/Pong . Die Höhe der Grafik und Funktionalität so nah wie möglich an dieser Javascript Demonstration sein sollte http://codeincomplete.com/posts/2011/5/14/javascript_pong/demo.html (aber ohne die zusätzliche Optionen können Sie auf der linken Seite klicken Sie auf oder die Informationen zu Frame, FPS usw. unten rechts).
Wie immer muss der Code in einer freien Sprache (in beiden Richtungen) geschrieben sein und sollte unter Linux lauffähig sein. Alle verwendeten Bibliotheken müssen ebenfalls kostenlos, leicht verfügbar und nicht für die Zwecke dieses Wettbewerbs geschrieben sein (und dürfen auch noch keine funktionierende Version von Pong enthalten!).
quelle
Antworten:
Javascript, 883 (+ 70 HTML)
Das Skript kann am Ende von platziert
<body>
oder aufgerufen werdenonLoad
. Es benötigt das folgende Canvas-Element:Spieler 1 nutzt die qund aTasten, und Spieler 2 verwendet die pund lTasten. Drücken Sie die escTaste zum Anhalten und eine beliebige Taste zum Starten / Fortfahren.
Sie können es in Ihrem Browser spielen hier .
Ich war mir nicht sicher, welche Physik ich verwenden sollte, also begann ich mit einer einfachen Reflexionsmethode, fügte dann etwas Abwechslung hinzu und experimentierte ein wenig damit. Die Geschwindigkeit des Balls in y-Richtung hängt davon ab, an welcher Stelle des Paddels Sie den Ball schlagen, sodass Sie die Kontrolle darüber haben, wohin der Ball geht. Die Geschwindigkeit des Balls in x-Richtung nimmt mit jedem Treffer in der Rallye langsam zu.
Ich vermute, dass es von Lösungen, die Bibliotheken verwenden, ziemlich leicht zu übertreffen ist, aber ich hatte Spaß daran, es in einfachem Javascript zu machen.
quelle
20
aber einer Variablen mit dem Namen zuweiseng
und ein dürftiges Byte speichern.sed, 35
Erhöhen Sie die Messlatte ein wenig mit einer Briefmarke sed Meditation.
Die Meditation wird auf stdin / stdout auf zwei Computern genossen, die nicht unbedingt über ein Netzwerk verbunden sind. Die Meditation beginnt im Zustand
mit guru null links und eins rechts. Die spitze Klammer bewegt sich nach links und rechts, und wenn ein Guru seine Nummer so bewegt, dass er den Cursor berührt, erhöht sich seine Punktzahl um eins, und er ist hocherfreut.
Die Meditation wird durch Eingeben des obigen Zustands eingeleitet
sed -f medi.sed
, und der Computer antwortet mit dem nächsten Zustand. Die pflichtbewussten Gurutypen, die in die Meditation eintreten und die nächste Taste vorlesen, die sie drücken, wobei beide Gurus gleichzeitig die heilige Taste fürenter
die Zukunft drücken . Der pflichtbewusste Computer antwortet mit dem nächsten Status. Dies wird wiederum vorgelesen, während Sie wie beim letzten Mal gleichzeitig tippen. Weiter in die Zukunft voranschreiten, bis unendliche Glückseligkeit erreicht ist.Gurus, die eine Herausforderung anstreben, spielen möglicherweise den Turbo-Modus, in dem die Gurus versuchen, gemeinsam den nächsten Status des Computers vorherzusagen und ihn anstelle des aktuellen Status in die Eingabeaufforderung einzugeben. Die Gurus werden die Weisheit haben, die Übereinstimmung ihrer Vorhersagen zu überprüfen, bevor sie in die Zukunft eintreten.
quelle
Python (mit Pygame ) 650 Bytes
Eigenschaften
Abschließend möchte ich darum bitten, dass diese Lösung aus verschiedenen Gründen nicht als akzeptierte Antwort ausgewählt wird.
Beispiel-Screenshot:
Hinweis: Die für die Partitur verwendete Schriftart kann von System zu System unterschiedlich sein.
quelle
HTML & JavaScript (nehmen Sie 2) - 525
Da dem OP der Teil "so nah wie möglich" nicht besonders wichtig zu sein schien, ist hier eine alternative Lösung, die ich gnadenlos vereinfacht, gestrippt und golfen habe. Q / A und P / L zu spielen, aber jede andere Taste hat auch einen Effekt. Auch hier ist der Code vollständig in sich geschlossen und ich habe ihn in Chromium 25 unter Linux getestet. Ich kann es sogar noch weiter verbessern, wenn Sie kleine Bugs oder eine stärkere Verschlechterung der Grafikqualität / des Gameplays akzeptieren.
Danke Shmiddty
quelle
c=window.c
. Sie weisen sich selbst eine globale Variable zu.++S[n]
innerhalb von.random(++S[n])
HTML & JavaScript - 1663
Gegen mein besseres Urteil nahm ich den verrückten Ansatz, den eigentlichen Code aus der Demo zu golfen. Ich habe einige Features und Oberflächenelemente entfernt, aber im Allgemeinen funktioniert es genauso - 0, 1 oder 2, um die Anzahl der menschlichen Spieler zu bestimmen, Q / A und P / L, um sich zu bewegen.
Sofern ich keine Fehler gemacht habe, sollte das Gameplay Pixel für Pixel und Millisekunde für Millisekunde mit dem Original bei 640 * 480 identisch sein (Hinweis: Durch Ändern der Größe des Browserfensters wird die Spielgröße in der Demo geändert). Es gibt einfach keine Anweisungen, gibt den Gewinner nicht bekannt und kümmert sich nicht um esc.
Der Code ist vollständig in sich geschlossen und wurde in Chromium 25 unter Linux getestet. Firefox mag es nicht sehr.
Einige Credits an Shmiddty für Verbesserungen
quelle
Verarbeitung, 487 Zeichen
Beispielbild:
Dieser Code wurde mit Rücksicht auf die Kürze erstellt, daher ist er ziemlich fehlerhaft (der Ball geht manchmal durch das Paddel oder wickelt sich darum herum). Die Kontrollen sind Q / A für Spieler 1 und O / L für Spieler 2.
quelle
C # - 1283 Zeichen
Hier kann man noch ein bisschen mehr Golf spielen, aber hier ist es.
Edit: Die Anforderung für eine kostenlose, unter Linux lauffähige Sprache wurde nicht erkannt ...
quelle
Tcl / Tk , 932 Bytes
Muss in der interaktiven Shell ausgeführt werden
Hinweis:
Nur eine sehr minimale Version von Pong, bei der der Ball nur in diagonalen Winkeln läuft und immer die gleiche Geschwindigkeit hat.
quelle