Dapatkah Anda menulis sebuah program yang menampilkan sekelompok piksel yang meledak terpisah (seperti pada mesin partikel sederhana) dan dapatkah Anda melakukan ini dalam sejumlah kecil karakter (penekanan tombol)? (Ingat lemming permainan, ketika orang-orang kecil itu akan meledak dan potongan-potongan piksel kecil mereka terbang terpisah.)
Seseorang memprogram sistem partikel sederhana di sini sebagai sketsa Pemrosesan dan cukup lumayan dibandingkan dengan apa yang saya pikir orang lain dapat capai jika mereka mencobanya. Tetapi saya akan jauh lebih terkesan jika seseorang dapat melakukan hal yang sama di c ++ dan sdl, atau bahkan java atau c #.
Jawaban:
Python, 245 karakter
sumber
C #, WPF - 1523
Tidak terlalu serius; ini terutama merupakan upaya apakah itu benar-benar berhasil.
Apa yang saya lakukan di sini adalah menggunakan ItemsControl (Menu, karena lebih pendek) di WPF untuk menampilkan partikel melalui pengikatan dan templating data. Templat data mengontrol bagaimana bentuk partikel (dalam hal ini lingkaran sederhana) dan pengikatan data mengontrol warna dan posisi partikel.
Setiap partikel memiliki posisi, warna dan arah yang dapat diperbarui oleh pengatur waktu. Awalnya sekelompok partikel dihasilkan di tengah jendela dengan arah acak (terdistribusi normal). Koleksi itu mendapat data-terikat ke ItemsControl yang kemudian menangani menampilkan partikel secara otomatis, setiap kali properti diperbarui. Partikel terseret sedikit karena gravitasi.
Memang agak panjang, harus diakui. Tapi setidaknya itu terlihat bagus:
Itu pasti bisa dibuat lebih pendek dengan menghilangkan:
Saya memilih untuk tidak melakukannya demi kepentingan estetika. Solusi ini jauh lebih lama daripada hampir semua hal lainnya. Pendekatan data-binding dan templating mungkin elegan tetapi juga sangat bertele-tele dibandingkan dengan hanya memperbarui bitmap. (Catatan: Saya turun ke 1356 dengan membiarkan semua hal di atas keluar, tapi itu terlihat mengerikan kemudian.)
Kode didistribusikan dalam tiga file, yang diberikan di sini dalam bentuk yang diformat untuk keterbacaan:
App.xaml
W.xaml
W.xaml.cs
sumber
catatan tambahan -
287244 karakterjalankan bersama
gs -dNOPAUSE asplode.ps
Anda bahkan bisa mencetaknya dan membuat flipbook
sumber
Javascript - 268 karakter
Inilah ledakan 1 dimensi, 2 partikel,:
Untuk menjalankannya, buka halaman about: blank di browser web yang bagus, rekatkan ke bilah url dan tekan enter. Anda dapat memodifikasi ledakan dengan mengedit nilai di bagian akhir
s(10,5,1,0)
. Nilai pertama adalah ukuran partikel yang meledak. Nilai kedua adalah ukuran partikel yang meledak keluar darinya. Nilai ketiga adalah kecepatan partikel yang meledak darinya. Biarkan '0' apa adanya.sumber
APL (
120118)Ini memiliki jenis output yang sama dengan entri Python (yaitu hanya menampilkan status pada kotak karakter). Hanya kisi-kisi 30x15 dan asal partikel pada 15x7.
sumber
JavaScript
502500496Ini adalah kombinasi dari jawaban Joey dan david4dev (ini adalah salinan tak tahu malu dari algoritma Joey yang diimplementasikan menggunakan Javascript / kanvas ☺):
Pratinjau JSFiddle: http://jsfiddle.net/GVqFr/60/ (Anda dapat menekan tombol TidyUp untuk memformat kode dengan baik)
sumber
500
. Jika Anda dapat mendefinisikan variabel globala=500
, Anda dapat menyimpan beberapa karakter dengan mengganti semua500
dengana
.250
juga.Bash 380
Sebut e like explode.
pembaruan: berwarna
t = teks, c = cls, g = gotoxy, f = fly, C = COLOR
sumber
C dengan SDL, 423 karakter
Karena deskripsi masalah asli secara eksplisit menyebutkan SDL, saya merasa sudah lewat masa solusi SDL diajukan. Sayangnya, nama-nama fungsi dan struct SDL tidak terlalu singkat, jadi program ini agak panjang. Bahkan, saya bahkan tidak bisa meninggalkan
#include
.(Karena kodenya sudah sangat besar, saya meninggalkan beberapa bit tambahan sehingga akan dikompilasi tanpa peringatan. Kadang-kadang saya ketinggalan kompilasi tanpa peringatan. Menghapusnya akan menghemat sekitar 30 atau lebih karakter.)
Animasi berjalan dalam loop yang tak terbatas. Tutup jendela untuk keluar dari program. Setiap ledakan menggunakan set partikel acak baru.
Saya juga ingin menunjukkan nomor
67372036
dalam kode. Itu muncul dalam ekspresi untuk argumen terakhir dalam panggilan kedua keSDL_FillRect()
. Sebagai kode berdiri, ledakan itu sepenuhnya menjadi abu-abu. Mengubah nomor ini sedikit akan menambah efek warna yang sangat halus tapi menyenangkan untuk ledakan. Nomor67372032
warna partikel pada awal ledakan, sedangkan nomor67372034
memberikan efek warna saat mereka memudar pada akhirnya. Nomor lain dapat menghasilkan efek siklus warna yang lebih halus. Saya mendorong Anda untuk mencobanya.sumber
Setelah melihat beberapa contoh hebat lainnya di sini, saya memutuskan untuk mencobanya, dan membuat fungsi partikel yang sesuai dengan 140byt.es
Javascript, 282 karakter
( 138 karakter chars fungsi dan 150 karakter dasar kanvas menggambar boilerplate)
Contoh langsung JSFiddle di sini
Dengan membuat kode sepenuhnya prosedural saya tidak lagi membutuhkan kode array atau objek-tugas, mengurangi ukuran banyak. Membuat efek prosedural juga memiliki beberapa efek samping yang bagus.
Kode dapat dibuat lebih kecil dengan menonaktifkan Gravity, Seeds, Number of Particles, dll, tapi saya pikir fitur ini terlalu bagus untuk dihapus;).
fitur
Periksa juga di GitHub , untuk versi yang beranotasi.
sumber
Python dengan PyGame, 240 karakter
Saya menyadari bahwa sudah ada solusi dalam python, tetapi karena yang hanya mencetak karakter, saya pikir akan bermanfaat untuk membuat satu yang menarik animasi yang bagus.
Tidak disatukan, apa yang saya mulai dengan:
Setelah banyak peretasan. Layar penuh untuk menyimpan beberapa karakter. Tidak menggunakan suara atau font, jadi saya pikir
init()
tidak perlu (ini berfungsi untuk saya).sumber
Python - 327 karakter
Hal-hal menarik:
(v * cos(a), v * sin(a))
diimplementasikan sebagaiv*e**(1j*a)
.
sumber
dwitter 112
coba dengan menyalin / menempel kode ke dwitter.net
sumber