Tumbuh dewasa, sistem game konsol pertama saya adalah Atari 2600 dan saya akan selalu memiliki cinta untuk beberapa game yang sangat saya nikmati sebagai seorang anak. Banyak gambar yang masih berkesan, bahkan mungkin ikon.
Ternyata sprite ini adalah bitmap yang sangat sederhana, lebar 8 piksel dengan tinggi variabel di mana representasi biner adalah susunan piksel.
Misalnya, byte heksa 0x18, 0x24, 0x18 akan menggambar lingkaran kasar seperti:
0x18: 00011000
0x24: 00100100
0x18: 00011000
Karena lebar 8 piksel menghasilkan grafik yang cukup kecil (bahkan menurut standar Atari 2600), adalah umum untuk menggandakan atau melipatgandakan tinggi, lebar, atau keduanya untuk membuat versi gambar yang sama lebih besar (meskipun lebih gumpal dan terdistorsi). Mereka umumnya juga dibalik secara vertikal atau horizontal untuk sprite dan playfield pemain. Game Combat adalah contoh yang bagus untuk ini.
Tantangannya adalah, menulis kode untuk menampilkan sprite ini sebagai "grafik" dalam bentuk ASCII termasuk kemampuan untuk merentangkan atau membalikkannya secara vertikal, horizontal atau keduanya. Ini harus dalam bentuk program lengkap, atau fungsi yang dapat dipanggil.
Memasukkan:
- Array byte, masing-masing mewakili bit horizontal untuk garis itu.
- Nilai integer non-nol untuk setiap arah, horizontal dan vertikal mewakili faktor penskalaan untuk dimensi itu.
- Nilai negatif menunjukkan bahwa dimensi juga harus dibalik sepanjang porosnya.
Keluaran:
- Representasi ASCII ke STDOUT atau string yang dipisahkan baris baru, menggunakan karakter spasi untuk piksel hitam (0) dan karakter non-spasi cetak yang dapat dicetak pilihan Anda untuk piksel putih (1).
Data uji:
bmp1 = [ 0x06, 0x0F, 0xF3, 0xFE, 0x0E, 0x04, 0x04, 0x1E, 0x3F, 0x7F, 0xE3, 0xC3, 0xC3, 0xC7, 0xFF, 0x3C, 0x08, 0x8F, 0xE1, 0x3F ]
bmp2 = [ 0x07, 0xFD, 0xA7 ]
bmp3 = [ 0x00, 0x8E, 0x84, 0xFF, 0xFF, 0x04, 0x0E, 0x00 ]
bmp4 = [ 0x00, 0xFC, 0xFC, 0x38, 0x3F, 0x38, 0xFC, 0xFC]
Catatan: Di atas contoh, array input byte disediakan sebagai hex. Jika platform Anda tidak menerima hex literal untuk representasi byte, Anda dapat mengonversinya menjadi literal setara-byte asli.
Contoh Output:
f( bmp1, 1, 1 ) =>
--------
XX
XXXX
XXXX XX
XXXXXXX
XXX
X
X
XXXX
XXXXXX
XXXXXXX
XXX XX
XX XX
XX XX
XX XXX
XXXXXXXX
XXXX
X
X XXXX
XXX X
XXXXXX
--------
f( bmp1, -2, 1 ) =>
----------------
XXXX
XXXXXXXX
XXXX XXXXXXXX
XXXXXXXXXXXXXX
XXXXXX
XX
XX
XXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXX XXXXXX
XXXX XXXX
XXXX XXXX
XXXXXX XXXX
XXXXXXXXXXXXXXXX
XXXXXXXX
XX
XXXXXXXX XX
XX XXXXXX
XXXXXXXXXXXX
----------------
f( bmp2, 1, 2 ) =>
--------
XXX
XXX
XXXXXX X
XXXXXX X
X X XXX
X X XXX
--------
f( bmp2, 2, 1 ) =>
----------------
XXXXXX
XXXXXXXXXXXX XX
XX XX XXXXXX
----------------
f( bmp2, -2, -2 ) =>
----------------
XXXXXX XX XX
XXXXXX XX XX
XX XXXXXXXXXXXX
XX XXXXXXXXXXXX
XXXXXX
XXXXXX
----------------
f( bmp3, 1, -1 ) =>
--------
XXX
X
XXXXXXXX
XXXXXXXX
X X
X XXX
--------
f( bmp3, 3, 3 ) =>
------------------------
XXX XXXXXXXXX
XXX XXXXXXXXX
XXX XXXXXXXXX
XXX XXX
XXX XXX
XXX XXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXX
XXX
XXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
------------------------
f( bmp4, -1, -1 ) =>
--------
XXXXXX
XXXXXX
XXX
XXXXXX
XXX
XXXXXX
XXXXXX
--------
f( bmp4, 4, 2 ) =>
--------------------------------
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
--------------------------------
Catatan: garis horizontal di atas dan di bawah ini menunjukkan awal dan akhir output. Mereka tidak diperlukan dalam output, namun baris kosong (diwakili oleh semua nol / spasi) pada awal dan / atau akhir diperlukan, seperti yang ditunjukkan.
Catatan 2: bitmap uji ini terinspirasi oleh dan digambar ulang / dikodekan berdasarkan tangkapan layar gim yang ditandai sebagai "penggunaan wajar" di Wikipedia.

