Farih.co.id
Home Programming Cara Membuat Timer Menggunakan Perpustakaan Arcade Python untuk Acara Berbasis Waktu

Cara Membuat Timer Menggunakan Perpustakaan Arcade Python untuk Acara Berbasis Waktu

timer in game

Dalam pengembangan game, menambahkan acara berbasis waktu dapat sangat meningkatkan mekanisme gameplay dan membuat game lebih menarik bagi pemain. Dengan menggabungkan pengatur waktu, Anda dapat memperkenalkan tantangan, membuat tujuan berbatas waktu, atau menambahkan rasa urgensi pada elemen game tertentu.


Buat Game Sederhana

Mulailah dengan membuat game sederhana untuk memahami dasar-dasarnya. Bangun game di mana pemain dapat bergerak ke kiri dan ke kanan, dan akan ada satu platform. Buat file baru bernama simple-game.py dan impor modul arcade, yang menyediakan fungsionalitas yang diperlukan untuk membuat game.

Kode yang digunakan dalam artikel ini tersedia di sini repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.

Selanjutnya, tentukan GameWindow kelas, yang merupakan subkelas dari arcade.Jendela. Di dalam kelas GameWindow, tentukan __init__ metode, yang menginisialisasi jendela dengan lebar, tinggi, dan judul yang ditentukan.

Itu on_key_press metode mendeteksi penekanan tombol panah kiri atau kanan. Menekan kiri berkurang pemain_x sebesar 10 unit sambil menekan kanan meningkatkannya sebesar 10 unit. Ini memungkinkan pemain untuk bergerak secara horizontal di dalam jendela permainan.

Untuk menjalankan game, tentukan fungsi utama, buat instance GameWindow, panggil metode penyiapan untuk mengatur jendela game, dan terakhir, mulai loop game menggunakan arcade.lari().

Merancang Struktur Kelas Timer

Untuk mengimplementasikan pengatur waktu dalam game Anda, Anda dapat membuat kelas Timer dengan atribut dan metode yang diperlukan. Kelas ini akan menyediakan fungsionalitas untuk memulai pengatur waktu, menghentikannya, mengambil waktu yang telah berlalu, dan memeriksa apakah pengatur waktu telah kedaluwarsa. Inilah struktur dasar untuk kelas Timer:

 import time

class Timer:
    def __init__(self, duration):
        self.duration = duration
        self.start_time = 0
        self.is_running = False

    def start(self):
        self.start_time = time.time()
        self.is_running = True

    def stop(self):
        self.is_running = False

    def get_elapsed_time(self):
        if self.is_running:
            return time.time() - self.start_time
        return 0

    def is_expired(self):
        return self.get_elapsed_time() >= self.duration

Kelas Timer mengambil a durasi parameter dalam detik selama inisialisasi. Kelas berisi atribut seperti waktu mulai untuk menyimpan waktu saat pengatur waktu dimulai, dan sedang berlari untuk melacak status pengatur waktu.

Itu awal() metode mengatur start_time ke waktu saat ini menggunakan waktu.waktu() dan atur is_running ke BENAR. Itu berhenti() metode hanya mengatur is_running ke PALSU. Itu get_elapsed_time() metode menghitung waktu yang telah berlalu dengan mengurangkan start_time dari waktu saat ini.

Jika pengatur waktu sedang berjalan, ia mengembalikan waktu yang telah berlalu; jika tidak, ia mengembalikan 0. The kadaluarsa() metode memeriksa apakah waktu yang berlalu lebih besar dari atau sama dengan durasi, yang menunjukkan bahwa pengatur waktu telah kedaluwarsa.

Menerapkan Penghitung Waktu Mundur

Untuk mendemonstrasikan hitungan mundur dalam gim Anda, Anda dapat memulai penghitung waktu saat pemain menekan tombol tertentu, seperti bilah spasi. Cetak hitungan mundur ke konsol menggunakan perintah cetak Python. Buat file baru bernama timer.py dan tambahkan kode dengan pembaruan ini:

 import time

class GameWindow(arcade.Window):
    def __init__(self):
        super().__init__(WIDTH, HEIGHT, "Simple Game")
        self.player_x = WIDTH // 2
        self.player_y = HEIGHT // 2
        self.timer = Timer(10)

    def on_key_press(self, key, modifiers):
        if key == arcade.key.SPACE:
            self.timer.start()

    def on_draw(self):
        
        if self.timer.is_running:
            elapsed_time = self.timer.get_elapsed_time()
            r_time = self.timer.duration - elapsed_time
            remaining_time = max(r_time, 0)
            print(f"Countdown: {remaining_time:.1f} seconds")

Pastikan Anda dapat melihat jendela terminal dan jendela permainan secara bersamaan. Kemudian tekan spasi dan Anda akan melihat penghitung waktu mundur:

timer sederhana dengan hitungan mundur teks

Menangani Peristiwa Pengatur Waktu dan Tindakan Pemicu

Anda juga dapat memicu fungsi yang menggambar persegi panjang saat penghitung waktu mundur berakhir. Buat file baru bernama handle-event.py dan tambahkan kode dengan pembaruan di bawah ini:

 def on_draw(self):
    
    if self.timer.is_expired():
        self.draw_rectangle()

def draw_rectangle(self):
    arcade.draw_rectangle_filled(WIDTH // 2, HEIGHT // 2, 100, 100, red)

Di bawah ini adalah outputnya:

game dengan pemain, platform, dan objek acara

Menjeda, Menyetel Ulang, dan Melanjutkan Timer

Untuk menambahkan fungsionalitas untuk menjeda, mengatur ulang, dan melanjutkan timer, Anda dapat memperpanjang Timer kelas dengan metode yang sesuai. Berikut contohnya:

 class Timer:
    

    def pause(self):
        self.duration -= self.get_elapsed_time()
        self.is_running = False

    def reset(self):
        self.start_time = 0
        self.is_running = False

    def resume(self):
        self.start_time = time.time()
        self.is_running = True

Menambahkan Umpan Balik Visual ke Timer

Untuk memberikan umpan balik visual untuk penghitung waktu, Anda dapat menggabungkan teks atau elemen grafis di layar game. Buat file baru bernama visual.py dan tambahkan kode dengan pembaruan di bawah ini:


 def on_draw(self):
    
    if self.timer.is_running:
        text = f"Countdown: {remaining_time:.1f} seconds"
        arcade.draw_text(text, 10, 10, black, 18)

Sekarang Anda akan melihat timer langsung di jendela game, bukan di konsol:

game dengan pemain dan objek platform dan pengatur waktu visual

Termasuk Fitur Tambahan

Untuk lebih menyempurnakan acara berbasis waktu, Anda dapat mempertimbangkan untuk menerapkan fitur tambahan berikut di game Anda.

Power-Up atau Bonus Berbasis Waktu

Perkenalkan power-up atau bonus yang muncul secara berkala sepanjang permainan. Power-up ini dapat memberikan kemampuan sementara, poin ekstra, peningkatan kecepatan, atau senjata yang ditingkatkan.

Dengan membuatnya dibatasi waktu, pemain harus mengumpulkannya secara strategis dalam jangka waktu tertentu untuk mendapatkan keuntungan. Ini menambah kegembiraan dan menghargai pemikiran cepat.

Tantangan Berbatas Waktu

Buat tantangan terbatas waktu di mana pemain harus menyelesaikan tugas dalam jangka waktu tertentu. Misalnya, bagian teka-teki atau platforming yang membutuhkan penyelesaian dalam waktu tertentu.

Ini menantang pemain untuk berpikir dan bertindak cepat, menambah rasa urgensi yang mendebarkan pada gameplay. Berhasil menyelesaikan tantangan ini dapat membuka hadiah atau memajukan cerita.

Rintangan atau Musuh Jangka Waktu

Terapkan rintangan atau musuh berjangka waktu yang menimbulkan ancaman bagi pemain. Misalnya, platform bergerak yang muncul dan menghilang secara berkala, atau musuh yang menjadi tak terkalahkan dalam waktu terbatas.

Pemain harus mengatur waktu tindakan dan gerakan mereka dengan benar untuk melewati rintangan ini atau mengalahkan musuh sebelum waktu habis. Ini menambahkan lapisan strategi dan koordinasi ke gameplay.

Praktik Terbaik untuk Acara Berbasis Waktu

Saat menerapkan peristiwa berbasis waktu di game Anda, penting untuk mengikuti praktik terbaik ini.

Tes dan Keseimbangan

Uji acara berbasis waktu Anda secara menyeluruh untuk memastikannya adil dan seimbang. Sempurnakan durasi, kesulitan, dan hadiah untuk menciptakan pengalaman gameplay yang menyenangkan.

Umpan Balik Pengguna

Berikan umpan balik yang jelas dan intuitif kepada pemain terkait status pengatur waktu dan acara berbasis waktu apa pun. Menambahkan efek suara, indikator visual, atau isyarat tekstual dapat membantu pemain memahami batasan waktu dan konsekuensi dari tindakan mereka.

Pengukuran Waktu yang Konsisten

Gunakan sistem pengukuran waktu yang konsisten sepanjang permainan Anda. Misalnya, gunakan detik sebagai satuan untuk semua penghitung waktu dan kalkulasi terkait waktu. Ini memastikan konsistensi dan kemudahan pemahaman bagi para pemain dan pengembang.

Tangani Kotak Tepi

Pertimbangkan skenario di mana game dapat dijeda, diminimalkan, atau dijalankan di latar belakang. Tangani situasi ini dengan baik untuk mempertahankan waktu yang akurat dan mencegah perilaku yang tidak diinginkan saat game dilanjutkan.

Dengan mengikuti praktik terbaik ini, Anda dapat membuat acara berbasis waktu yang menyempurnakan gameplay, menantang pemain, dan memberikan pengalaman yang seimbang dan menyenangkan.

Membuat Game Lebih Menyenangkan Dengan Acara Berbasis Waktu

Dengan memasukkan acara berbasis waktu ke dalam game, Anda dapat menciptakan pengalaman yang dinamis dan menarik bagi pemain. Tantangan terbatas waktu menambah kegembiraan dan urgensi, sementara power-up atau hambatan yang diatur waktunya dapat menciptakan peluang pengambilan keputusan yang strategis.

Bereksperimenlah dengan mekanisme berbasis waktu yang berbeda untuk menemukan keseimbangan yang tepat untuk game Anda, dan ingatlah untuk melakukan uji coba dan iterasi untuk memaksimalkan kesenangan dan kenikmatan.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad