Dengan semangat menerapkan kembali permainan video klasik , saya ingin mengundang komunitas untuk menciptakan implementasi Tetris terbaik mereka .
Untuk referensi, tangkapan layar dari versi Tetris resmi NES.
Fitur yang Diperlukan
- Sistem penilaian yang masuk akal harus ada, yang memberikan penghargaan multi-line lebih dari membersihkan single-line. Skor saat ini harus terlihat setiap saat.
- Potongan berikutnya yang akan muncul harus ditunjukkan dengan cara tertentu.
- Distribusi tujuh tetromino harus cukup adil (yaitu pseudo-dipilih secara acak).
- Pengguna harus memiliki kemampuan untuk memutar bagian saat ini di kedua arah, serta mempercepat penurunannya.
- Ketika permainan telah berakhir, harus dengan jelas ditunjukkan bahwa permainan telah berakhir.
- Kode sumber harus terstruktur dan mudah dimengerti.
Fitur pilihan
- Memajukan kecepatan jatuh setelah sejumlah pembersihan (yaitu meningkatkan tingkat kesulitan), dan memajukan skor per baris jelas, sebanding dengan kecepatan.
- Gravitasi. Anda dapat memilih untuk menerapkan gravitasi 'klasik', di mana blok dapat tetap melayang di atas celah, atau Anda dapat memilih untuk menerapkan gravitasi 'isi banjir', di mana blok yang telah dipisahkan dari tetromino aslinya melalui jalur garis dapat jatuh menjadi terbuka kesenjangan.
- Skor tinggi dengan input nama.
- Animasi setelah baris dihapus, dan / atau setelah mendapatkan skor tinggi baru.
Keterbatasan
- Setiap perpustakaan yang digunakan ( jQuery , PyGame , dll.) Harus tersedia secara bebas.
- Ukuran kode sumber tidak boleh melebihi 4096 byte, tidak termasuk spasi dan komentar. Sumber daya eksternal apa pun (file data, gambar, dll.) Akan ditambahkan ke panjang kode, tidak termasuk file apa pun yang dihasilkan, seperti untuk skor tinggi.
Saya menyadari bahwa ini adalah pembatasan yang agak arbitrer; tujuan utama saya adalah untuk mencegah copy-paste dari implementasi yang ada, dan untuk mendorong singkat dan mandiri.
Kriteria Menang
Tantangan ini akan dinilai sebagai kontes popularitas , yang berarti bahwa pengajuan dengan jumlah suara terbanyak akan dipilih sebagai pemenang. Saat melakukan upvoting, saya mendorong pengguna untuk membatalkan setiap dan semua kiriman yang mereka rasa cukup memenuhi persyaratan yang disebutkan di atas.
Pemenang akan dipilih tidak lebih dari 2 minggu setelah solusi valid pertama. Selain itu, saya akan memberikan hadiah kepada pemenang, kira-kira sebanding dengan jumlah upvotes yang diterima pertanyaan ini ( 10 * #votes
dibulatkan ke atas ke 50 terdekat). Jika ada seri setelah periode 2 minggu berakhir, periode kompetisi akan diperpanjang satu minggu. Jika masih ada seri, saya berhak untuk memberikan suara terakhir.
Silakan minta klarifikasi. Semoga implementasi terbaik menang!
Jawaban:
Coba: http://tetris.muehe.org
Pembaruan Ada skor tinggi global. Nikmati pemukulan atau - sebagai alternatif - meretasnya :-)
Versi CoffeeScript dan HTML, harus memenuhi persyaratan sepengetahuan saya (dan saya belum pernah benar-benar memainkan Tetris).
Github https://github.com/henrik-muehe/tetris
fitur
sumber
Pascal
Dikembangkan di FreePascal 2.6.2, juga harus dikompilasi dengan Turbo Pascal 6.0. Hanya unit Crt yang digunakan, tidak ada sumber daya eksternal.
Tangkapan layar
(Di Linux, di jendela XTerm.)
Kontrol
Mencetak gol
Level dimulai pada 1 dan meningkat setelah setiap 25 baris selesai. (Beberapa baris diselesaikan sekaligus dihitung sebagai 1.)
Pengukuran
sumber
Java (Swing)
Ini adalah implementasi dari edisi Game Boy historis pertama dari Nintendo (c) dari tahun 1989.
Cara bermain:
Z= memutar kiri
X= memutar kanan
Left= bergerak ke kiri
Right= bergerak ke kanan
Down= bergerak ke bawah (perlahan)
Up= memutar ke kiri (hanya untuk penggunaan yang lebih mudah)
R= mengatur ulang permainan
Saya menghindari menggunakan lebih dari satu kelas (karena aspek golf muncul di pikiran saya). Tapi sekarang ini sudah tidak bisa golf lagi ... Namun, saya zip dan Base64-encoded satu Font-File dan satu Image-File, jadi saya bisa menggunakannya dalam satu-satunya file kelas.
Untuk menjalankannya, salin kode Java ke IDE Anda dan mulai. Anda tidak memerlukan perpustakaan atau sumber daya tambahan apa pun.
TODO:
Komentar dipersilahkan :)
sumber
import java.awt.event.KeyAdapter;
dan ubahnew KeyAdapter
menjadinew java.awt.event.KeyAdapter
.Lua - 2876
Tetris di terminal, bekerja pada sebagian besar sistem unix, lua murni, tidak ada lib tambahan yang diperlukan.
Kontrol adalah: wasd atau hjkl, w / k untuk drop, s / j untuk memutar, ad / hl untuk bergerak
Kecepatan meningkat dengan skor, setiap kali beberapa baris dihapus, Anda mendapatkan kuadrat jumlah garis yang dihancurkan
Ini bukan solusi golf yang paling mungkin, tetapi saya memutuskan untuk golf sedikit pula. Baris baru hanya untuk menyesuaikan teks dalam 80 cols, saya tidak memasukkannya dalam jumlah karakter.
sumber
cat
.cat
, saya sudah menggunakan butterfilesC-x
M-c
M-butterfly
...Mathematica
Kode ini ditulis dalam Mathematica oleh Xiangdong Wen dan sebenarnya dapat dimainkan di browser web di sini: Shape Descender (klik pada gambar untuk memulai tombol panah). Di bawah ini adalah cuplikan layar dan kode lengkap - yang cukup menarik untuk aplikasi web lengkap game ini.
Kode
sumber
C
Saya menulis ini yaa lalu lalu sambil duduk bosan di kelas di sekolah menengah. Seharusnya, programmer asli menulis versi pertama Tetris menggunakan tanda kurung kotak, dan sepertinya cukup sederhana untuk mencoba dan membuat ulang, bukan? Saya tidak tahu apa-apa tentang GUI, jadi saya membuat program konsol yang bagus dan kuno. Ini kembali sebelum saya belajar C ++ dan praktek-praktek pemrograman sial yang tepat, sehingga kode mungkin agak berantakan. Saya cukup banyak hanya mengayunkannya.
Itu memenuhi semua persyaratan tantangan, kecuali potongan hanya berputar dalam satu arah (searah jarum jam). Gunakan WASD untuk bermain, W memutar lagu. Kode sumber dan exe lengkap dapat ditemukan di sini: http://sourceforge.net/projects/tklone/files/tklone/tklone-v1.0/
tetris.c
setPiece.c
sumber
Saya membuat versi javascript https://marchingband.github.io/tetris/
sumber
dom[p.x][p.y+1].style.background
kembaliblue none repeat scroll 0% 0%
, jadi tidak akan pernah samablue
. Solusi Anda valid, tetapi saya sarankan untuk mengubah semua.style.background
→.style.backgroundColor
berfungsi dengan baik di Firefox dan Chrome.