Puzzle Script adalah mesin game minimalis untuk membuat puzzle untuk HTML5, ia memiliki sumber terbuka. Contoh game yang sudah jadi dapat ditemukan di
sini .
Bagian 1. Kami membuat game pertama di Puzzle Script.
Puzzle Script adalah program online gratis yang digunakan untuk membuat game puzzle. Dia terkenal karena membuat puzzle blok seperti
The Nodus saya. Di bagian ini kita akan membuat game, setelah mempelajari fungsi dasar Puzzle Script, dan di bagian selanjutnya kita akan mulai pemrograman.
Pergi ke
situs web mesin. Klik
Make a Game untuk membuka
editor Puzzle Script .
Mengunduh Contoh
Untuk memulai, mari kita lihat beberapa contoh. Di bagian atas layar, buka daftar "Muat Contoh" dan pilih contoh pertama yang disebut "Dasar". Sekarang klik pada "Run".
Layar game akan muncul. Klik di dalam jendelanya dan tekan Enter pada keyboard.
Coba mainkan game. Tujuan Anda adalah mendorong kotak oranye ke kotak target hitam. Ketika ada kotak di setiap target, level akan dilewati. Anda dapat menekan Z untuk membatalkan langkah, atau R untuk memulai kembali level.
Buat game pertama
Sekarang kita akan membuat beberapa level. Saya akan membuat satu bersama Anda, dan saya menyarankan orang lain untuk membuat milik saya sendiri. Klik pada "Level Editor" di menu atas.
Jika Anda tidak melihat layar editor level, lalu klik "Jalankan" dan mulai permainan. Setelah di level, klik lagi pada tombol "Level Editor". Ini akan memungkinkan Anda untuk mengedit level di mana Anda baru saja.
Buat level baru
Di atas adalah objek permainan. Ketika mengklik kiri, objek yang dipilih diambil. Klik kanan menggambar objek "latar belakang". Mengklik kiri di tepi peta memperbesar ukurannya, mengklik kanan menguranginya.
Untuk lulus level, Anda harus memberi kotak pada setiap tujuan, jadi pada setiap level harus ada minimum:
Klik kanan untuk mengubah semuanya menjadi rumput. Kemudian klik kiri pada tepi level untuk membuatnya lebih besar, dan akhirnya gambar level yang terlihat seperti yang ditunjukkan di bawah ini.
Tambahkan ke daftar level.
Setelah selesai membuat level, kami akan menambahkannya ke daftar level. Di editor level, klik pada huruf putih S di sebelah daftar objek game untuk menyimpan level yang dibuat.
Pesan tentang kompilasi yang berhasil dan kisi-kisi karakter lucu harus ditampilkan di bawah editor level, seperti yang ditunjukkan di bawah ini.
Karakter lucu ini menunjukkan level yang baru saja kita buat. Setiap karakter mewakili objek yang terpisah. Di sisi kiri layar, turun dan temukan LEGENDA. Legenda memberikan penjelasan masing-masing karakter:
. = Latar Belakang
# = Dinding
P = pemain
* = Peti
@ = Peti dan Target
O = target
Semua yang ada di sisi kiri layar adalah kode permainan, dibagi menjadi beberapa bagian, seperti OBYEK atau LEGENDA. Turun ke LEVEL. Di sini kita melihat level yang digunakan dalam contoh.
Untuk menambahkan level baru, buat baris kosong baru di bagian bawah bagian level. Kemudian salin karakter yang dihasilkan untuk level kita dan rekatkan di sana. Semua level ditambahkan.
Kami akan mengujinya. Setelah membuat level baru, Anda perlu menekan tombol "Run" di bagian atas layar lagi untuk memulai kembali game dengan level baru. Terkadang ini tidak berhasil, dan kemudian Anda perlu mengklik tombol "Rebuild", dan kemudian klik "Jalankan" lagi.
Menyimpan dan memuat game
Cobalah untuk membuat beberapa level baru. Saat Anda siap untuk menyimpan game, lanjutkan ke awal kode dan masukkan nama Anda sendiri, nama penulis dan halaman beranda, lalu klik tombol "Simpan".
Sejumlah kecil simpanan disimpan di menu โLoadโ di komputer Anda. Namun, ada tombol "Bagikan" di bagian atas layar. Ketika Anda mengkliknya, sebuah pesan dengan dua tautan web dibuat.
Salah satu tautan adalah kode sumber proyek Anda. Yang kedua adalah tautan ke versi permainan yang bisa dimainkan yang bisa Anda bagikan dengan teman. Saya merekomendasikan secara berkala membuat tautan baru ke kode sumber dan menyimpannya dalam beberapa dokumen teks sehingga Anda memiliki versi proyek yang disimpan secara permanen.
Ekspor Game
Anda juga dapat mengekspor game sebagai file html5, yang kemudian dapat Anda unggah ke portal game, seperti
itch.io ,
Kongregate, atau
Newgrounds . Cukup klik "Ekspor" dan unggah file html yang diunduh ke portal game.
Proyek sampel kami dapat ditemukan di
sini .
Bagian 2. Memulai dalam Script Puzzle
Di bagian ini, kita akan belajar cara memulai pemrograman dalam
Puzzle Script .
Kode
Buka
proyek sampel . Kode program ada di sisi kiri layar, dibagi menjadi beberapa bagian: Objek, Legenda, Suara, dll. Di bagian Aturan, aturan untuk interaksi objek diatur. Pergilah ke dalamnya. Seharusnya hanya ada satu baris kode:
[ > Player | Crate ] -> [ > Player | > Crate ]
Baris ini berarti bahwa jika pemain berada di dekat kotak dan bergerak ke arahnya, permainan memindahkan pemain dan mendorong kotak. Untuk menjelaskan cara kerjanya, Anda perlu memahami bahwa kode Script Puzzle mengikuti struktur ini:
[ ] -> [ ]
Ini berarti yang berikut:
[ ] -> [ ]
Script Puzzle memeriksa kondisi di sebelah kiri panah, misalnya, apakah objek pemain berada di sebelah objek kotak. Jika kondisinya benar, maka kami melakukan sesuatu, misalnya, mendorong kotak.
Contoh kondisi
Ini adalah contoh dari suatu kondisi:
[ object1 | object2 ]
Acara ini memeriksa apakah objek1 di sebelah objek2. Anda dapat memeriksa apakah dua objek bersebelahan dengan menempatkan
|
|
dimasukkan dengan menekan shift + \. Kondisi selalu tertutup dalam
[ ]
.
[ crate | crate ]
Kode di atas memeriksa untuk melihat apakah dua kotak berada di sebelah satu sama lain.
[ crate | crate | crate ]
Kondisi ini memeriksa apakah tiga kotak berada di dekatnya.
[ crate target ]
Kondisi ini memeriksa apakah kotak berada di atas target karena
|
|
antara dua objek. Objek bisa saling bertumpukan jika mereka berada di lapisan tabrakan yang berbeda, yang akan kita bahas di bagian tutorial berikut ini.
Kami menjaga kesetaraan
Aturannya harus seimbang. Pemeriksaan kondisi dan peristiwa yang mengikutinya harus dijelaskan dengan cara yang sama. Saya akan menunjukkan apa artinya itu.
[ player | crate ] -> [ player | ]
Baris kode ini menghancurkan kotak jika pemain di sebelahnya. Anda tidak bisa menulis:
[ player | crate ] -> [ player ]
karena kondisi di sebelah kiri memeriksa keberadaan benda-benda tetangga di dua ruang kotak yang terpisah, tetapi acara tersebut hanya menjelaskan satu ruang kotak yang ditempati pemain. Teka-teki Script perlu tahu apa yang harus dilakukan dengan spasi yang diperiksa. Kode yang benar untuk menghancurkan kotak harus melaporkan yang berikut:
[ | ] -> [ | ]
[ player | crate ] -> [ player | ]
Artinya, bahkan ruang kosong dalam masalah kode. Namun, entri berikut ini valid:
[ player target ] -> [ player ]
Karena dalam kondisi kami hanya berbicara tentang satu ruang kisi, acara tersebut menggambarkan ruang kisi yang sama.
Cara memindahkan kotak
Mari kita kembali ke baris kode yang asli.
[ > Player | Crate ] -> [ > Player | > Crate ]
Dengan kata lain:
[ | ] -> [ | ]
Panah> menekankan gerakan.
Terkadang kita perlu menulis komentar untuk mengingat apa yang dilakukan kode. Script Puzzle mengabaikan komentar - hanya untuk pengguna. Untuk menulis komentar, Anda harus memasukkan teks ke dalam tanda kurung. Kami menulis komentar atas aturan kami yang menjelaskan apa yang dilakukannya:
( )
[ > Player | Crate ] -> [ > Player | > Crate ]
Sekarang, di bawah kode push box, tulis yang berikut ini:
( )
[ < Player | Crate ] -> [ < Player | < Crate ]
Panah terbalik berarti bahwa jika pemain menjauh dari kotak, ia menarik kotak itu. Klik "Jalankan" untuk menguji tindakan ini. Anda harus dapat mendorong dan menarik kotak. Dalam pemrograman, bahkan dengan salah ketik dalam satu huruf, komputer mungkin tidak memahami kode, jadi singkirkan semua kesalahan. Saat membuat perubahan pada kode, klik "Jalankan" lagi untuk mengunduh perubahan. Jika permainan tidak berlaku sebagaimana mestinya, coba klik "Rebuild" untuk menghapus memori program, lalu klik "Jalankan".
Kadang-kadang perlu untuk menonaktifkan satu baris kode. Ubah saja menjadi komentar untuk disimpan untuk masa depan. Mari kita komentari kode untuk mendorong kotak, sehingga pemain hanya bisa membawa kotak:
( )
([ > Player | Crate ] -> [ > Player | > Crate ])
( )
[ < Player | Crate ] -> [ < Player | < Crate ]
Jika ini berhasil, maka komentar kode untuk menarik kotak dan coba yang berikut ini:
[ < Player | Crate ] -> [ < Player | > Crate ]
Jika pemain menjauh dari kotak, pemain dan kotak akan bergerak ke arah yang berlawanan. Panah menentukan ke arah mana objek bergerak atau akan bergerak. Sekarang beri komentar dan coba yang berikut ini:
[ > Player | Crate ] -> [ Player | > Crate ]
Kotak bergerak, tetapi pemain tetap di tempatnya. Percobaan dengan ^ dan v (huruf v) untuk melihat bagaimana objek akan bergerak.
Kesalahan
Mari kita sengaja menulis aturan yang salah dan melihat apa yang terjadi. Masukkan baris berikut:
[ < Player | Crate ] -> [ < Player ]
Cobalah untuk menjalankan program. Anda akan melihat pesan seperti ini:
baris 81: Dalam aturan, setiap pola yang cocok di sebelah kiri harus memiliki pola yang sesuai di sebelah kanan dengan panjang yang sama (jumlah sel).
Biasanya Puzzle Script menggambarkan kesalahan dengan sangat baik. Namun, terkadang Puzzle Script salah dengan sendirinya. Dalam kasus seperti itu, Anda harus membaca kode sendiri dan mencari tahu di mana kesalahannya.
Beberapa eksperimen lagi
Cobalah bereksperimen dan tulis sendiri peraturannya. Berikut ini beberapa contohnya.
[ > Player | โฆ | Crate ] -> [ > Player | โฆ | > Crate ]
Pada contoh di atas, pemain akan mendorong kotak jika mereka berada di mana saja pada garis yang sama tingkat, dan pemain bergerak ke kotak.
[ > Player | Crate ] -> [ Crate | Player ]
Kode ini menukar pemain dan kotak.
[ > Player | Crate ] -> [ Player | Target ]
Dalam kode ini, jika pemain berada di dekat kotak dan bergerak ke arahnya, pemain akan berhenti bergerak, tetapi kotak itu akan berubah menjadi target. Hal terbaik tentang Puzzle Script adalah kemudahan menciptakan hal-hal baru dan kemungkinan eksperimen.
Bagian 3. Membuat objek
Semua fragmen grafis dalam game pada Puzzle Script menunjukkan objek. Untuk membuat game di Puzzle Script, Anda harus membuat objek Anda sendiri. Pada bagian ini saya akan memberi tahu Anda cara membuatnya dan menambahkannya ke kode saya.
Informasi umum
Buka
proyek sampel . Proses membuat objek terdiri dari langkah-langkah berikut:
- Buat di daftar objek
- Menambahkan item ke legenda
- Menambahkan Tabrakan ke Layer
Setelah melakukan semua langkah ini, Anda dapat mulai menggunakan objek.
Penciptaan Obyek
Beberapa objek sudah ada. Setiap permainan harus memiliki objek latar belakang. Semua objek dibuat dari kisi 5 x 5 piksel dan memiliki setidaknya satu warna. Objek latar belakang ditunjukkan di bawah ini.
Background
LIGHTGREEN GREEN
11111
01111
11101
11111
10111
Angka menunjukkan piksel pada gambar. Setiap angka sesuai dengan warnanya. Warna pertama memiliki angka 0, yang kedua - 1, dan seterusnya hingga 9. Bisa ada hingga sepuluh warna. Dalam kasus kami, masing-masing 1 warna piksel berwarna hijau muda (Hijau Muda), dan 0 - hijau (Hijau). Hasilnya terlihat seperti ini:
Objek selalu dibuat sebagai berikut:
Nama selalu di baris paling atas. Warna selalu ada di baris kedua, dan gambar mengambil 5 baris berikutnya, 5 karakter per baris, yang membentuk kisi 5 x 5. Atau Anda dapat melakukan hal berikut:
Background
LIGHTGREEN
Kode ini akan membuat objek yang disebut "Latar Belakang", yang akan berupa grid 5 x 5 piksel berwarna hijau muda. Jika Anda tidak mendeskripsikan kisi gambar, maka kami mendapatkan blok warna solid, yang terkadang berguna.
Berikan nama pada objek
Objek dapat dipanggil sesuka Anda, tetapi namanya tidak dapat dimulai dengan simbol dan itu harus satu kata tanpa spasi. Beri nama benda-benda itu dengan jelas, tetapi jangan melangkah terlalu jauh. PlayerStill adalah nama yang bagus, PlayerThatIsStandingStill terlalu panjang dan bertele-tele.
Warna
Anda harus mendeklarasikan warna yang ingin Anda gunakan untuk objek dan memisahkannya dengan spasi. Script Puzzle memiliki warna yang telah ditentukan:
- hitam
- putih
- abu-abu
- darkgrey
- lightgrey
- abu-abu
- darkgray
- cahaya abu-abu
- merah
- gelap
- terang
- coklat
- darkbrown
- cengeng
- oranye
- kuning
- hijau
- hijau tua
- hijau muda
- biru
- cahaya biru
- biru gelap
- ungu
- merah muda
- transparan
Anda juga dapat mengatur warna dalam heksadesimal, yang memberi kami rentang warna yang jauh lebih luas. Anda dapat menggunakan situs web seperti
ini untuk memilih warna heksadesimal. Pilih warna yang Anda inginkan, lalu tulis ulang kode warna di atas gambar. Kode warna heksadesimal ditulis dalam Puzzle Script sebagai berikut:
#51A2BD #ff0000 #ffffff
Kode warna selalu didahului oleh karakter #.
Tambahkan objek ke legenda
Setelah membuat objek, Anda perlu menambahkannya ke legenda. Legenda terlihat seperti ini:
. = Background
# = Wall
P = Player
* = Crate
@ = Crate and Target
O = Target
Setiap simbol mewakili suatu objek di level. Yaitu, ketika kita melihat kotak karakter seperti itu:
#p.*.##
#.**.##
#..#..#
##....#
##...o#
#######
itu sebenarnya menggambarkan level kita:
Setiap objek yang dibuat harus diberi huruf, simbol, atau angka yang menunjuk objek ini di tingkat. Seperti ini:
P = player
Kelompokkan objek dalam legenda
Kita juga dapat membuat grup objek dalam legenda. Misalnya, jika kita memiliki beberapa kotak multi-warna, maka kita dapat melakukan ini:
O = OrangeCrate
B = BlueCrate
G = GreenCrate
Itu akan memungkinkan kita untuk menggunakan kotak di tingkat editor. Tetapi untuk membuat kode, Anda dapat mengelompokkannya dalam Legenda, seperti ini:
Crates = OrangeCrate or GreenCrate or BlueCrate
Dan secara keseluruhan akan terlihat seperti ini:
=======
LEGEND
=======
O = OrangeCrate
B = BlueCrate
G = GreenCrate
Crates = OrangeCrate or GreenCrate or BlueCrate
Kenapa melakukan ini? Karena itu alih-alih membuat aturan seperti itu:
[ > Player | OrangeCrate ] -> [ > Player | > OrangeCrate ]
[ > Player | BlueCrate] -> [ > Player | > BlueCrate ]
[ > Player | GreenCrate] -> [ > Player | > GreenCrate]
Anda cukup menulis:
[ > Player | Crates ] -> [ > Player | > Crates ]
Dan kode ini akan berfungsi untuk seluruh kelompok objek.
Selain itu, di bagian
Lapisan Tabrakan , Anda bisa merujuk ke lapisan di mana grup berada, daripada memasukkan setiap objek individual.
Lapisan tabrakan
Secara default, bagian collision layer adalah sebagai berikut:
Background
Target
Player, Wall, Crate
Setiap baris memilih objek di lapisannya sendiri. Urutan lapisan objek menentukan objek mana yang akan berada di atas yang lain. Objek di baris atas akan berada di lapisan bawah, baris berikutnya akan berada di lapisan di atasnya, dan seterusnya. Latar belakang harus selalu di baris paling atas untuk berada di lapisan bawah. Objek dalam satu lapisan tidak dapat berada di atas satu sama lain. Artinya, ini tidak mungkin:
[ player wall ] -> [ player wall ]
Anda dapat membuat objek di lapisan yang berbeda berinteraksi satu sama lain. Misalnya, Anda dapat menulis:
[ > Player | Target ] -> [ > Player | > Target ]
Eksperimen
Buat beberapa objek baru. Buat jenis kotak yang hanya bisa Anda tekan. Buat kotak lain yang hanya bisa diseret. Buat kotak yang hilang saat Anda menyentuhnya. Melanjutkan percobaan, Anda akan lebih mengingat bagaimana semuanya dilakukan.
Bagian 4. Kondisi kemenangan
Semua orang suka menang. Kami, sebagai pemain, ingin menang. Di bagian ini, kita akan belajar bagaimana memprogram kondisi untuk memenangkan permainan.
Kondisi kemenangan
Unduh
proyek sampel dan buka bagian kode Kondisi Win. Anda harus melihat yang berikut ini:
All Target on Crate
Permainan dimenangkan jika ada kotak di setiap gol. Jika Anda memiliki 3 kotak dan 2 gol, maka Anda menang dengan menetapkan hanya 2 kotak pada tujuan. Jika bertukar:
All crate on target
maka setiap kotak harus tepat sasaran.
Mungkin ada satu atau beberapa kondisi. Dalam hal beberapa kondisi, semuanya harus dipenuhi. Misalnya, kami mungkin memiliki yang berikut:
All Target on Crate
All Target2 on Crate2
Jika level memiliki target dan target2, maka peti dan peti, masing-masing. Jika pada level tidak ada salah satu objek yang diperlukan untuk memenuhi kondisi kemenangan tertentu, misalnya, tidak ada target2, maka kondisi ini terpenuhi secara otomatis.
Berbagai jenis kondisi kemenangan
Ada beberapa jenis kondisi kemenangan.
No Object
Dalam hal ini, kemenangan datang ketika tidak ada satu objek seperti itu di tingkat.
Some Object
Anda menang ketika setidaknya ada satu objek dari tipe yang ditentukan pada level.
Some Object1 on Object2
Setidaknya satu objek Object1 harus ada di Object2.
No Object1 On Object2
Kondisi ini berlawanan dengan
All Target on Crate
. Dalam hal ini, kita perlu semua benda ini terpisah satu sama lain, dan tidak saling bertumpukan. Anda juga dapat menggabungkan kondisi kemenangan yang berbeda satu sama lain.
Eksperimen
Kami akan bereksperimen dengan berbagai kondisi kemenangan. Cobalah untuk membuat permainan di mana kemenangan terjadi jika semua kotak tidak tepat sasaran. Atau buat gim di mana Anda harus menghancurkan semua kotak dari jenis tertentu, tetapi ada kotak lain yang menghalangi Anda.
Proyek contoh saya yang lengkap dapat dilihat di
sini .
Bagian 5. perintah terlambat
PuzzleScript memiliki perintah yang sangat berguna yang disebut "terlambat." Urutan asal kejadian dalam permainan itu penting, dan kadang-kadang Anda membutuhkan kode yang dieksekusi nanti untuk mendapatkan hasil yang diinginkan. Pada bagian ini saya akan berbicara tentang menggunakan perintah
terlambat .
Mengapa kita membutuhkannya?
Buka
proyek contoh , lalu tempel kode berikut ke dalam permainan dan jalankan:
[ player | target ] -> [ player | ]
Dapat diharapkan bahwa begitu pemain berdiri di sebelah gawang, gawang akan dihancurkan, tetapi ini tidak terjadi. Sebagai gantinya, target menghilang dalam perjalanan
setelah pemain berdiri di sebelahnya. Jadi coba kode lain:
late [ player | target ] -> [ player | ]
Begitu Anda berdiri di sebelah gawang, itu akan hilang. Itu terjadi karena semua yang disebut
terlambat terjadi setelah semua kode dieksekusi. Terkadang ini perlu.
Urutan acara
Inilah cara kode dalam Puzzle Script dieksekusi dengan setiap gerakan.
- Puzzle Script menemukan bahwa pemain ingin pindah
- Kapan pun memungkinkan, aturan dibaca dan dijalankan dari atas ke bawah.
- Pemain bergerak jika memungkinkan
- Aturan terlambat berlaku
Komputer mulai dari baris kode paling atas dan membaca ke bawah, baris demi baris. memeriksa setiap kondisi. Jadi ketika Anda mencoba untuk bergerak, Puzzle Script membaca semua aturan dan memeriksa untuk melihat apakah kondisinya benar, dan jika demikian, ia melakukan sesuatu. Misalnya, baris pertama bisa seperti ini:
[ player | spikeTrap ] -> [ | spikeTrap ]
Jika pemain tidak berdiri di samping jebakan pasak, kode melanjutkan eksekusi. Ini berarti bahwa urutan penulisan baris kode adalah penting. Anda dapat menggunakan perintah terlambat dalam beberapa kasus, yang akan Anda pelajari seiring waktu dalam praktik.
Cara menggunakan Terlambat dalam latihan
Dalam pengalaman saya, yang terbaik adalah menggunakan perintah terlambat ketika Anda memeriksa untuk melihat apakah objek berada di atas satu sama lain atau di samping satu sama lain, tetapi ada kasus lain. Jika Anda memeriksa apakah satu objek berada di objek lain, maka acara tersebut tidak akan didaftarkan hingga belokan berikutnya, kecuali jika Anda menggunakan perintah terlambat:
[ player spikeTrap ] -> [ spikeTrap ]
Dalam kasus di atas, pemain tidak akan terbunuh oleh jebakan dengan taruhan sampai giliran berikutnya setelah pindah ke perangkap. Untuk membuat pemain mati secara instan, cukup tambahkan perintah terlambat,
late [ player spikeTrap ] -> [ spikeTrap ]
Untuk memulai kembali seluruh level ketika karakter mati, Anda dapat melakukan hal berikut:
late [ player spikeTrap ] -> restart
Dan level akan restart ketika pemain jatuh ke dalam jebakan dengan taruhan.
Anda dapat melihat contoh proyek yang sudah selesai di
sini .
Bagian 6. Bekerja dengan efek suara.
Kami membuat game hebat di
Puzzle Script , tapi sekarang kami perlu menambahkan suara. Bagaimana cara melakukannya? Sekarang aku akan memberitahumu!
Generasi suara
Buka
proyek sampel . Tambahkan suara ke sana. Di bawah layar game, Anda dapat melihat kotak hitam dengan simbol putih. Mereka digunakan untuk menghasilkan suara. Setiap karakter menghasilkan jenis suara yang unik, dan tanda silang menghapus suara yang dibuat. Coba klik pada kotak dan dengarkan suara.
Angka kuning adalah kode unik yang perlu disalin dan ditempelkan ke tempat-tempat dalam kode di mana suara diperlukan.
Cara menggunakan suara
Setelah Anda menemukan suara yang tepat, Anda harus memasukkannya ke bagian
Suara dari kode permainan.
Suara dapat digunakan dalam beberapa cara. Cara termudah adalah membuat efek suara baru (sfx). Mereka harus diberi nomor. Kami membuat sfx baru, memberikan nomor dari 0 hingga 10 saat memasukkan ID suara numerik. Di daftar Suara, buat sfx baru bernama sfx0 dan tetapkan itu suara yang dihasilkan:
sfx0 36301705
Untuk menggunakan suara, Anda harus memasukkannya ke dalam aturan setelah acara. Mari kita lampirkan sfx0 yang baru dibuat ke acara penghancuran kotak (acara tersebut sudah ada dalam contoh proyek):
(The player destroys a crate)
[ > Player | CrateVanish ] -> [ Player | ] sfx0
Suara juga dapat dideklarasikan untuk diputar dengan acara tertentu, misalnya:
Crate MOVE 36772507
Dalam hal ini, suara akan diputar saat Anda memindahkan Crate. Hasilkan efek suara baru untuk menyeret dan menjatuhkan objek CratePull dan membuatnya bermain ketika Anda memindahkan CratePull:
CratePull MOVE 12735307
Suara acara harus dideklarasikan hanya di bagian Suara: mereka tidak perlu disebutkan dalam aturan.
Daftar metode reproduksi suara
Di bawah ini adalah daftar berbagai suara acara yang dapat Anda gunakan, diambil dari
dokumentasi Script Puzzle.
Object Action 541566 - bermain ketika suatu objek terpapar pada suatu tindakan selama bergerak.
Obyek Buat 641667 - diputar saat membuat objek tertentu.
EndGame 5416789 - bermain saat pertandingan berakhir.
EndLevel 6417822 - bermain setelah selesainya level.
Objek CantMove 781673 - diputar ketika suatu objek mencoba untuk bergerak ke arah mana pun tidak berhasil.
Pemain CantMove Down Left 464674 - bermain ketika sebuah objek gagal mencoba untuk bergerak ke bawah atau ke kiri.
CloseMessage 344456 - diputar saat pemain menutup kotak pesan.
Object Destroy 187975 - bermain ketika sebuah objek dihancurkan.
Object Move 264567 - diputar ketika suatu objek berhasil bergerak ke segala arah.
Object Move Down Left 765432 - diputar ketika objek telah berhasil bergerak ke bawah atau ke kiri.
Object Move Horizontal 345367 - diputar ketika objek telah berhasil bergerak secara horizontal. Anda juga dapat menggunakan Vertikal.
Restart 7865435 - bermain ketika pemain menekan tombol restart R.
SFX0 765743 - dapat berupa apa saja dari SFX0 hingga SFX10. Ini adalah acara suara khusus yang dapat dilakukan dari aturan.
ShowMessage 478483 - diputar saat pesan ditampilkan.
StartGame 234626 - bermain di awal gim baru.
Startlevel 765436 - bermain di awal setiap level.
TitleScreen 876543 - diputar setelah memuat screen saver.
Undo 436234 - diputar saat pemain menekan tombol batal (Z).
Anda dapat menentukan arah untuk
bergerak dan
bergerak sehingga ketika bergerak ke arah yang berbeda, suara yang berbeda direproduksi.
Contoh proyek siap pakai ada di
sini .
Bagian 7. Mainkan musik
Kami belajar cara membuat game di Puzzle Script, tetapi bukankah lebih baik menambahkan musik ke dalamnya? Itu mungkin, dan sekarang saya akan memberi tahu Anda cara melakukannya.
Catatan: tampaknya saat ini fungsi ini di Puzzle Script rusak, jadi lanjutkan ke bagian berikutnya.
Apa yang harus dilakukan
Buka
proyek kosong . Musik berfungsi di Puzzle Script sebagai berikut: Anda dapat memasukkan tautan ke satu video dari Youtube ke dalam gim. PuzzleScript akan secara otomatis memutar semua suara dari video ini. Buka Youtube dan pilih video apa pun, atau gunakan yang berikut ini:
youtube.com/watch?v= CKAc3nYEatwUntuk memutar musik dari video, kita perlu mendapatkan ID video yang unik. Bagian hijau pada baris di atas adalah ID unik.
Di bawah beranda penulis di awal proyek, tambahkan label youtube, dan setelahnya ID video unik, misalnya, seperti ini:
youtube CKAc3nYEatwUntuk memastikan itu berfungsi dengan benar, klik "Bagikan" dan klik tautan permainan (bukan tautan kode sumber). Selama pengujian di dalam editor, musik Puzzle Script tidak dapat diputar. Jika Anda ingin game memiliki musik, Anda perlu mengunggahnya sebagai video di Youtube dan memasukkan ID unik ke proyek Anda. Setiap proyek hanya dapat memiliki satu video Youtube.
Contoh proyek
Contoh proyek Puzzle Script dapat ditemukan di
sini .
Bagian 8. Cara menggunakan perintah Action
Kita sudah tahu cara memindahkan, mendorong, dan menyeret blok, tetapi bagaimana jika kita perlu melakukan sesuatu dengan menekan tombol tertentu, seperti
spasi ?
Kemungkinan input di PuzzleScript sangat terbatas, terutama tombol panah, Z untuk membatalkan, R untuk memulai kembali, dan kami tidak dapat mengubahnya.
Tapi mesin memberi kita kunci tambahan untuk tindakan - menekan space bar , atau tekan X .Bekerja dengan tim Action mengikuti format yang dijelaskan di atas. Kami menggunakan format kode PuzzleScript dasar:[ ] -> [ ]
Jika kondisinya benar, maka kami melaksanakan acara. Perintah tindakan digunakan dengan cara yang sama, tetapi memiliki aturannya sendiri. Ini terlihat seperti ini:[ Action ] -> [ ]
Berikut adalah contoh menggunakan perintah Action:[ Action Player ] -> [ Crate ]
Pertama, Aksi selalu merupakan kata pertama dari suatu kondisi.Kedua, jika kita ingin mempengaruhi objek tertentu dalam permainan, maka kita perlu menyebutkan objek ini baik dalam kondisi maupun dalam acara tersebut (jika kita menyebutkan objek lain, program akan menghapus yang asli dan menggantinya dengan objek baru, dan jika Anda tidak menentukan objek, maka dia hanya akan pensiun).Akhirnya, kata Action harus digunakan hanya dalam kondisi , tetapi kadang-kadang layak digunakan dalam kondisi dan acara. Saya akan membicarakan ini di bawah.Periksa kode yang ditunjukkan di atas dalam proyek game. Anda bisa mulai dengan contoh ini . Anda akan melihat bahwa ketika Anda menekan spasi atau X, pemain menjadi sebuah kotak.Kondisi mengatakan [ Jika kita menekan tombol Action dan ada objek Player di level ] -> kemudian [ ganti objek pemain dengan kotak]Sekarang, mari kita coba kode berikut dalam contoh proyek:[ Action Player | Crate ] -> [ Player | > Crate ]
Pastikan Anda dikelilingi di semua sisi oleh kotak, seperti pada gambar di atas. Anda akan melihat bahwa suatu tindakan hanya memengaruhi satu kotak pada satu waktu. Saya tidak tahu persis apa alasannya, tetapi jika Anda ingin memengaruhi beberapa objek menggunakan perintah Tindakan , Anda perlu menentukannya baik dalam kondisi maupun dalam acara tersebut.Ganti kode dengan versi yang diperbarui:[ Action Player | Crate ] -> [ Action Player | > Crate ]
Sekarang kita bisa mendorong semua kotak sekaligus. Jika Anda perlu menerapkan tindakan ke beberapa objek, lalu letakkan Aksi di kedua kondisi dan acara.Bagian 9. Memeriksa berbagai kondisi
Mari kita belajar untuk memeriksa beberapa kondisi, misalnya, keberadaan bom DAN blok yang dapat dirusak.Buka proyek sampel . Sekarang tambahkan kode berikut ke dalamnya:late [Player Switch][DoorClosed] -> [Player Switch][DoorOpen]
Kode mengikuti format ini:[ 1 ] [ 2 ] -> [ 1 ] [ 2 ]
Jika kondisi 1 benar dan kondisi 2 benar, maka langkah 1 dan langkah 2 dieksekusi. Dalam kasus kami, dalam kondisi 1, dicek apakah Player sedang aktif. Jika ya, maka kondisi 2 dicentang, yaitu, keberadaan pada tingkat pintu tertutup? Jika kondisinya benar, maka objek DoorClosed berubah menjadi objek DoorOpen, membuka pintu.Misalkan kita perlu pintu untuk menutup ketika pahlawan meninggalkan sakelar, karena kita ingin pemain mendorong kotak ke sakelar untuk membuka pintu. Anda dapat menulis sesuatu seperti ini:late [Player | Switch][DoorOpen] -> [Player | Switch][DoorClosed]
Jika pemain berdiri di sebelah sakelar dan di suatu tempat di tingkat ada pintu terbuka, maka kita tutup pintunya. Akhirnya, kita membutuhkan pintu untuk tetap terbuka jika kita mendorong kotak ke sakelar:late [Crate Switch][DoorClosed] -> [Crate Switch][DoorOpen]
Sekarang pintu akan tetap terbuka saat laci berada di sakelar.Anda dapat melihat contoh proyek yang sudah selesai di sini .Bagian 10. Membuat breakpoints
Mungkin Anda memiliki ide yang bagus untuk memainkan Puzzle Script, tetapi membutuhkan titik kontrol (pos pemeriksaan) agar pemain pulih pada mereka jika terjadi kematian. Bagaimana cara melakukannya? Cukup sederhana, dan sekarang saya akan menjelaskan caranya.Buat breakpoints
Buka proyek sampel . Sekarang kita perlu memprogram breakpoint. Hanya satu baris kode yang cukup untuk ini:late [ Player FlagRed ] -> CHECKPOINT
FlagRed adalah pos pemeriksaan. Ketika pemain berada di atas bendera, kode ini menciptakan pos pemeriksaan (CHECKPOINT). Jika Anda tidak menggunakan terlambat, maka fungsi pos pemeriksaan tidak akan berfungsi.Uji permainannya. Pergi ke titik kontrol, dan kemudian sedikit lebih jauh dan tekan R. Anda harus mulai dari titik kontrol.Beberapa Poin Kontrol
Jika ada beberapa titik kontrol, permainan menggunakan yang terakhir diaktifkan oleh pemain.Untuk menghindari mengaktifkan kembali titik kontrol yang sudah digunakan, Anda perlu mengubahnya ke objek lain. Untuk melakukan ini, buat salinan putih di bagian OBJECTS dari kode di bawah bendera merah.FlagWhite
White Orange
.1โฆ
.00..
.000.
.1โฆ
.1โฆ
Sekarang tulis ulang baris ini dalam legenda:Flag = FlagRed or FlagWhite
Kita dapat membuat sekelompok objek. Dalam hal ini, Flag akan berupa FlagRed atau FlagWhite. Selama setidaknya satu objek yang dikelompokkan diberi simbol (kami menetapkan simbol FlagRed F), kami tidak perlu menetapkan simbol ke objek lain dari grup, dan Anda hanya dapat mengaksesnya dalam kode, tetapi tidak di editor level. Kemudian Anda dapat menetapkan layer tumbukan ke grup, yang kami lakukan. Akses ke sekelompok objek, misalnya, Bendera, merujuk ke seluruh grup. Oleh karena itu:
[ > Player | Flag ] -> [ > Player | ]
Kode ini akan memengaruhi bendera merah dan putih.Ubah objek bendera
Berikut cara mengubah FlagRed ke FlagWhite:late [ Player FlagRed ] -> [ Player FlagWhite ]
Jika pada akhir belokan pemain ada di bendera merah, maka kita mengubahnya menjadi putih. Namun, Anda perlu mengubah grafik bendera setelah Anda membuat breakpoint, karena kode dibaca dari atas ke bawah. Uji programnya.Ubah bendera kedua
Ada dua bendera dalam proyek ini. Mari kita pastikan bahwa ketika bendera kedua diaktifkan, bendera putih yang lama berubah menjadi hitam sehingga tidak dapat digunakan lagi. Kami menulis yang berikut ini:late [ Player FlagRed ][ FlagWhite] -> [ Player FlagRed ][FlagBlack]
Kode mengatakan: jika pemain berada di bendera merah dan di suatu tempat dalam permainan ada bendera putih, maka Anda perlu membuat bendera putih menjadi hitam. Karena kode dibaca dari atas ke bawah, kita perlu melakukan ini dalam urutan sebagai berikut:late [ Player FlagRed ] -> CHECKPOINT
late [ Player FlagRed ][ FlagWhite] -> [ Player FlagRed ][FlagBlack]
late [ Player FlagRed ] -> [ Player FlagWhite ]
Jika Anda tidak mengerti mengapa kode harus dalam urutan ini, maka cobalah mengubah urutan garis dan menguji program. Untuk menyelesaikan masalah Anda sendiri, Anda perlu belajar untuk mengambil langkah mundur dan merenungkan apa yang dilakukan kode. Tapi saya akan memberi Anda petunjuk - ketika Anda bermain, di mana bendera merah selama baris kode terakhir dalam contoh yang salah berikut?[ > Player | Crate ] -> [ > Player | > Crate ]
[ > Crate | Flag ] -> [ Crate | Flag ]
late [ Player FlagRed ] -> CHECKPOINT
late [ Player FlagRed ] -> [ Player FlagWhite ]
late [ Player FlagRed ][ FlagWhite] -> [ Player FlagRed ][FlagBlack]
Lihat contoh proyek jadi di sini . Selain itu, saya baru saja menunjukkan cara termudah untuk menghidupkan. Pada bagian selanjutnya saya akan berbicara tentang membuat animasi yang lebih kompleks, seperti ledakan.Bagian 11. Animasi
Ada dua cara untuk membuat animasi di PuzzleScript. Salah satunya menggunakan waktu nyata, tetapi di bagian ini saya tidak akan membicarakannya. Lain digunakan untuk animasi satu kali yang cepat, seperti ledakan atau karakter menuruni tangga vertikal.Buka proyek sampel . Kami akan membuat bom dan serangkaian tembakan ledakan, dan kemudian menghidupkannya.Animasi objek
Untuk animasi 2D, Anda memerlukan beberapa gambar objek yang bergerak dari satu kondisi ke kondisi lain, misalnya, sprite dari Mario yang sedang berlari. Ini berisi 4 frame animasi.Untuk mensimulasikan transisi dari satu frame animasi ke yang lain, kita akan membuat beberapa objek di PuzzleScript yang akan menjadi frame animasi, dan kemudian menggunakan kode untuk beralih di antara mereka.Bom
Buat objek bom seperti itu.Bomb
black yellow grey
..1..
..1..
.000.
00020
.000.
Ingatlah untuk menambahkannya ke layer dan ke legenda.Untuk menghidupkan ledakan, kita perlu membuat setiap bingkai animasi sebagai objek terpisah, dan kemudian beralih di antara mereka dalam kode. Mari kita membuat objek ledakan.Explosion1
black yellow grey red
..1..
..1..
.000.
00320
.000.
Explosion2
black yellow grey red
..1..
..1..
.333.
03330
.333.
Explosion3
black yellow grey red
..1..
.333.
33333
33333
.333.
Explosion4
black yellow grey red
.333.
33333
33333
33333
.333.
Explosion5
black yellow grey red
.333.
33333
33.33
33333
.333.
Explosion6
black yellow grey red
.333.
3...3
3...3
3...3
.333.
Explosion7
black yellow grey red
.....
.....
.....
.....
.....
Ini akan dengan benar memberi nomor objek untuk mengetahui bingkai animasi yang kita butuhkan. Setelah menambahkannya ke layer dan ke legenda, kita dapat menambahkan beberapa baris kode.[Explosion7] -> []
[Explosion6] -> [Explosion7]
[Explosion5] -> [Explosion6]
[Explosion4] -> [Explosion5]
[Explosion3] -> [Explosion4]
[Explosion2] -> [Explosion3]
[Explosion1] -> [Explosion2]
[Bomb] -> [Explosion1]
Coba tambahkan kode ini, lalu letakkan bom di tingkat dan mulai permainan. Anda akan melihat bahwa dengan setiap gerakan, animasi bom berubah satu bingkai. Beralih di antara objek, kami membuat animasi.Urutan beralih di antara animasi sangat penting. Bingkai terakhir harus di atas, dan yang pertama - di bawah. Jangan lupa bahwa kode dibaca dari atas ke bawah. Jika bingkai animasi berada dalam urutan yang berbeda, maka kita tidak akan pernah melihat perubahannya. Kami hanya akan melihat bingkai terakhir, dan dalam kasus kami bom akan hilang begitu saja. Ini akan berubah ke frame pertama, lalu ke frame kedua dan seterusnya, dalam satu frame, bahkan sebelum Anda melihat grafik. Dengan menempatkan frame terakhir di awal, di setiap belokan kita akan melihat perubahan selanjutnya.Menggunakan lagi
Untuk menghidupkan semua bersama-sama, kita membutuhkan tim lagi . Lagi berarti setelah membaca semua kode, PuzzleScript akan berhenti sebentar, dan kemudian akan membaca kode lagi dengan menjalankan semua perintah lagi . Ini dapat digunakan untuk gravitasi, meluncur di atas es, dan dalam kasus kami, untuk animasi. Yang diperlukan hanyalah menulis ulang kode sebagai berikut:[Explosion7] -> []
[Explosion6] -> [Explosion7] again
[Explosion5] -> [Explosion6] again
[Explosion4] -> [Explosion5] again
[Explosion3] -> [Explosion4] again
[Explosion2] -> [Explosion3] again
[Explosion1] -> [Explosion2] again
[Bomb] -> [Explosion1] again
Uji permainannya. Anda akan melihat bahwa seluruh animasi bom dimainkan segera. Jika menurut Anda terlalu lambat atau cepat, maka kecepatannya dapat diubah. Di bagian paling awal teks program, di bawah beranda tulis kode berikut:again_interval 0.1
Ini adalah bagian dari apa yang disebut PuzzleScript awal . Ini adalah tempat di mana, sebelum sisa kode, Anda dapat menetapkan aturan tambahan yang menentukan perilaku permainan. Sekarang animasi harus diputar lebih cepat. Coba ubah angka setelah again_interval dan periksa apakah sudah berubah.Anda dapat melihat contoh proyek yang sudah selesai di sini .Bagian 12. Gravitasi
Biasanya PuzzleScript digunakan untuk membuat game dengan top-down, tetapi pada kenyataannya Anda dapat mensimulasikan beberapa elemen penggulung samping, meskipun dengan aturan PuzzleScript terbatas, yaitu, mereka masih akan selangkah demi selangkah. Pada bagian ini saya akan memberi tahu Anda cara menerapkan gravitasi.Contoh proyek
Buka proyek sampel . Saya membuat level sederhana, ia memiliki pemain, kotak di langkan dan pintu di bawah. Kami ingin memastikan bahwa ketika seorang pemain mendorong kotak dari langkan, ia jatuh ke tanah. Kami juga ingin pemain jatuh ke tanah ketika dia meninggalkan tepi.Jatuh Tahap 1
Ini adalah bagian pertama dari kode yang akan kita gunakan:down [ Player | no Object ] -> [ | Player ]
down [ Crate | no Object no Player ] -> [ | Crate ]
Coba dorong kotak dari tepi. Anda akan melihat bahwa setelah memindahkan kotak itu menggantung di udara, tetapi setelah gerakan lain jatuh ke tanah. Di sini beberapa hal terjadi.Pertama, mari kita bicara tentang kata kunci bawah . Dengan menambahkan ke bawah , kami membatasi aturan dengan fakta bahwa aturan itu hanya berlaku di arah bawah. Itu sebabnya kotak itu bergerak ke bawah. Jika Anda mengganti bawah di sebelah kanan , Anda akan melihat bahwa kotak mendapat terjebak di dinding kanan, seperti dalam permainan dengan anti-gravitasi. Coba lakukan itu.Selanjutnya, kita akan melakukan sesuatu yang tidak biasa. Alih-alih memeriksa apakah pemain berada di sebelah objek tertentu (misalnya, sebuah kotak), kami memeriksa apakah ia berada di sebelah objek umum. Jika Anda melihat legenda dalam kode contoh, Anda akan melihat bahwa kami telah mendefinisikan objek sebagai sekelompok objek, yaitu, dengan setiap penggunaan objek kata , yang kami maksud adalah sekelompok objek. Yaitu, kami memeriksa apakah ada benda-benda ini di bawah pemain. Jika tidak, kami memerintahkan pemain untuk menempati ruang kosong ini dan meninggalkan ruang sebelumnya, karena kata di bawah, mengikuti arah ke bawah.Tetapi Anda juga dapat melihat bahwa setelah bertabrakan dengan langkan, kotak itu tidak jatuh sampai langkah berikutnya, dan bahwa itu langsung mencapai tanah. Untuk menghilangkan kerusakan yang tertunda ini, Anda dapat menggunakan kata kunci yang terlambat:late down [ Player | no Object ] -> [ | Player ]
late down [ Crate | no Object no Player ] -> [ | Crate ]
Tetapi bagaimana membuatnya jatuh secara bertahap, bingkai demi bingkai?Tahap Musim Gugur 2
Sekarang kami menggunakan kata kunci acak . Kami menulis ulang kode sebagai berikut:random down [ Player | no Object ] -> [ | Player ]
random down [ Crate | no Object no Player ] -> [ | Crate ]
Jalankan kodenya. Ia bekerja sangat mirip dengan kode sebelumnya, tetapi dengan satu perbedaan penting. Kotak membeku di udara, tetapi setiap kali pemain bergerak, itu jatuh satu sel. Ini karena kata acak . Sebenarnya, acak dirancang untuk membuat game dengan elemen acak, tetapi itu berguna di sini. Ini memaksa baris kode yang sesuai untuk dieksekusi sekali per giliran. PuzzleScript mengeksekusi setiap aturan dalam satu gerakan sebanyak mungkin, dan hanya saat itu pemain melihat perubahan grafik. Itulah mengapa kotak itu langsung jatuh ke tanah. Tetapi ketika menggunakan kata acak, kami membiarkannya jatuh hanya satu sel pada satu waktu.Fall Stage 3
Sekarang kita akan menambahkan kata kunci lagi :random down [ Player | no Object ] -> [ | Player ] again
random down [ Crate | no Object no Player ] -> [ | Crate ] again
Luncurkan game. Semuanya hampir sempurna. Kotak itu membeku untuk beberapa waktu di udara, tetapi jika Anda bergerak lagi, secara bertahap jatuh ke tanah. Kami sudah terbiasa dengan kata kunci lagi , pada intinya, itu berarti bahwa pada akhir pergantian, PuzzleScript membaca kode lagi dan mencoba untuk mengeksekusi semua perintah lagi sebagai langkah terpisah, setelah itu berhenti, kemudian mengulanginya lagi sebanyak mungkin. Yang penting di sini adalah dia berhenti di antara belokan lagi , yang memungkinkan kita melihat kotak jatuh.Tahap terakhir
Dan sentuhan terakhir. Agar kotak jatuh ke tanah segera setelah didorong dari tepi, kita perlu menambahkan baris kode lain di atas yang baru saja kita tulis:[moving Player] -> [moving Player] again
random down [ Player | no Object ] -> [ | Player ] again
random down [ Crate | no Object no Player ] -> [ | Crate ] again
Kata kunci bergerak yang digunakan dalam tanda kurung siku [] di depan pemain berarti kami sedang memeriksa untuk melihat apakah pemain tersebut bergerak. Ini berarti bahwa jika seorang pemain bergerak, maka kami memerintahkannya untuk terus bergerak dan menjalankan tim lagi . Maka segera semua yang menggunakan kata kunci lagi akan berfungsi ; dalam kasus kami, ini adalah animasi jatuhnya kotak.Anda dapat melihat contoh proyek yang sudah selesai di sini .Bagian 13. Memeriksa arah perjalanan
Indikasi arah
Terkadang Anda perlu memeriksa sesuatu hanya dalam satu arah. Misalnya, Anda perlu membuat balok yang hanya bisa didorong secara horizontal, atau membuat bebek yang hanya bisa berjalan ke kiri.Bagaimanapun, kami dapat menunjukkan bahwa peristiwa hanya terjadi di arah tertentu.Buka PuzzleScript, buat game berdasarkan contoh Dasar dan ganti dengan Aturan dengan kode berikut:[ Left Player ] -> [ Crate ]
Luncurkan game dan lihat apa yang terjadi.Jika Anda mencoba untuk pergi ke kiri, pemain akan berubah menjadi sebuah kotak. Ini adalah contoh yang baik tentang bagaimana pengarahan bekerja.Kami sudah terbiasa dengan format di mana saya menjelaskan kode PuzzleScript:[ ] -> [ ]
Jika peristiwa itu benar, maka peristiwa itu terjadi.Tapi sekarang, ketika kita perlu memeriksa arah, dia akan mengikuti aturan baru:[ Movement Direction Object Affected ] -> [ New State of Object ]
Itu adalah kode kami sebelumnya:[ Left Player ] -> [ Crate ]
memeriksa apakah pemain bergerak ke kiri ( Kiri ). Jika demikian, maka kami mengganti pemain dengan objek kotak.Jenis Tujuan
Anda dapat memilih dari jenis tujuan berikut:- Naik
- Turun
- Kiri
- Benar
- Horisontal (memeriksa apakah ada gerakan horizontal)
- Vertikal (memeriksa apakah ada gerakan vertikal)
Bagian 14. Membuat gerakan khusus
Untuk beberapa alasan, gim ini mungkin memerlukan langkah kustom. Bebek hanya bisa berjalan ke kiri, kotak hanya bisa didorong secara horizontal, dan sebagainya. Sangat mudah dilakukan. Mari kita lihat lagi format kode PuzzleScript dasar:[ ] -> [ ]
Jika kondisinya benar, maka suatu peristiwa terjadi. Untuk membuat gerakan khusus, Anda perlu melakukan hal berikut:[ Condition ] -> [ Movement Direction Object To Move ]
Begini contohnya:[ Player | Crate ] -> [ Player | Left Crate ]
Unduh PuzzleScript , buka contoh Dasar , rekatkan kode ini dan lihat apa yang terjadi. Pergi ke kotak di mana tidak ada dinding.Anda akan melihat bahwa ketika pemain berada di dekat kotak, kotak didorong ke kiri. Namun, karena tidak ada kata kunci Terlambat , ini terjadi dalam kursus setelah Anda mengambil langkah pertama ke arahnya.Saat menentukan dalam Peristiwa, di samping objek, arah gerakan , misalnya Kiri , PuzzleScript akan mencoba untuk memindahkan objek ke arah yang ditentukan. Itu sebabnya kotak, dan bukan pemain, bergerak ke kiri - Kiri berada di sebelah Crate .Ingat kode ini dari bagian sebelumnya?[ ] -> [ ]
Jika Anda menunjukkan arah gerakan dalam kondisi di sebelah objek, maka itu memeriksa apakah objek ini bergerak ke arah ini. Ini perbedaan penting. Anda dapat menulis ulang seperti ini:[ ] -> [ ]
Pemindahan khusus yang diijinkan
Gerakan khusus dapat dibuat dengan salah satu dari kata-kata ini:Anda tidak dapat menggunakan Horizontal atau Vertikal , karena PuzzleScript tidak akan mengerti ke arah mana Anda ingin memindahkan objek, atau untuk melakukan ini, itu akan membutuhkan banyak solusi. Penting untuk menunjukkan arah tertentu.Bagian 15. Memeriksa sel di sebelah objek
Terkadang perlu untuk memeriksa apa yang ada di sebelah objek. Ini cukup mudah dilakukan.
Mari kita lihat lagi format kode PuzzleScript:[ ] -> [ ]
itu adalah[ ] -> [ ]
Untuk memeriksa sisi objek, kita perlu menambahkan satu elemen. Formatnya adalah sebagai berikut:[ object1 | object2 ] -> [ object1 | object2 ]
Sebelum kondisinya, kami memeriksa sisi objek yang ingin kami periksa.Di dalam kondisi tersebut, kami mengasumsikan bahwa setidaknya diperlukan dua sel. Faktanya, sebuah sel adalah benda yang berada di ruang yang sama dan tidak bersebelahan.[ ]
[ | | ]
Sel pertama adalah objek yang sisi-sisinya kita periksa. Sel kedua adalah objek yang keberadaannya kita periksa. Coba contoh berikut:Left [ Player | Crate ] -> [ Player | ]
Kode yang ditunjukkan di atas menghapus kotak jika berada di kotak di sebelah kiri pemain.Left [ Crate | Crate ] -> [ Player | Crate ]
Kode ini memeriksa apakah kotak berada di sebelah kiri kotak lain. Jika demikian, maka kotak yang sisi-sisinya dicentang akan menjadi objek baru pemain.Left [ Crate | Crate ] -> [ Crate | Player ]
Dalam kode di atas ada tanda centang yang sama, tetapi kotak di sebelah kiri menjadi objek pemain.Left [ Crate | Crate | Crate ] -> [ Crate | Player | Crate ]
Kode ini juga menggunakan pola yang sama. Kotak di sebelah kiri kotak yang dicentang menjadi pemain jika 3 kotak berada di samping satu sama lain secara horizontal.Left [ Crate | Crate | Crate ] -> [ Crate | Crate | Player ]
Jika 3 kotak bersebelahan secara horizontal, maka yang paling kiri menjadi pemain.Jika Anda menguji masing-masing contoh ini, Anda akan mulai memahami polanya. Sel pertama adalah objek yang kita periksa untuk melihat apa selanjutnya. Sel-sel berikut, dari yang paling dekat ke yang terjauh, adalah objek yang kita periksa.Kata kunci
- Pemeriksaan - atas suatu objek
- Turun - cek di bawah objek
- Kiri - memeriksa di sebelah kiri objek
- Kanan - memeriksa di sebelah kanan objek
- Horisontal - memeriksa ke kiri dan kanan objek
- Vertikal - memeriksa di atas dan di bawah objek