h tinggi di awal.
1. Tambahkan fungsi ini di bawah fungsi blink(). Ini mirip dengan kode blink(), tetapi
hanya akan mengaktifkan satu mata
2. Fungsi berikutnya menutup dan membuka mata kiri sekali untuk membuat Screen Pet
mengedipkan mata. Ketik di bawah toggle_left_eye().
3. Ingatlah untuk mengubah perintah yang mengikat acara klik dua kali (<Double-1>)
menjadi wink() alih-alih nakal() di bagian utama program.
4.9 HEWAN PELIHARAAN PELANGI
Sangat mudah untuk membuat Screen Pet warna yang berbeda dengan mengubah nilai
c.body_color. Jika Anda tidak dapat memutuskan warna apa yang akan dipilih, Anda dapat
menambahkan fungsi yang terus mengubah warna Screen Pet tanpa henti!
1. Pertama tambahkan baris untuk mengimpor modul acak Python. Letakkan di bawah
garis yang memuat fitur Tkinter proyek.
2. Sekarang ketikkan fungsi baru, change_color(), tepat di atas bagian utama kode. Ini
mengambil nilai baru untuk c.body_color dari daftar pet_colors. Kemudian
menggambar ulang tubuh Screen Pet menggunakan warna baru. Karena menggunakan
random.choice, kamu tidak akan pernah bisa memastikan warna pet selanjutnya!
131
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
3. Terakhir, tambahkan ini tepat di atas baris terakhir di bagian utama program untuk
membuat mainloop() memanggil change_color() 5 detik (5.000 milidetik) setelah
program dimulai.
4. Anda mungkin ingin mengubah nilai dalam kode sehingga Screen Pet berubah warna
lebih cepat. Anda juga dapat mengubah warna dalam daftar menjadi warna yang lebih
Anda sukai, atau menambahkan warna tambahan.
Gambar 4.33 Macam Warna hewan piaraan
Beri aku makan!
Hewan peliharaan membutuhkan makanan, serta membelai dan menggelitik. Bisakah Anda
menemukan cara untuk memberi makan hewan peliharaan Anda dan menjaganya tetap
sehat?
1. Mungkin coba tambahkan "Beri saya makan!" tombol ke jendela Screen Pet dan fungsi
feed() yang dipanggil saat Anda mengklik tombol.
Gambar 4.34 Gambar Pet ketika di klik
2. Anda bahkan bisa membuat Screen Pet tumbuh jika Anda mengklik "Feed me!"
beberapa kali. Baris kode ini membuat tubuhnya lebih besar.
132
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
3. Kemudian coba tulis beberapa kode agar tubuh hewan peliharaan Anda menyusut
kembali ke ukuran aslinya lagi jika tidak mendapatkan cukup makanan.
Bersihkan itu!
Masalah dengan memberi makan Screen Pet adalah ia juga perlu buang air besar! Tulis
beberapa kode yang membuatnya kotoran beberapa saat setelah Anda memberinya
makan. Kemudian tambahkan tombol "Bersihkan". Mengklik "Bersihkan" akan
memanggil fungsi penangan yang menghapus kotoran.
Jendela yang lebih besar
Jika Anda menambahkan tombol atau fitur tambahan lainnya ke jendela Screen Pet,
mungkin akan sedikit sesak dan tidak nyaman bagi hewan peliharaan Anda. Jika
demikian, Anda dapat memperbesar jendela Tkinter. Untuk melakukannya, ubah nilai
lebar dan tinggi dalam perintah yang membuat kanvas di awal program utama.
133
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
BAB 5
GAME DENGAN PYTHON
5.1 ULAT
Jika semua pengkodean ini telah membangkitkan selera Anda, Anda tidak sendirian—
bintang dari proyek ini adalah ulat yang lapar. Dengan menggunakan modul kura-kura Python,
Anda akan mengetahui cara menganimasikan karakter game dan mengontrolnya di layar
dengan keyboard.
Apa yang terjadi
Anda menggunakan empat tombol panah untuk mengarahkan ulat di sekitar layar dan
membuatnya "memakan" daun. Setiap daun memberi Anda poin, tetapi juga membuat ulat
lebih besar dan lebih cepat, membuat permainan lebih sulit. Jauhkan ulat di dalam jendela
permainan, atau permainan berakhir!
Meningkatkan kesulitan
Semakin banyak daun yang dimakan ulat, semakin sulit permainannya. Saat ulat
semakin panjang dan cepat, reaksi Anda juga harus semakin cepat; jika tidak, ulat Anda
akan memperkecil layar.
Gambar 5.1 Permainan Ular
Skor Anda ditampilkan di sudut kanan atas jendela permainan.
Daun menghilang saat dimakan, dan daun baru kemudian muncul di tempat lain.
Untuk memulai permainan, pemain harus mengklik layar terlebih dahulu dan
kemudian menekan bilah spasi.
Bagaimana itu bekerja
Proyek ini menggunakan dua kura-kura utama: satu untuk menggambar ulat dan satu lagi
untuk menggambar daun. Kode menempatkan setiap daun baru di lokasi acak. Ketika program
mendeteksi bahwa daun telah dimakan, variabel yang menyimpan skor, kecepatan ulat, dan
panjangnya meningkat. Sebuah fungsi mengetahui apakah ulat telah pindah ke luar jendela,
yang akan menandakan akhir dari permainan.
134
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Bagan alir Ulat
Untuk membuat ulat bergerak melintasi layar, Anda akan menggunakan loop tak
terbatas. Setiap kali putaran berputar, ulat bergerak sedikit ke depan. Saat loop
berulang dengan cepat, gerakan kecil ini menciptakan ilusi bahwa ulat Anda sedang
merangkak.
Gambar 5.2 Diagram Alur Permainan Ulat
5.2 LANGKAH PERTAMA
Untuk permainan yang menyenangkan, kodenya sangat mudah. Anda akan mulai
dengan menyiapkan kura-kura, sebelum beralih ke loop permainan utama dan akhirnya
kontrol keyboard.
1. Mulai
Buka IDLE dan buat file baru. Simpan sebagai "caterpillar.py".
2. Impor modul
Tambahkan dua pernyataan impor ini untuk memberi tahu Python bahwa Anda
memerlukan modul kura-kura dan acak. Baris ketiga mengatur warna latar belakang
untuk jendela permainan.
135
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
3. Buat ulat kura-kura
Sekarang buat kura-kura yang akan menjadi ulat Anda. Tambahkan kode yang
ditampilkan di sini. Ini menciptakan kura-kura dan mengatur warna, bentuk, dan
kecepatannya. Fungsi caterpillar.penup() menonaktifkan pena kura-kura,
memungkinkan Anda untuk memindahkan kura-kura di sekitar layar tanpa
menggambar garis di sepanjang jalan.
4. Buat kura-kura daun
Di bawah kode untuk Langkah 3, ketik baris ini untuk mengatur kura-kura kedua, yang
akan menggambar daunnya. Kode menggunakan daftar enam pasangan koordinat
untuk menggambar bentuk daun. Setelah Anda memberi tahu kura-kura tentang
bentuk ini, ia dapat menggunakan kembali detailnya untuk menggambar lebih banyak
daun. Panggilan ke hideturtle di sini membuat kura-kura ini tidak terlihat di layar.
5. Tambahkan beberapa teks
Sekarang siapkan dua kura-kura lagi untuk menambahkan teks ke permainan.
Seseorang akan menampilkan pesan sebelum aksi dimulai, memberi tahu pemain
untuk menekan bilah spasi untuk memulai. Yang lain akan menulis skor di sudut
jendela. Tambahkan baris ini setelah kode penyu daun.
136
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Lingkaran utama
Kura-kura Anda sekarang sudah siap dan siap untuk pergi. Mari tulis kode yang
membuat game menjadi hidup.
6. Fungsi placeholder
Anda dapat menunda pendefinisian suatu fungsi sampai nanti dengan menggunakan
kata kunci pass. Di bawah kode untuk kura-kura, tambahkan placeholder berikut untuk
fungsi yang akan Anda isi dengan kode di langkah selanjutnya.
Lulus
Dengan Python, jika Anda belum yakin kode apa yang Anda inginkan di dalam suatu
fungsi, Anda cukup mengetikkan kata kunci pass dan kembali lagi nanti. Ini seperti
menyampaikan pertanyaan dalam kuis.
7. Pemula permainan
Setelah empat fungsi placeholder, muncul fungsi start_game(), yang menyiapkan
beberapa variabel dan menyiapkan layar sebelum loop animasi utama dimulai. Anda
akan menambahkan kode untuk loop utama, yang membentuk sisa fungsi ini, di
langkah berikutnya.
137
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
8. Bergerak
Putaran utama menggerakkan ulat sedikit ke depan, sebelum melakukan dua
pemeriksaan. Ini pertama memeriksa apakah ulat telah mencapai daun. Jika daun telah
dimakan, skornya meningkat, daun baru akan ditarik, dan ulat menjadi lebih panjang
dan lebih cepat. Loop kemudian memeriksa apakah ulat telah meninggalkan jendela—
jika demikian, permainan berakhir. Tambahkan loop utama di bawah kode yang Anda
ketik di Langkah 7.
9. Ikat dan dengarkan
Sekarang letakkan garis-garis ini di bawah fungsi yang baru saja Anda buat. Fungsi
onkey() mengikat bilah spasi ke start_game(), sehingga Anda dapat menunda mulai
hingga pemain menekan spasi. Fungsi listen() memungkinkan program menerima
sinyal dari keyboard.
10. Uji kode Anda
Jalankan programnya. Jika kode Anda benar, Anda akan melihat ulat bergerak setelah
Anda menekan spasi. Akhirnya, itu harus merangkak dari layar. Jika program tidak
bekerja, periksa kode Anda dengan hati-hati untuk bug.
Mengisi kekosongan
Saatnya mengganti pass di fungsi placeholder dengan kode yang sebenarnya. Setelah
menambahkan kode untuk setiap fungsi, jalankan game untuk melihat perbedaannya.
11. Tetap didalam
Isi fungsi outside_window() dengan kode ini. Pertama menghitung posisi masing-
masing dinding. Kemudian ia meminta ulat untuk posisinya saat ini. Dengan
membandingkan koordinat ulat dengan koordinat dinding, dapat diketahui apakah ulat
telah meninggalkan jendela. Jalankan program untuk memeriksa fungsinya—ulat
harus berhenti ketika mencapai tepi.
138
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Bagaimana itu bekerja
Bagian tengah jendela memiliki koordinat (0, 0). Karena lebar jendela 400, lebar
dinding kanan setengah dari tengah, yaitu 200. Kode mendapatkan posisi dinding kiri
dengan mengurangkan setengah lebar dari 0. Dengan kata lain, 0–200, yaitu –200. Ia
menemukan posisi dinding atas dan bawah dengan metode yang sama.
Gambar 5.3 Koordinat pada Game
12. TAMAT!
Ketika ulat telah meninggalkan layar, tampilkan pesan untuk memberi tahu pemain
bahwa permainan telah berakhir. Isi fungsi game_over() dengan kode ini. Saat
dipanggil, fungsi tersebut akan menyembunyikan ulat dan daun, dan menulis “GAME
OVER!” di layar.
13. Tunjukkan skornya
Fungsi display_score() menginstruksikan kura-kura skor untuk menulis ulang skor,
menempatkan total terbaru di layar. Fungsi ini dipanggil setiap kali ulat mencapai
daun.
139
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
14. Daun baru
Saat daun tercapai, fungsi place_leaf() dipanggil untuk memindahkan daun ke lokasi
baru yang acak. Ia memilih dua angka acak antara –200 dan 200. Angka-angka ini
menjadi koordinat x dan y untuk daun berikutnya.
15. Menghidupkan ulat
Selanjutnya, untuk menghubungkan tombol keyboard ke caterpillar, tambahkan
empat fungsi arah baru setelah fungsi start_game(). Untuk membuat permainan ini
sedikit lebih rumit, ulat hanya bisa berbelok 90 derajat. Akibatnya, setiap fungsi
pertama-tama memeriksa untuk melihat ke arah mana ulat itu bergerak sebelum
mengubah arahnya. Jika ulat berjalan ke arah yang salah, fungsi menggunakan
setheading() untuk membuatnya menghadap ke arah yang benar.
16. Mendengarkan pers
Terakhir, gunakan onkey() untuk menautkan fungsi arah ke tombol keyboard.
Tambahkan baris ini setelah panggilan onkey() yang Anda buat di Langkah 9. Dengan
kode kemudi di tempat, permainan selesai. Bersenang-senang bermain dan mencari
tahu skor tertinggi Anda!
140
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Peretasan dan penyesuaian
Sekarang setelah permainan ulat Anda berfungsi, tidak akan terlalu sulit untuk
memodifikasinya atau bahkan memperkenalkan ulat pembantu atau saingan!
Jadikan ini permainan dua pemain
Dengan membuat kura-kura ulat kedua dengan kontrol keyboard terpisah, Anda dan
seorang teman dapat bekerja sama untuk membuat ulat memakan lebih banyak daun!
1. Buat ulat baru
Pertama, Anda harus menambahkan ulat baru. Ketik baris ini di dekat bagian atas
program Anda, di bawah kode yang membuat ulat pertama.
2. Tambahkan parameter
Untuk menggunakan kembali fungsi outside_window() untuk kedua ulat, tambahkan
parameter ke dalamnya. Sekarang Anda dapat mengetahui ulat mana yang ingin Anda
periksa.
3. Sembunyikan ulat2
Saat fungsi game_over() dipanggil, ia menyembunyikan ulat pertama. Mari tambahkan
garis untuk menyembunyikan ulat kedua juga.
4. Ubah fungsi utama
Anda harus menambahkan kode untuk caterpillar2 ke fungsi start_game() utama.
Pertama atur bentuk awalnya dan buat menghadap ke arah yang berlawanan dari ulat
pertama. Kemudian tambahkan ke loop while untuk membuatnya bergerak, dan
tambahkan tanda centang pada pernyataan if sehingga bisa memakan daunnya. Anda
juga perlu menambahkan garis untuk membuatnya tumbuh. Terakhir, edit panggilan
141
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
ke fungsi outside_window() dalam pernyataan if kedua Anda untuk melihat apakah
permainan sudah selesai.
5. Kontrol ekstra
Sekarang tetapkan kunci yang akan digunakan pemain kedua untuk mengontrol ulat
baru. Kode di sini menggunakan "w" untuk atas, "a" untuk kiri, "s" untuk bawah, dan
"d" untuk kanan, tetapi jangan ragu untuk mencoba pilihan yang berbeda. Anda
memerlukan empat fungsi baru dan empat penggunaan onkey untuk mengikat tombol
baru ke fungsi baru.
142
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Buatlah kompetitif
Lihat apakah Anda dapat mengetahui cara mengadaptasi permainan dua pemain untuk
mencatat skor setiap pemain dan kemudian mengumumkan pemenangnya di akhir.
Berikut tipnya: Anda memerlukan variabel baru untuk melacak skor pemain kedua.
Saat ulat memakan daun, Anda hanya perlu menambahkan poin ke skor ulat itu.
Terakhir, saat permainan selesai, Anda dapat membandingkan skor untuk melihat
siapa yang menang.
Buat lebih sulit atau lebih mudah
Jika Anda mengubah nilai di dalam lingkaran yang menambah panjang (+1) dan
kecepatan (+2) ulat, Anda dapat mengubah tingkat kesulitan permainan. Angka yang
lebih tinggi akan membuat permainan lebih sulit, sedangkan angka yang lebih rendah
akan membuatnya lebih mudah.
5.3 SNAP
Tantang teman Anda ke permainan jepret digital. Gim dua pemain yang serba cepat ini
membutuhkan mata yang tajam dan reaksi secepat kilat. Ini bekerja seperti permainan kartu
tetapi menggunakan bentuk berwarna yang muncul di layar daripada kartu yang dibagikan.
Apa yang terjadi
Berbagai bentuk muncul di layar secara acak dalam warna hitam, merah, hijau, atau biru. Jika
warna muncul dua kali berturut-turut, tekan tombol jepret. Pemain 1 menekan tombol "q"
untuk mengambil dan pemain 2 menekan tombol "p". Setiap jepretan yang benar mencetak
poin. Snap pada waktu yang salah dan Anda kehilangan poin. Pemain dengan skor tertinggi
adalah pemenangnya.
Memulai permainan
Game ini bekerja di jendela Tkinter. Saat Anda memulai program, jendela Tkinter
mungkin tersembunyi di balik jendela IDLE di desktop Anda. Pindahkan mereka agar
Anda dapat melihat permainannya. Namun, cepatlah: bentuk jepret mulai muncul 3
detik setelah Anda menjalankan program.
Gambar 5.4 Snap yang sama akan memulai permainan
143
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Bagaimana itu bekerja
Proyek ini menggunakan Tkinter untuk membuat bentuk. Fungsi mainloop() Tkinter
menjadwalkan fungsi yang akan Anda buat untuk menampilkan bentuk berikutnya. Fungsi
acak modul shuffle() memastikan bentuk selalu muncul dalam urutan yang berbeda. Tombol
“q” dan “p” terikat (ditautkan) ke fungsi snap(), sehingga setiap kali salah satu tombol ini
ditekan, skor pemain yang bersangkutan akan diperbarui.
Jepret diagram alur
Program berjalan selama masih ada bentuk yang tersisa untuk diungkap. Ini bereaksi
terhadap penekanan tombol pemain ketika mereka berpikir mereka melihat snap.
Ketika tidak ada lagi bentuk yang tersisa, pemenang diumumkan dan permainan
berakhir.
Gambar 5.5 Flowchart memulai pertandingan
Mulai
Pertama, Anda perlu mengimpor modul yang relevan dan membuat antarmuka pengguna
grafis (GUI). Kemudian Anda perlu membuat kanvas untuk menggambar bentuk.
1. Buat file baru
Buka IDLE. Buat file baru dan simpan sebagai "snap.py".
144
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
2. Tambahkan modul
Pertama-tama impor modul acak dan waktu, dan bagian dari Tkinter. Waktu
memungkinkan Anda membuat penundaan sehingga pemain dapat membaca "SNAP!"
atau "SALAH!" pesan sebelum bentuk berikutnya ditampilkan. HIDDEN memungkinkan
Anda menyembunyikan setiap bentuk hingga Anda ingin menampilkannya dengan
NORMAL—jika tidak, semua bentuk akan muncul di layar pada awal permainan.
3. Siapkan GUI
Sekarang ketik kode yang ditampilkan di sini untuk membuat jendela Tkinter (juga
disebut widget root) dengan judul "Snap". Jalankan kode untuk memeriksanya. Jendela
mungkin tersembunyi di balik jendela lain di desktop.
4. Buat kanvas
Ketik baris ini untuk membuat kanvas—ruang kosong tempat bentuk akan muncul.
Membuat bentuk
Tahap selanjutnya adalah membuat bentuk berwarna menggunakan fungsi dari widget
Canvas Tkinter. Anda akan menggambar lingkaran, kotak, dan persegi panjang, masing-
masing dalam empat warna berbeda.
5. Buat toko untuk bentuknya
Anda perlu membuat daftar sehingga Anda dapat menyimpan semua bentuk di suatu
tempat. Tambahkan baris ini di bagian bawah file Anda.
6. Buat lingkaran
Untuk menggambar lingkaran, gunakan fungsi create_oval() widget Canvas. Ketik kode
berikut di bawah daftar bentuk. Ini membuat empat lingkaran dengan ukuran yang
sama—masing-masing berwarna hitam, merah, hijau, dan biru—dan
menambahkannya ke daftar bentuk.
145
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Buat oval
Fungsi create.oval() menggambar oval seolah-olah berada di dalam kotak tak terlihat.
Empat angka di dalam tanda kurung menentukan posisi lingkaran di layar. Mereka
adalah koordinat dari dua sudut kotak yang berlawanan. Semakin besar perbedaan
antara dua pasang angka, semakin besar lingkarannya.
Gambar 5.6 Membentuk Oval
7. Tunjukkan lingkarannya
Coba jalankan programnya. Apakah Anda melihat bentuk apapun? Ingatlah bahwa
Anda menyetel statusnya ke TERSEMBUNYI. Ubah status satu bentuk menjadi
NORMAL dan jalankan kode lagi. Anda sekarang seharusnya dapat melihat bentuk itu
di layar. Berhati-hatilah untuk tidak mengatur lebih dari satu bentuk ke NORMAL. Jika
Anda melakukannya, semuanya akan ditampilkan sekaligus, digambar satu di atas yang
lain.
8. Tambahkan beberapa persegi panjang
Sekarang buat empat persegi panjang berwarna berbeda menggunakan fungsi
create_rectangle() Canvas. Sisipkan blok kode ini di antara kode gambar lingkaran dan
c.pack(). Untuk menghindari mengetik semuanya, cukup ketik dua baris pertama, lalu
salin dan tempel tiga kali dan ubah warnanya.
9. Tambahkan beberapa kotak
Selanjutnya menggambar kotak. Anda dapat menggunakan fungsi yang sama yang
Anda gunakan untuk membuat persegi panjang, tetapi kali ini Anda akan mengubah
146
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
persegi panjang menjadi persegi dengan membuat semua sisinya sama panjang.
Tambahkan blok kode ini di antara kode persegi panjang dan c.pack().
10. Acak bentuknya
Untuk memastikan bahwa bentuk tidak muncul dalam urutan yang sama setiap kali,
Anda perlu mengocoknya – seperti yang akan Anda lakukan dengan setumpuk kartu.
Fungsi shuffle() secara acak dapat melakukan ini untuk Anda. Sisipkan baris ini setelah
c.pack().
Bersiap-siap
Di bagian build selanjutnya, Anda akan menyiapkan beberapa variabel dan menulis
beberapa bit kode yang menyiapkan game untuk dimainkan. Namun, itu tidak akan
berfungsi sampai kami menambahkan fungsi di tahap terakhir.
Tidak ada yang benar-benar penting
Pembuat kode sering kali perlu mengatur variabel dengan nilai awal nol, seperti skor
dalam game ini. Tetapi bagaimana Anda melakukan ini jika variabel memegang string
daripada angka? Jawabannya adalah dengan menggunakan sepasang tanda kutip
tanpa apa-apa di antara mereka. Beberapa variabel, bagaimanapun, tidak memiliki
nilai default yang jelas seperti 0 atau string kosong. Dalam hal ini, Anda dapat
menggunakan kata "Tidak Ada", seperti yang kami lakukan di bawah ini.
11. Mengatur variabel
Anda memerlukan variabel untuk melacak berbagai hal saat program sedang berjalan,
termasuk bentuk saat ini, warna sebelumnya dan saat ini, dan skor kedua pemain.
12. Tambahkan penundaan
Sekarang tambahkan garis untuk membuat penundaan 3 detik sebelum bentuk
pertama muncul. Ini memberi pemain waktu untuk menemukan jendela Tkinter jika
147
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
tersembunyi di balik jendela lain di desktop. Anda akan membuat fungsi next_shape()
nanti, di Langkah 16 dan 17.
13. Bereaksi terhadap bidikan
Selanjutnya tambahkan dua baris ini ke kode Anda. Fungsi bind() memberi tahu GUI
untuk mendengarkan tombol "q" atau "p" yang ditekan, dan untuk memanggil fungsi
snap() setiap kali itu terjadi. Anda akan membuat fungsi snap() nanti.
14. Kirim penekanan tombol ke GUI
Fungsi focus_set() memberitahu penekanan tombol untuk pergi ke kanvas. GUI tidak
akan bereaksi terhadap "q" dan "p" yang ditekan tanpa fungsi ini dipanggil. Ketik baris
ini di bawah panggilan fungsi bind().
15. Mulai putaran utama
Tambahkan baris ini tepat di akhir file Anda. Setelah kita menambahkan fungsi
next_shape() dan snap(), loop utama akan memperbarui GUI dengan bentuk
berikutnya dan mendengarkan penekanan tombol.
Variabel lokal dan global
Variabel dapat berupa lokal atau global. Variabel lokal hanya ada di dalam fungsi
tertentu, yang berarti program lainnya tidak dapat menggunakannya. Variabel yang
dibuat di program utama, di luar fungsi, disebut global dan dapat digunakan di bagian
kode mana pun. Namun, jika Anda ingin menggunakan fungsi untuk menetapkan nilai
baru ke variabel global, Anda perlu menambahkan kata kunci global sebelum nama
variabel saat Anda mengetiknya di fungsi. Inilah yang kami lakukan di Langkah 16.
Mengkodekan fungsi
Tahap terakhir adalah membuat dua fungsi: satu untuk menunjukkan bentuk
berikutnya, dan satu lagi untuk menangani kancing. Ketik di bagian atas program Anda,
tepat di bawah pernyataan impor.
148
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
16. Buat fungsinya
Fungsi next_shape() menunjukkan bentuk berwarna satu demi satu, seperti kartu yang
dibagikan. Mulailah mendefinisikan fungsi dengan mengetikkan kode di bawah ini. Ini
melabeli beberapa variabel Anda sebagai global (lihat kotak, kiri) dan memperbarui
warna_sebelumnya.
17. Lengkapi fungsinya
Sekarang ketik sisa fungsi. Untuk menampilkan bentuk baru, kita perlu mengubah
statusnya dari HIDDEN ke NORMAL. Kode di bawah ini melakukan ini dengan
menggunakan fungsi itemconfigure() Canvas. Ia menggunakan fungsi Canvas lain,
itemcget(), untuk memperbarui variabel current_color, yang akan digunakan untuk
memeriksa snap.
Mengonfigurasi item Kanvas
Anda dapat mengubah hal-hal yang muncul di kanvas dengan menggunakan fungsi
itemconfigure() Canvas. Dalam game ini, misalnya, Anda menggunakan
itemconfigure() untuk mengubah bentuk dari tersembunyi menjadi terlihat, tetapi
Anda juga dapat menggunakannya untuk mengubah warna atau karakteristik lainnya.
Untuk menggunakan itemconfigure(), masukkan nama item yang ingin Anda ubah
dalam tanda kurung, diikuti dengan koma lalu karakteristik dan nilai barunya.
18. Apakah itu sekejap?
Untuk menyelesaikan permainan, buat fungsi terakhir Anda: snap(). Fungsi ini akan
memeriksa pemain mana yang telah menekan tombol mereka dan apakah snap itu
149
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
valid (benar). Ini kemudian akan memperbarui skor dan menampilkan pesan.
Tambahkan kode ini di bawah fungsi next_shape().
19. Uji kode Anda
Sekarang jalankan program untuk memeriksanya berfungsi. Ingat Anda perlu mengklik
jendela Tkinter sebelum merespons tombol "q" dan "p".
Peretasan dan penyesuaian
Tkinter dapat menampilkan banyak warna dan bentuk yang berbeda selain lingkaran,
kotak, dan persegi panjang, jadi ada banyak ruang untuk menyesuaikan permainan Anda.
Berikut adalah beberapa ide untuk dicoba—termasuk membuat game ini anti-cheat!
Mempercepat permainan
Anda dapat membuat permainan sedikit lebih sulit dengan mengurangi waktu tunda
antara setiap bentuk saat permainan berlangsung. Petunjuk: coba simpan waktu
dalam variabel, mulai dari 1000 dan kurangi 25 darinya setiap kali bentuk ditampilkan.
Angka-angka ini hanyalah saran—bereksperimenlah dengan angka-angka tersebut
untuk melihat apa yang menurut Anda paling berhasil.
Garis besar berwarna
Program melihat parameter isian, bukan garis besar, ketika menilai apakah snap yang
valid telah dibuat. Anda dapat memberikan garis luar berwarna yang berbeda pada
bentuk dan mereka akan tetap membuat gambar selama warna isiannya cocok.
150
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Tambahkan lebih banyak warna
Anda mungkin telah memperhatikan bahwa Snap adalah permainan yang cukup
singkat. Untuk membuatnya lebih panjang, tambahkan kotak ekstra, persegi panjang,
dan lingkaran menggunakan warna berbeda.
5.4 BUAT BENTUK BARU
Anda dapat mengubah parameter create_oval() untuk menghasilkan oval daripada
lingkaran. Tkinter juga dapat menggambar busur, garis, dan poligon. Cobalah contoh yang
ditampilkan di sini, dan mainkan parameternya. Ingatlah untuk menjaga status sebagai
TERSEMBUNYI untuk menyembunyikan bentuk sampai saatnya untuk menunjukkannya.
1. Menggambar busur
Gunakan fungsi create_arc() untuk menggambar busur. Busur padat digambar kecuali
Anda memberi gaya pada busur Anda. Untuk menggunakan gaya busur Tkinter yang
berbeda, impor CHORD dan ARC dengan mengubah baris ketiga program Anda, seperti
yang ditunjukkan di bawah ini. Kemudian tambahkan beberapa akord dan busur ke
daftar bentuk Anda, seperti yang ditunjukkan di atas.
2. Menggambar garis
Sekarang coba tambahkan beberapa baris ke daftar bentuk Anda menggunakan fungsi
create_line().
3. Menggambar poligon
Selanjutnya coba buat beberapa poligon untuk koleksi bentuk Anda, menggunakan
create_polygon(). Anda harus memberikan koordinat untuk setiap sudut poligon Anda.
5.5 HENTIKAN KECURANGAN PEMAIN
Saat ini, jika snap valid dan kedua pemain menekan tombol snap mereka secara
bersamaan, mereka masing-masing mendapatkan poin. Bahkan, mereka masih dapat
151
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
mencetak poin hingga bentuk berikutnya ditampilkan, karena sebelumnya dan saat ini akan
tetap sama. Coba peretasan ini untuk menghentikan para pemain agar tidak curang.
1. Go global
Pertama, Anda perlu mengatakan bahwa before_color adalah variabel global dalam
fungsi snap(), karena Anda perlu mengubah nilainya. Tambahkan baris ini di bawah
variabel global lainnya.
2. Blokir beberapa jepretan
Selanjutnya tambahkan baris berikut ke fungsi snap() untuk mengatur nilai prior_color
ke string kosong ('') setelah snap yang benar. Sekarang jika seorang pemain menekan
tombol mereka lagi sebelum bentuk berikutnya ditampilkan, mereka akan kehilangan
satu poin. Ini karena '' tidak akan pernah sama dengan warna saat ini, kecuali sebelum
bentuk pertama ditampilkan.
3. Cegah jepretan dini
Karena warna_sebelumnya dan warna_saat ini sama di awal permainan, pemain masih
bisa curang dengan menekan tombol mereka sebelum bentuk pertama muncul. Untuk
mengatasi ini, atur dua variabel ke string yang berbeda di awal. Ubah nilainya menjadi
"a" dan "b".
4. Ubah pesan
Jika kedua pemain menekan tombol mereka pada waktu yang hampir bersamaan,
mungkin akan membingungkan siapa yang mencetak atau kehilangan poin. Untuk
memperbaikinya, Anda dapat mengubah pesan yang ditampilkan saat pemain
mencoba melakukan snap.
152
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
5.6 PENCARI JODOH
Seberapa baik ingatanmu? Uji dalam permainan menyenangkan ini di mana Anda
harus menemukan pasangan simbol yang cocok. Lihat seberapa cepat Anda dapat
menemukan semua 12 pasangan yang cocok!
Apa yang terjadi
Saat Anda menjalankan program, itu akan membuka jendela yang menunjukkan kisi-
kisi tombol. Klik pada mereka berpasangan untuk mengungkapkan simbol tersembunyi. Jika
dua simbol sama, Anda telah menemukan kecocokan dan simbol tetap terlihat di layar. Jika
tidak, kedua tombol akan diatur ulang. Cobalah untuk mengingat lokasi setiap simbol
tersembunyi untuk menemukan semua pasangan dengan cepat.
Gambar 5.7 antarmuka pengguna grafis (GUI) dibuat oleh modul Tkinter Python
Kotak menunjukkan 24 tombol yang disusun menjadi empat baris enam.
Klik pada tombol untuk mengungkapkan simbol.
Hanya ada dua dari setiap simbol.
Jika Anda membuat kecocokan yang salah, simbol disembunyikan lagi.
Simbol yang cocok dibiarkan ditampilkan di kisi.
Bagaimana itu bekerja
Proyek ini menggunakan modul Tkinter untuk menampilkan kisi tombol. Fungsi
mainloop() Tkinter mendengarkan penekanan tombol dan menanganinya dengan jenis fungsi
khusus, yang disebut fungsi lambda, yang mengungkapkan simbol. Jika simbol yang tidak
cocok telah terungkap, program akan memeriksa untuk melihat apakah simbol kedua cocok.
Proyek menyimpan tombol dalam kamus dan simbol dalam daftar.
Bagan alur mak comblang
Setelah mengacak simbol dan membuat kisi, program menghabiskan waktunya
mendengarkan penekanan tombol. Itu berakhir ketika semua pasangan yang cocok
telah ditemukan.
153
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Gambar 5.8 Diagram alur Pencari jodoh
Fungsi Lambda
Seperti def, kata kunci lambda digunakan untuk mendefinisikan fungsi. Semua fungsi
Lambda ditulis dalam satu baris dan dapat digunakan di mana pun Anda membutuhkan suatu
fungsi. Misalnya, fungsi lambda x: x*2 menggandakan angka. Anda dapat menetapkannya ke
variabel, seperti double = lambda x: x*2. Kemudian Anda menyebutnya menggunakan
double(x), di mana x adalah angka.
Jadi double(2) akan mengembalikan 4. Fungsi Lambda sangat berguna dalam
pemrograman GUI, di mana beberapa tombol mungkin perlu memanggil fungsi yang sama
menggunakan parameter yang berbeda. Tanpa fungsi lambda di Matchmaker, Anda harus
membuat fungsi yang berbeda untuk setiap tombol— yaitu 24 fungsi!
Mulai
Di bagian pertama proyek, Anda akan menyiapkan antarmuka pengguna grafis (GUI)
dan menambahkan pasangan simbol yang akan disembunyikan oleh tombol.
1. Buat file baru
Buka IDLE. Buat file baru dan simpan sebagai "matchmaker.py".
154
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
2. Tambahkan modul
Sekarang ketik kode ini di bagian atas file Anda untuk mengimpor modul yang Anda
butuhkan untuk proyek ini. Anda akan menggunakan acak untuk mengacak simbol,
waktu untuk menjeda program, dan Tkinter untuk membuat GUI.
3. Siapkan GUI
Di bawah perintah impor, tambahkan kode ini, yang akan mengatur GUI. Fungsi
root.resizable() mencegah pemutar mengubah ukuran jendela. Ini penting, karena
mengubah ukuran jendela akan mengacaukan tata letak tombol yang akan Anda buat
nanti.
4. Uji kode Anda
Sekarang jalankan kodenya. Anda akan melihat jendela Tkinter kosong dengan judul
"Matchmaker". Jika Anda tidak dapat melihatnya, mungkin tersembunyi di balik
jendela lain.
Gambar 5.9 Jendela Matchmaker
5. Buat beberapa variabel
Di bawah kode untuk Langkah 3, tambahkan variabel yang dibutuhkan program, dan
buat kamus untuk menyimpan tombol. Untuk setiap percobaan pertandingan, Anda
perlu mengingat apakah itu simbol pertama atau kedua dalam pertandingan. Anda
juga perlu melacak penekanan tombol pertama sehingga Anda dapat
membandingkannya dengan penekanan tombol kedua.
155
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
6. Tambahkan simbol
Selanjutnya ketik kode di bawah ini untuk menambahkan simbol yang akan digunakan
game. Seperti dalam proyek Nine Lives, program ini menggunakan karakter Unicode.
Ada 12 pasang, jadi totalnya 24. Tambahkan kode ini di bawah variabel yang
ditambahkan pada Langkah 5.
Gambar 5.10 Simbol pada python
7. Acak simbol-simbolnya
Anda tidak ingin simbol muncul di tempat yang sama setiap saat. Setelah beberapa
pertandingan, pemain akan mengingat posisi mereka dan akan dapat mencocokkan
semuanya pada percobaan pertama mereka, setiap saat. Untuk mencegah hal ini,
Anda perlu mengocok simbol sebelum setiap permainan dimulai. Tambahkan baris ini
setelah daftar simbol.
Bawa tombolnya!
Pada tahap selanjutnya Anda akan membuat tombol dan menambahkannya ke GUI.
Kemudian Anda akan membuat fungsi yang disebut show_symbol() untuk mengontrol
apa yang terjadi saat pemain mengklik tombol.
8. Membangun jaringan
Grid akan terdiri dari 24 tombol yang disusun menjadi empat baris enam. Untuk
menata grid, Anda akan menggunakan loop bersarang. Lingkaran x luar akan bekerja
dari kiri ke kanan melintasi enam kolom, sedangkan lingkaran y dalam akan bekerja
dari atas ke bawah ke bawah setiap kolom. Setelah loop berjalan, setiap tombol akan
diberikan sepasang koordinat x dan y yang mengatur posisinya di grid. Letakkan blok
kode ini setelah perintah shuffle.
Tombol
Tkinter memiliki widget built-in yang disebut Button, yang kami gunakan untuk
membuat tombol GUI. Anda dapat melewati parameter yang berbeda untuk itu. Yang
kita butuhkan adalah perintah, lebar, dan tinggi. Parameter perintah memberitahu
program apa yang harus dilakukan ketika sebuah tombol ditekan. Ini adalah panggilan
156
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
fungsi. Dalam program kami, ini memanggil fungsi lambda. Parameter lebar dan tinggi
digunakan untuk mengatur ukuran tombol.
Cara kerjanya
Setiap kali loop berjalan, fungsi lambda menyimpan nilai x dan y tombol saat ini (baris
dan kolom tempatnya). Saat tombol ditekan, ia memanggil fungsi show_symbol() (yang
akan Anda buat nanti) dengan nilai-nilai ini, jadi fungsi tombol mana yang telah ditekan
dan simbol mana yang akan ditampilkan.
Loop bersarang
Anda mungkin ingat pernah membaca tentang loop bersarang di halaman 35.
Anda dapat memasukkan loop sebanyak yang Anda inginkan. Dalam proyek ini,
loop luar berjalan enam kali. Setiap kali putaran luar berjalan, putaran dalam
berjalan empat kali. Jadi total loop dalam berjalan 6 x 4 = 24 kali.
9. Mulai putaran utama
Sekarang mulai mainloop Tkinter. Setelah loop ini dimulai, GUI akan ditampilkan dan
akan mulai mendengarkan penekanan tombol. Ketik baris ini setelah kode yang Anda
tambahkan di Langkah 8.
10. Uji kode Anda
Jalankan program lagi. Jendela Tkinter Anda sekarang harus diisi dengan 24 tombol
yang diatur dalam kotak. Jika tidak terlihat mirip dengan gambar yang ditampilkan di
sini, periksa kode Anda dengan cermat untuk menemukan kesalahan.
157
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Gambar 5.11 Jendela Permainan Matchmaker
11. Tunjukkan simbolnya
Terakhir, Anda perlu membuat fungsi yang menangani penekanan tombol. Fungsi ini
akan selalu menampilkan simbol, tetapi cara kerjanya bergantung pada apakah itu
giliran pertama atau kedua dalam upaya pencocokan. Jika sudah belokan pertama,
fungsinya hanya perlu mengingat tombol mana yang ditekan. Jika giliran kedua, perlu
memeriksa apakah simbolnya cocok. Simbol yang tidak cocok disembunyikan. Simbol
yang cocok dibiarkan ditampilkan dan tombolnya dinonaktifkan.
Bagaimana itu bekerja
Fungsi menunjukkan simbol tombol dengan mengubah label teksnya menjadi karakter
Unicode yang kami tetapkan secara acak. Kami menggunakan update_idletasks() untuk
memberi tahu Tkinter agar menunjukkan simbol ini sekarang. Jika giliran pertama, kita
simpan saja koordinat tombol dalam variabel. Jika giliran kedua, kita perlu memeriksa
bahwa pemain tidak mencoba menipu dengan menekan tombol yang sama dua kali.
Jika tidak, kami memeriksa apakah simbolnya cocok. Jika simbol tidak cocok, kami
158
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
menyembunyikannya dengan menyetel teks ke string kosong; jika cocok, kami
membiarkannya ditampilkan tetapi menonaktifkan tombol.
Peretasan dan penyesuaian
Anda bisa mengadaptasi game ini dengan banyak cara. Anda dapat menunjukkan
jumlah gerakan yang dilakukan untuk menyelesaikan permainan, sehingga pemain dapat
mencoba dan mengalahkan skor mereka sendiri atau menantang teman mereka. Anda juga
bisa menambahkan lebih banyak simbol untuk membuat permainan lebih sulit.
Tunjukkan jumlah gerakan
Saat ini, pemain tidak memiliki cara untuk mengetahui seberapa baik yang telah
mereka lakukan atau apakah mereka telah melakukan lebih baik daripada teman-teman
mereka. Bagaimana kita bisa membuat permainan lebih kompetitif? Mari tambahkan variabel
untuk menghitung berapa banyak giliran yang dibutuhkan pemain untuk menyelesaikan
permainan. Kemudian pemain bisa bersaing untuk melihat siapa yang mendapat skor
terendah.
1. Tambahkan modul baru
Anda perlu mengimpor widget kotak pesan Tkinter untuk menampilkan jumlah
gerakan di akhir permainan. Di baris impor, tambahkan kotak pesan kata setelah
DINONAKTIFKAN.
2. Buat variabel baru
Anda harus membuat dua variabel tambahan untuk peretasan ini. Satu variabel akan
melacak jumlah gerakan yang dilakukan pemain, sementara yang lain akan mengingat
berapa banyak pasangan yang mereka temukan. Beri keduanya nilai awal 0. Letakkan
baris ini di bawah variabel sebelumnyaY.
3. Nyatakan mereka secara global
Variabel move dan pair adalah variabel global, dan mereka harus diubah oleh fungsi
show_symbol(). Biarkan show_symbol() mengetahui hal ini dengan meletakkan dua
baris ini di dekat bagian atas fungsi.
4. Hitung gerakannya
159
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Sebuah langkah adalah dua penekanan tombol (satu upaya yang cocok). Jadi Anda
hanya perlu menambahkan 1 ke variabel move saat fungsi show_symbol() dipanggil
untuk penekanan tombol pertama atau kedua—bukan untuk keduanya. Mari kita
lakukan untuk penekanan tombol pertama. Ubah fungsi show_symbol() menjadi
seperti ini.
5. Menampilkan pesan
Sekarang tambahkan kode berikut di dekat bagian bawah fungsi show_symbol(). Ini
akan melacak pasangan yang cocok dan menunjukkan kotak pesan di akhir permainan
yang memberi tahu pemain berapa banyak gerakan yang mereka ambil. Saat pemain
mengklik tombol OK kotak, kode memanggil fungsi close_window(), yang akan kita
tambahkan selanjutnya.
Gambar 5.12 Massage box
Bagaimana itu bekerja
Ada 12 pasang simbol, jadi Anda cukup mengetikkan pasangan == 12 di peretasan.
Namun, kode Anda lebih pintar dari ini. Ini menghitung jumlah pasangan dengan
menggunakan pasangan == len(tombol)/2. Ini memungkinkan Anda untuk
menambahkan lebih banyak tombol ke gim tanpa harus memperbarui sedikit kode ini.
6. Menutup jendela
Terakhir, Anda perlu membuat fungsi close_window(), untuk membuat program
keluar dari game saat pemain mengklik tombol OK pada kotak pesan “Jumlah
gerakan”. Tambahkan kode ini di bawah baris yang mengimpor modul.
Tambahkan lebih banyak tombol
Mari kita tantang memori pemain dengan menambahkan lebih banyak tombol dan
simbol ke dalam game.
160
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
1. Simbol ekstra
Pertama, Anda perlu menambahkan lebih banyak pasangan ke daftar simbol. Sertakan
baris baru ini dalam kode.
2. Tombol ekstra
Sekarang tambahkan baris tombol tambahan. Untuk melakukan ini, Anda hanya perlu
mengubah rentang y di loop bersarang dari 4 menjadi 5, seperti yang ditunjukkan di
sebelah kanan.
3. Bahkan lebih besar?
Anda sekarang memiliki total 30 tombol. Jika Anda ingin menambahkan lebih banyak,
pastikan jumlah tombol tambahan yang Anda tambahkan adalah kelipatan 6 sehingga
Anda selalu menambahkan baris lengkap. Jika Anda merasa ingin bertualang, Anda
dapat bereksperimen dengan tata letak tombol yang berbeda dengan mengubah loop
bersarang.
Gambar 5.13 macam-macam symbol
5.7 PENANGKAP TELUR
Game ini akan menguji konsentrasi dan kecepatan refleks Anda. Jangan retak di bawah
tekanan—tangkap saja telur sebanyak mungkin untuk mendapatkan skor tinggi. Tantang
teman Anda untuk melihat siapa pemenang penangkap telur!
Apa yang terjadi
Pindahkan penangkap di sepanjang bagian bawah layar untuk menangkap setiap telur
sebelum menyentuh tanah. Ketika Anda mengambil telur Anda mencetak poin, tetapi jika
161
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Anda menjatuhkan telur Anda kehilangan kehidupan. Hati-hati: semakin banyak telur yang
Anda tangkap, semakin sering telur baru muncul di bagian atas layar dan semakin cepat
jatuhnya. Kehilangan ketiga nyawa dan permainan berakhir.
Waktu
Waktu aksi di layar itu penting. Pada awalnya, telur baru hanya ditambahkan setiap 4
detik; jika tidak, akan ada terlalu banyak telur. Awalnya, telur bergerak turun sedikit setiap
setengah detik. Jika intervalnya lebih kecil, permainan akan terlalu sulit. Program memeriksa
tangkapan sekali setiap sepersepuluh detik — lebih lambat, dan mungkin melewatkannya.
Saat pemain mencetak lebih banyak poin, kecepatan dan jumlah telur meningkat untuk
membuat permainan lebih menantang.
Gambar 5.14 Permainan Penangkap telur
Anda mencetak 10 poin untuk menangkap setiap telur.
Gerakkan penangkap ke depan dan ke belakang dengan menekan tombol panah kiri
dan kanan.
Program ini menggunakan Tkinter untuk menggambar dan memindahkan bentuk, dan
modul acak untuk menempatkannya di layar.
Telur baru muncul di bagian atas layar, dalam posisi acak.
Penghitung ini menunjukkan berapa banyak nyawa yang tersisa.
Anda dapat menambahkan bentuk statis, seperti rumput, ke layar untuk membuat
pemandangan latar belakang.
Jika telur menyentuh bagian bawah layar, Anda kehilangan nyawa.
162
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Game bergaya arcade
Proyek terakhir ini menyatukan semua keterampilan pengkodean Anda untuk
membuat game bergaya arcade yang mengesankan. Kodenya cukup rumit, jadi periksa
kode Anda dengan cermat untuk menemukan bug di setiap tahap dan jangan berkecil
hati jika Anda membuat beberapa kesalahan di sepanjang prosesnya. Setelah Anda
memecahkan Egg Catcher, Anda akan siap untuk mulai membuat game Anda sendiri.
Bagaimana itu bekerja
Setelah latar belakang dibuat, telur secara bertahap bergerak ke bawah layar, yang
menciptakan ilusi bahwa mereka jatuh. Menggunakan loop, kode terus-menerus memeriksa
koordinat telur untuk melihat apakah ada yang menyentuh dasar atau tertangkap di
penangkap. Ketika telur ditangkap atau dijatuhkan, telur itu akan dihapus dan program
menyesuaikan skor atau jumlah nyawa yang tersisa.
Gambar 5.15 Diagram alur Permainan Penangkap Telur
Bagan alur Penangkap Telur
Ada tiga putaran berbeda dalam permainan ini: satu untuk membuat telur baru, yang
lain untuk memeriksa apakah penangkap telah menangkap telur, dan yang ketiga
untuk memindahkan telur dan memeriksa apakah telur menyentuh dasar. Masing-
masing dari tiga loop berulang dengan kecepatan yang berbeda.
Pengaturan
Pertama, Anda akan mengimpor bagian Python yang Anda butuhkan untuk proyek ini.
Kemudian Anda akan mengatur semuanya sehingga Anda siap untuk menulis fungsi utama
untuk game tersebut.
163
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
1. Buat file
Buka IDLE dan buat file baru. Simpan sebagai "telur_catcher.py".
2. Impor modul
Egg Catcher menggunakan tiga modul: itertools untuk menggilir beberapa warna; acak
untuk membuat telur muncul di tempat acak; dan Tkinter untuk menganimasikan
game dengan membuat bentuk di layar. Ketik baris ini di bagian atas file Anda.
3. Siapkan kanvas
Tambahkan kode ini di bawah pernyataan impor. Itu membuat variabel untuk tinggi
dan lebar kanvas, lalu menggunakannya untuk membuat kanvas itu sendiri. Untuk
menambahkan sedikit pemandangan ke permainan Anda, itu menggambar persegi
panjang untuk mewakili beberapa rumput dan oval untuk mewakili matahari.
4. Lihat kanvas Anda
Jalankan kode untuk melihat tampilan kanvas. Anda akan melihat pemandangan
dengan rumput hijau, langit biru, dan matahari yang cerah. Jika Anda merasa percaya
diri, cobalah untuk membuat pemandangan sendiri dengan bentuk warna atau ukuran
yang berbeda. Anda selalu dapat kembali ke kode di atas jika mengalami masalah.
Gambar 5.16 Tampilan Pada layar
5. Siapkan telur
Sekarang buat beberapa variabel untuk menyimpan warna, lebar, dan tinggi telur.
Anda juga memerlukan variabel untuk skor, kecepatan telur yang jatuh, dan interval
antara telur baru yang muncul di layar. Jumlah perubahannya ditentukan oleh faktor-
164
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
kesulitan—nilai yang lebih rendah untuk variabel ini sebenarnya membuat permainan
lebih sulit.
6. Siapkan penangkap
Selanjutnya tambahkan variabel untuk penangkap. Selain variabel untuk warna dan
ukurannya, ada empat variabel yang menyimpan posisi awal penangkap. Nilai untuk
ini dihitung menggunakan ukuran kanvas dan penangkap. Setelah ini dihitung, mereka
digunakan untuk membuat busur yang digunakan game untuk penangkap.
Bagaimana itu bekerja
Anda menggunakan busur untuk mewakili penangkap. Busur adalah salah satu bagian
dari seluruh lingkaran. Tkinter menggambar lingkaran di dalam kotak tak terlihat. Dua
koordinat catcher_start pertama (x dan y) plot di mana salah satu sudut kotak
seharusnya. Dua koordinat kedua (x2 dan y2) menggambarkan posisi sudut kotak yang
berlawanan. Fungsi create_arc() memiliki dua parameter, keduanya diberikan dalam
derajat (°), yang mengatakan di mana dalam lingkaran untuk menggambar busur: start
mengatakan di mana harus mulai menggambar, sedangkan sejauh adalah berapa
derajat untuk menggambar sebelum berhenti.
Gambar 5.17 Membuat penangkap telur
165
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Gambar 5.18 Game penangkap Telur
7. Skor dan penghitung hidup
Tambahkan kode ini di bawah baris yang mengatur penangkap. Ini menetapkan skor
awal ke 0 dan membuat teks yang menunjukkan skor di layar. Itu juga mengatur sisa
hidup menjadi tiga dan menampilkan nomor ini. Untuk memeriksa apakah kode
berfungsi, tambahkan root.mainloop() tepat di akhir dan kemudian jalankan kode.
Setelah Anda memeriksanya, hapus baris ini—Anda akan menambahkannya lagi nanti
saat dibutuhkan.
Jatuh, mencetak gol, jatuh
Anda telah menyelesaikan semua tugas penyiapan, jadi saatnya menulis kode yang
menjalankan game. Anda akan memerlukan fungsi untuk membuat telur dan
membuatnya jatuh, dan beberapa fungsi lagi untuk menangani tangkapan telur dan
tetesan telur.
8. Buat telurnya
Tambahkan kode ini. Daftar melacak semua telur di layar. Fungsi create_egg()
menentukan koordinat setiap telur baru (koordinat x selalu dipilih secara acak).
Kemudian ia membuat telur sebagai oval dan menambahkannya ke daftar telur.
Akhirnya, ini mengatur timer untuk memanggil fungsi lagi setelah jeda.
166
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
9. Pindahkan telur
Setelah membuat telur, tambahkan fungsi berikutnya, move_eggs(), untuk
menggerakkannya. Ini loop melalui daftar semua telur di layar. Untuk setiap telur,
koordinat y meningkat, yang menggerakkan telur ke bawah layar. Setelah telur
dipindahkan, program akan memeriksa apakah telur telah mencapai bagian bawah
layar. Jika sudah, telur telah dijatuhkan dan fungsi egg_dropped() dipanggil. Terakhir,
pengatur waktu diatur untuk memanggil fungsi move_eggs() lagi setelah jeda singkat.
10. Ups—telur jatuh!
Selanjutnya tambahkan fungsi egg_dropped() setelah move_eggs(). Ketika telur
dijatuhkan, itu akan dihapus dari daftar telur dan kemudian dihapus dari kanvas.
Nyawa dikurangi menggunakan fungsi lose_a_life(), yang akan Anda buat di Langkah
11. Jika kehilangan nyawa berarti tidak ada nyawa yang tersisa, "Game Over!" pesan
ditampilkan.
11. Kehilangan nyawa
Kehilangan nyawa hanya melibatkan pengurangan nyawa dari variabel life_remaining
dan kemudian menampilkan nilai baru di layar. Tambahkan baris ini setelah fungsi
egg_dropped().
167
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
12. Periksa tangkapan
Sekarang tambahkan fungsi check_catch(). Telur ditangkap jika berada di dalam busur
penangkap. Untuk mengetahui apakah Anda telah menangkap, loop for mendapatkan
koordinat setiap telur dan membandingkannya dengan koordinat penangkap. Jika ada
kecocokan, telur ditangkap. Kemudian dihapus dari daftar, dihapus dari layar, dan skor
ditingkatkan.
13. Tingkatkan skornya
Pertama skor ditingkatkan dengan nilai parameter poin. Selanjutnya kecepatan dan
interval baru telur dihitung dengan mengalikan nilainya dengan faktor kesulitan.
Akhirnya, teks di layar diperbarui dengan skor baru. Tambahkan fungsi baru ini di
bawah check_catch().
Tangkap telur itu!
Sekarang setelah Anda mendapatkan semua bentuk dan fungsi yang diperlukan untuk
permainan, yang tersisa untuk ditambahkan hanyalah kontrol untuk penangkap telur
dan perintah yang memulai permainan.
14. Siapkan kontrol
Fungsi move_left() dan move_right() menggunakan koordinat penangkap untuk
memastikan penangkap tidak akan meninggalkan layar. Jika masih ada ruang untuk
dipindahkan, penangkap bergeser secara horizontal sebesar 20 piksel. Kedua fungsi ini
ditautkan ke tombol panah kiri dan kanan pada keyboard menggunakan fungsi bind().
168
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Fungsi focus_set() memungkinkan program mendeteksi penekanan tombol.
Tambahkan fungsi baru di bawah fungsi peningkatan_score().
15. Memulai permainan
Tiga fungsi perulangan dimulai menggunakan timer. Ini memastikan mereka tidak
dijalankan sebelum loop utama dimulai. Terakhir, fungsi mainloop() memulai loop
Tkinter yang mengelola semua loop dan timer Anda. Semua selesai – nikmati
permainannya, dan jangan biarkan telur-telur itu pecah!
Peretasan dan penyesuaian
Untuk membuat permainan terlihat lebih baik, Anda dapat mencoba menambahkan
beberapa pemandangan keren Anda sendiri. Suara dan musik yang menyenangkan adalah
cara hebat lainnya untuk membuat game lebih seru.
Memasang modul
Beberapa modul Python yang paling berguna— seperti Pygame—tidak disertakan
sebagai bagian dari pustaka Python standar. Jika Anda ingin menggunakan salah satu modul
lain ini, Anda harus menginstalnya terlebih dahulu. Tempat terbaik untuk mencari petunjuk
tentang cara memasang modul adalah situs web modul. Ada petunjuk dan tip di
https://docs.python.org/3/installing/.
Atur adegan
Tkinter memungkinkan gambar khusus untuk digunakan sebagai latar belakang untuk
kanvas. Jika file Anda adalah GIF, Anda dapat menggunakan tkinter.PhotoImage untuk
memuat file. Jika gambar Anda memiliki format yang berbeda, Anda mungkin ingin
melihat ke Pillow—modul penanganan gambar yang berguna.
169
Proyek Coding dengan Python (Dr. Joseph Teguh Santoso)
Gambar 5.19 Hasil Permainan penangkap Telur dengan background yang berbeda
Buat beberapa kebisingan
Untuk benar-benar menghidupkan permainan, tambahkan musik latar atau efek suara
untuk menangkap telur atau kehilangan nyawa. Modul yang digunakan untuk
menambahkan suara adalah pygame.mixer. Ingat, pygame bukan modul Python
standar, jadi Anda harus menginstalnya terlebih dahulu. Anda juga harus memiliki
salinan file suara yang ingin Anda putar, yang harus Anda tempatkan di folder yang
sama dengan file kode Anda. Setelah itu, memutar suara hanya membutuhkan
beberapa baris kode.