Zu Ehren von Star Wars Tag , ein Programm schreiben Sie den folgenden Text angezeigt werden , wie das Scrollen Wars - Öffnung kriechen Stern :
It is a period of civil war. Rebel
spaceships, striking from a hidden
base, have won their first victory
against the evil Galactic Empire.
During the battle, Rebel spies managed
to steal secret plans to the Empire's
ultimate weapon, the Death Star, an
armored space station with enough
power to destroy an entire planet.
Pursued by the Empire's sinister agents,
Princess Leia races home aboard her
starship, custodian of the stolen plans
that can save her people and restore
freedom to the galaxy...
Sie können ein animiertes GIF ausgeben oder von Ihrem Programm anzeigen lassen. Die Ausgabe muss Folgendes anzeigen:
- Der Text muss am unteren Rand des Bildes / der Anzeige beginnen
- Es muss nach oben scrollen, bis es oben ankommt. Es muss mindestens
30
Sekunden dauern, bis ein Textstück oben angekommen ist. Die Animation muss fortgesetzt werden, bis der gesamte Text oben angekommen ist. - In diesem Abstand muss der Text kleiner werden, bis er kleiner ist als
1/3
die Größe (Länge und Schriftart). - Der Text muss geneigt sein, um diesem Winkel zu folgen.
- Der Text muss links und rechtsbündig sein. Der angegebene Text ist für monospaced Schriftarten bereits berechtigt. Sie können jedoch die zusätzlichen Leerzeichen (keine Zeilenumbrüche) entfernen und selbst begründen.
- Der Text muss gelb sein
- Der Hintergrund muss schwarz sein
Dieses Video zeigt den Eröffnungs-Crawl.
Viel Glück und möge der vierte mit dir sein !
Antworten:
HTML, 762
Art von abgehackt (zu lesen: extrem abgehackt: P).
Hier ist ein JSFiddle (mit
-webkit-
Herstellerpräfixen, damit es in Chrome funktioniert).quelle
HTML / CSS, 1047
Ich könnte viel mehr Golf spielen, indem ich die
-webkit
Präfixe usw. lösche, aber dies wird vorerst ausreichen:Live-Demo
quelle
HTML + CSS + SVG
16141625Ich wollte auch visuell korrekt sein. SVG zum Maskieren und Animieren. HTML + CSS für Transformationen. Ich habe nicht geprüft, ob der Text genau 1/3 groß ist.
Empfohlene Anzeige in Chrome aufgrund des
-webkit-
Präfixes. Erfordert CSS 3D-Transformationen. Möglicherweise müssen Siechrome://flags
'Software-Rendering-Liste überschreiben' öffnen und auswählen.In bytecount sind Zeilenumbrüche und Leerzeichen enthalten.
Update 1: Unterstützung für Firefox und andere Browser, die keine Präfixe benötigen, hinzufügen. 11 Bytes hinzugefügt, auch nach weiteren Aufräumarbeiten. Bereinigung war möglich, da Browser SVG glücklicherweise mit HTML-Crunching-Parsern interpretieren und nicht mit XML-Compilant-Parsern.
Leben
quelle
PerlMagick, 661 Programm + 547 Textdatei = 1208
Zu spät für das Jubiläum, aber OP sagte "animiertes GIF", also ...
TL; DR: Ein Link zu animiertem GIF (5 Mb, 480 * 240, 1360 Frames) (es gibt jedes Mal einen Fehlstart, wenn ich diesen Link jetzt versuche - er befindet sich nicht in der Datei, versuchen Sie es vielleicht zuerst herunterzuladen. Und ein leichtes Flackern.) ... vielleicht erkläre ich es später, - kein Kinderspiel, die ganze IM- und GIF-Idee;)).
Mit Zeilenumbrüchen und Einrückung zur besseren Lesbarkeit:
Es liest Text aus STDIN, aber die Geometrie ist hartcodiert, so dass wahrscheinlich jeder andere Text keine gute Idee wäre. Es könnte kürzer sein, aber ich habe dem Text eine Überblendung hinzugefügt, wenn er oben angekommen ist. Wenn ich um ein Pixel nach oben ging, ergab sich eine abgehackte Animation, sodass ich etwas interpoliert habe. Es verbraucht 2,2 GB RAM und benötigt 2-3 Minuten auf einem 8-jährigen Desktop (und funktioniert wahrscheinlich nicht für Windows-Benutzer). So erhalten Sie ein GIF: Ersetzen Sie die letzte Zeile (oder fügen Sie sie hinzu) (erstellt 200+) MB-Datei):
Und dann renn
Kompromisse zwischen Qualität (Palettengröße usw.) und endgültiger GIF-Größe sind offensichtlich.
$i->Remap
Das direkte Aufrufen von PerlMagick aus funktioniert nicht, es gibt wahrscheinlich einen Fehler, es dauert Stunden, bis es (glaube ich) versucht+remap
. Tatsächlich kann eine vernünftige (nur geringfügig größere) GIF-Größe ohne globale Palette erreicht werden, wobei jedoch$i->Quantize
jede lokale Frame-Palette auf die erforderliche Größe reduziert wird. Oh, und ohne Optimierung der Palette, dh Speichern von GIF aus dem obigen Skript "wie es ist" ergibt eine GIF-Datei von etwa 9 MB.quelle