Game itu menyenangkan
codegolf ini di sini sangat menyenangkan saya harus membuat versi untuk permainan klasik lain yang memiliki kompleksitas yang sama. Cara Terpendek untuk membuat Game Space Invaders dasar dengan Python
Namun, kali ini, cobalah untuk menciptakan kembali permainan 'Ular' klasik, di mana Anda memulai sebagai bentuk kecil, terus-menerus bergerak untuk mengumpulkan potongan-potongan untuk meningkatkan skor Anda. Ketika Anda mengumpulkan sepotong, 'ekor' Anda tumbuh, yang mengikuti jalan yang telah Anda buat. Tujuannya adalah untuk bertahan paling lama tanpa menabrak ekor Anda sendiri, atau ke dinding
Kualifikasi:
- Anda, karakter yang membentuk ekor, dinding, dan potongan yang Anda kumpulkan semua harus karakter yang berbeda
- menunjukkan HUD dengan skor. Skor meningkat 1 poin untuk setiap bagian yang Anda kumpulkan
- Pemain kalah ketika mereka bertabrakan dengan ekor mereka sendiri atau dinding
- sepotong memunculkan di area acak segera setelah sepotong dikumpulkan, belum lagi pada awal permainan
- Kecepatan permainan tidak masalah, asalkan konsisten
'Sel' harus 2x1 karakter, karena ketinggian karakter blok adalah ~ dua kali lebarBisa 1x1, karena 2x1 hanya jelek dan saya tidak benar-benar memikirkan itu- Kunci untuk mengubah arah harus masing-masing
awsd
, kiri, atas, bawah, kanan - arah awal harus selalu di atas
- Anda harus menunjukkan tepi dinding. Skor mungkin tumpang tindih dengan tembok
Kode terpendek yang memenuhi kriteria di atas menang. Poin Bonus imajiner untuk kreativitas
awsd
danstarting direction should always be up
persyaratan,M-x snake
akan bekerjaM-: (progn(define-key snake-mode-map"a"'snake-move-left)...(setq snake-initial-velocity-x 0 snake-initial-velocity-y 1)(snake))
akan melakukan trik itu.Jawaban:
JavaScript (
553512 bytes)Tautan ke versi yang dapat diputar
Saya mencoba untuk membuatnya output ke konsol nyata pada awalnya (dengan
console.log
danconsole.clear
), tetapi terlalu banyak berkedip, jadi saya memasukkannya ke HTML seperti konsol. Ini akan bekerja dengan ini:Saya juga menerapkannya dengan sel 2x1 terlebih dahulu, tetapi hanya terlihat lebih buruk dari 1x1. Itu akan menjadi perubahan kecil.
Menggunakan
awsd
tombol pada keyboard.Memperbarui:
Saya dapat memotongnya menjadi 512 (tepatnya 0x200) byte dengan meningkatkan pencarian ekor dan melakukan lebih banyak sihir.
Anda sekarang mendapatkan 2 poin ketika sepotong muncul di ekor Anda (itu adalah fitur). Saya juga memperbaiki tumpang tindih ketika ular menggigit dirinya sendiri.
sumber
awsd
Kode Mesin x86 (128 byte)
Sama seperti pengajuan saya untuk Menghasilkan Fraksi Mandlebrot , saya menulis sebuah prod untuk permainan ular dalam 128 byte. Itu tidak sepenuhnya memenuhi persyaratan tantangan (itu mulai bergerak ke kanan, tidak semua dinding digambar), tapi saya mempostingnya karena saya pikir ini adalah solusi yang menarik dan kreatif. Skor ditampilkan dalam biner di sebelah kanan, tombol panah mengontrol arah gerak, 'makanan' dijatuhkan secara acak, dan berakhir jika Anda menabrak diri sendiri, dinding, atau tepi layar.
Tautan untuk kode yang dapat dieksekusi dan sumber
Juga, berkenaan dengan komentar sebelumnya tentang apakah dosbox curang, saya pikir sangat bisa diterima asalkan dalam mode tampilan berbasis teks, karena itu hanya terminal dos.
sumber
16 bit 8086
526 byte / 390 byte
Dekode ini menggunakan decoder Base64 dan beri nama "snake.com" kemudian jalankan dari command prompt Windows. Diuji pada WinXP, Anda mungkin perlu menggunakan DosBox untuk mendapatkan mode video yang tepat. Kunci kontrol adalah 'WASD' dan ruang untuk keluar. Tekan 'w' untuk memulai.
Ini versi mode karakter yang panjangnya 390 byte:
Mode ini memiliki tiga byte lebih lama (tetapi ular lebih baik):
sumber
shell / sh, 578 karakter
Saya mencoba untuk menjadi POSIX compliant (menjadi portable sebanyak mungkin dan menghindari bashism, bahkan generator nomor acak tidak perlu / proc). Misalnya Anda dapat memainkannya di terminal asli Anda atau melalui sesi SSH: jalankan dengan 'dash -c ./snake' Ada juga varian yang tidak dapat dibaca / dibaca dalam ~ 2800 byte, yang dapat dilihat di sini .
Beberapa catatan: shell-scripting tidak cocok untuk coding game 8-)
sumber
a
berhenti. Aneh.echo -n
sudah pasti tidak portabel. Jika operan pertama adalah -n, atau jika salah satu operan berisi karakter backslash ('\'), hasilnya adalah implementasi yang ditentukan. Menggunakan gema untuk apa pun selain teks literal tanpa sakelar tidak portabel. pubs.opengroup.org/onlinepubs/009604599/utilities/echo.htmlRuby 1.9 / Windows saja / (
354 337 355346 byte)Dimainkan di papan 20x40 di konsol windows. Skor ditampilkan di bawah papan. Gunakan
WASD
untuk mengontrol ular, kunci lain untuk keluar (dengan paksa!). Edit waktu tidur di akhir baris 5 untuk mengontrol kecepatan. (Atau simpan 10 karakter dan buat hampir tidak bisa dimainkan dengan menghilangkan sleep sepenuhnya!)Fitur bonus: gagal memulai secara acak (ketika bagian awal dihasilkan di lokasi ular).
Saya membutuhkan ~ 100 karakter untuk mengatasi kekurangan getchar yang tidak menghalangi. Rupanya Ruby 1.9.3 termasuk pustaka "io / konsol" yang akan menghemat sekitar setengah dari itu. Dan solusi ini khusus untuk Windows. Ada solusi yang diterbitkan untuk melakukan hal yang sama dalam sistem * nix, tapi saya belum mengujinya untuk membandingkan jumlah karakter.
Edit:
Harus menambahkan 18 byte setelah saya menyadari bahwa ekor hanya tumbuh setelah makan, bukan setelah setiap langkah.
Sunting 2: (Mungkin) memperbaiki masalah tabrakan, menyelamatkan 9 byte dengan membatasi ke satu item makanan.
sumber
9.times{}
, menyimpan 9 karakter.Applesoft Basic - 478 (462)
Ini adalah golf kode pertama saya, tetapi ditulis kembali pada tahun 1989, dan sebagian besar mengimplementasikan permainan ular seperti yang diminta (tetapi tanpa makanan, ular hanya terus tumbuh, dan itu sebenarnya dua pemain, bukan satu) hanya menggunakan dua baris Applesoft Basic.
Ada sejumlah kontes program dua jalur pada saat itu, seperti dalam jurnal Dr. Dobbs. Saya menghabiskan 6 bulan untuk mencari tahu bagaimana mencocokkan ini menjadi dua baris yang memiliki batas 255 karakter (dan hanya satu cabang)
Info lebih lanjut di: http://davesource.com/Projects/SpeedWaller/
Program yang diketik persis dua baris:
Daftar ketika diformat terlihat seperti ini:
Permainan ini sebenarnya adalah dua pemain dan termasuk "instruksi" di bagian bawah halaman yang menunjukkan kunci serta penghitung sehingga Anda dapat melihat berapa banyak langkah Anda selamat. Ini 478 karakter, 16 di antaranya adalah instruksi dan output counter, jadi 462 jika Anda ingin mencukurnya.
sumber
C # .NET Framework 4.7.2 Konsol (
2.4562.4402.4242.4082.0521.9731.7471.686 byte)Ini menyenangkan, tetapi saya benar-benar harus memikirkan variabel apa itu apa, karena mereka hanya satu huruf.
Beberapa tangkapan layar:
Biner: https://github.com/wooden-utensil/snakeCodeGolf/releases/tag/v1.0.0.0
Repositori GitHub: https://github.com/wooden-utensil/snakeCodeGolf
Changelog: https://github.com/wooden-utensil/snakeCodeGolf/releases
sumber
Console.Write("Score:"+l);Console.WriteLine()
->Console.WriteLine("Score:"+l)
(int X,int Y)d; ...; d=(0,-1)
? Itu mungkin menghemat byte. Saya juga tidak bisa melihat mengapa yang Anda lakukanVector2 d;Vector2 c;Vector2 a;
bukanVector2 d,c,a
. Saya pikir Anda juga dapat menyimpan fungsi Console.SetCursorPosition sebagaiAction<...>
variabel huruf tunggal. Anda dapat mengurangi DateTime dengan - operator. Anda juga dapat mendeklarasikan variabel loop secara global dan hanya nolkannya saat diperlukan, tanpa mendeklarasikannya.1>0
atau menyimpantrue
dalam suatu variabel alih-alih menggunakan kata kunci. Anda mungkin dapat menggunakan operator -> mulia di loop. PadaDateTime b = DateTime.Now
bagian itu,b
bisa jadivar
. Anda mungkin atau mungkin tidak dapat menyimpan beberapa byte menggunakandynamic
(sering memungkinkan Anda menggabungkan deklarasi yang diketik berbeda).m.write(String)
ke dalam fungsi panjang satu huruf itu sendiri mungkin akan menghemat satu tonb.width
danb.height
banyak yang mungkin bisa disimpan ke var lokal 1 surat-bernama lainPython 3 - 644
Tidak berhenti dengan bersih. Sepotong mungkin hilang jika memunculkan di atas ular.
sumber
Bash (terlalu banyak karakter: kira-kira 1522)
sumber