Farih.co.id
Home Programming Cara Membuat Power-Up dan Koleksi di Pygame

Cara Membuat Power-Up dan Koleksi di Pygame

collectibles in game

Power-up dan barang koleksi memainkan peran penting dalam meningkatkan gameplay dan membuat game lebih menarik. Dengan menambahkan elemen ini ke proyek Pygame Anda, Anda dapat membuat tantangan unik, meningkatkan motivasi pemain, dan memberikan peluang untuk pengambilan keputusan strategis.


Untungnya, Pygame menyediakan cara yang fleksibel untuk mengimplementasikan power-up dan koleksi dengan relatif mudah.


Buat Game Sederhana

Sebelum memulai, pastikan Anda telah menginstal pip di sistem Anda. Gunakan perintah ini untuk menginstal pygame perpustakaan:

 pip install pygame 

Mulailah dengan menyiapkan permainan sederhana di mana pemain dapat bergerak ke kiri dan ke kanan sambil menghindari musuh.

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

Ini akan berfungsi sebagai dasar untuk menambahkan power-up dan koleksi. Berikut ini cuplikan kode contoh:

 import pygame
import random


pygame.init()


window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("My Game")


player_width = 50
player_height = 50
player_x = (window_width - player_width) // 2
player_y = window_height - player_height - 10
player_speed = 5


enemy_width = 50
enemy_height = 50
enemy_x = random.randint(0, window_width - enemy_width)
enemy_y = 50
enemy_speed = 3


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and player_x > 0:
        player_x -= player_speed
    if keys[pygame.K_RIGHT] and player_x < window_width - player_width:
        player_x += player_speed

    
    enemy_y += enemy_speed
    if enemy_y > window_height:
        enemy_x = random.randint(0, window_width - enemy_width)
        enemy_y = 0

    
    if (player_x < enemy_x + enemy_width) and \
        (player_x + player_width > enemy_x) and \
        (player_y < enemy_y + enemy_height) and \
        (player_y + player_height > enemy_y):
        running = False

    
    window.fill((0, 0, 0))

    player_pos = (player_x, player_y,
                  player_width, player_height)
    enemy_pos = (enemy_x, enemy_y,
                  enemy_width, enemy_height)

    
    pygame.draw.rect(window, (255, 255, 255), player_pos)

    
    pygame.draw.rect(window, (255, 0, 0), enemy_pos)

    
    pygame.display.update()


pygame.quit()

Di bawah ini adalah outputnya:

game arcade sederhana dengan pemain dan objek musuh

Buat Koleksi

Untuk membuat barang koleksi, tambahkan objek yang, setelah bertabrakan dengan pemain, menghilang dan menambahkan 10 poin ke skor. Untuk ini, Anda harus memeriksa tabrakan antara pemain dan barang koleksi. Berikut adalah versi terbaru dari kode yang menyertakan barang koleksi. Buat file baru bernama koleksi.py dan tambahkan kode dengan pembaruan di bawah ini:

 
collectible_width = 30
collectible_height = 30
collectible_x = random.randint(0, window_width - collectible_width)
collectible_y = 50


score = 0
font = pygame.font.Font(None, 36)


if (player_x < collectible_x + collectible_width) and \
                        (player_x + player_width > collectible_x) and \
                        (player_y < collectible_y + collectible_height) and \
                        (player_y + player_height > collectible_y):
        collectible_x = random.randint(0, window_width - collectible_width)
        collectible_y = 50
        score += 10

collectible_pos = (collectible_x, collectible_y)
pygame.draw.circle(window, (0, 255, 0), collectible_pos, collectible_width)


score_text = font.render("Score: " + str(score), True, (255, 255, 255))
window.blit(score_text, (10, 10))

Di bawah ini adalah outputnya:

game pygame dengan objek koleksi, musuh, dan pemain

Buat Power-Up

Sekarang, Anda dapat memperkenalkan power-up ke game Anda dengan logika berikut. Saat pemain bertabrakan dengan objek power-up, power-up akan hilang. Jika pemain bertabrakan dengan musuh saat power-up aktif, musuh akan tersingkir. Buat file baru bernama powerups.py dan tambahkan kode dengan pembaruan di bawah ini:

 
powerup_width = 40
powerup_height = 40
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
shield_active = False
shield_timer = 0


collision_powerup = (player_x < powerup_x + powerup_width) and \
                    (player_x + player_width > powerup_x) and \
                    (player_y < powerup_y + powerup_height) and \
                    (player_y + player_height > powerup_y)

if collision_powerup:
    powerup_x = random.randint(0, window_width - powerup_width)
    powerup_y = 50
    shield_active = True
    shield_timer = pygame.time.get_ticks()


if shield_active:
    current_time = pygame.time.get_ticks()
    if current_time - shield_timer > 5000:
        shield_active = False


x1 = powerup_x + powerup_width / 2
y1 = powerup_y
x2 = powerup_x
y2 = powerup_y + powerup_height
x3 = powerup_x + powerup_width
y3 = powerup_y + powerup_height


pygame.draw.polygon(window, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])


collision_shield = shield_active and \
                   (player_x < enemy_x + enemy_width) and \
                   (player_x + player_width > enemy_x) and \
                   (player_y < enemy_y + enemy_height) and \
                   (player_y + player_height > enemy_y)

if collision_shield:
    enemy_x = random.randint(0, window_width - enemy_width)
    enemy_y = 0

Di bawah ini adalah outputnya:

game pygame dengan powerup, koleksi, musuh, dan objek pemain

Mengatur Timer untuk Penyalaan

Untuk membuat power-up menghilang setelah waktu tertentu dan respawn di lokasi acak, Anda dapat memperkenalkan pengatur waktu. Buat file baru bernama timer.py dan tambahkan kode dengan pembaruan di bawah ini:

 
powerup_respawn_timer = 0


if not shield_active:
    current_time = pygame.time.get_ticks()
    if current_time - powerup_respawn_timer > 3000:
        powerup_x = random.randint(0, window_width - powerup_width)
        powerup_y = 50
        powerup_respawn_timer = pygame.time.get_ticks()

Memvisualisasikan Pengatur Waktu Penyalaan

Untuk memberikan representasi visual dari pengatur waktu penyalaan, Anda dapat menggambar objek berbentuk persegi panjang yang secara bertahap habis seiring waktu. Buat file baru bernama bar.py dan tambahkan kode dengan pembaruan di bawah ini:

 
bar_width = 100
bar_height = 10
bar_x = window_width - bar_width - 10
bar_y = 10


if shield_active:
   current_time = pygame.time.get_ticks()
   elapsed_time = current_time - shield_timer
   timer_progress = (5000 - elapsed_time) / 5000
   
   bar_rect = pygame.Rect(bar_x, bar_y, bar_width * timer_progress, bar_height)
   pygame.draw.rect(window, (0, 255, 255), bar_rect)

Di bawah ini adalah outputnya:

bilah pengatur waktu di pygame dengan pemain, musuh, powerup, dan objek yang dapat dikoleksi

Praktik Terbaik untuk Menambahkan Power-Up dan Barang Koleksi

Dalam hal menggabungkan power-up dan barang koleksi ke dalam proyek Pygame Anda, mengikuti praktik terbaik dapat sangat meningkatkan pengalaman bermain game secara keseluruhan. Pertimbangkan panduan berikut untuk memastikan implementasi yang seimbang dan menarik:

Perbedaan Visual

Sangat penting untuk membuat perbedaan visual yang jelas antara power-up, barang koleksi, dan elemen game lainnya. Gunakan warna, bentuk, atau simbol yang berbeda agar mudah dikenali oleh pemain. Kejernihan visual ini membantu pemain mengidentifikasi dan memprioritaskan target mereka, menjadikan gameplay lebih intuitif dan menyenangkan.

Keseimbangan dan Tantangan

Berusaha keras untuk mempertahankan pengalaman gameplay yang seimbang dan menantang. Sesuaikan frekuensi power-up dan spawn yang dapat dikoleksi untuk menghindari pemain yang kewalahan atau membuat game terlalu mudah. Menemukan keseimbangan yang tepat membutuhkan pengujian dan iterasi yang cermat.

Pertimbangkan umpan balik pemain dan sesuaikan tingkat pemijahan untuk menciptakan pengalaman yang menarik dan memuaskan.

Umpan Balik dan Hadiah

Memberikan umpan balik dan hadiah langsung saat pemain mengumpulkan power-up atau barang koleksi meningkatkan rasa pencapaian dan motivasi. Pertimbangkan untuk menambahkan efek visual, isyarat suara, atau animasi untuk menunjukkan akuisisi yang berhasil.

Menghadiahi pemain dengan poin, nyawa ekstra, atau membuka kemampuan khusus menambah kegembiraan lebih lanjut dan mendorong pemain untuk secara aktif mencari elemen-elemen ini.

Timer dan Durasi

Terapkan penghitung waktu dan durasi untuk power-up untuk menjaga keadilan dan pengambilan keputusan strategis. Power-up harus memiliki durasi terbatas untuk mencegah pemain menjadi terlalu kuat untuk waktu yang lama.

Menyeimbangkan durasi sangat penting, karena durasi yang terlalu singkat mungkin terasa kurang memuaskan, sementara durasi yang terlalu lama dapat membuat permainan tidak seimbang. Uji durasi yang berbeda untuk menemukan sweet spot untuk setiap power-up.

Uji dan Ulangi

Playtesting adalah langkah penting dalam proses pengembangan. Uji game Anda secara menyeluruh dengan berbagai konfigurasi dan tingkat kesulitan untuk memastikan power-up dan koleksi seimbang dan terintegrasi dengan tepat ke dalam gameplay.

Perhatikan umpan balik pemain dan ulangi berdasarkan pengalaman mereka. Pendekatan berulang ini memungkinkan Anda menyempurnakan sistem, menciptakan pengalaman bermain yang menyenangkan dan menawan.

Jadikan Game Lebih Menarik Dengan Koleksi

Menambahkan power-up dan barang koleksi ke proyek Pygame Anda dapat secara signifikan meningkatkan pengalaman bermain game secara keseluruhan. Elemen-elemen ini memperkenalkan pilihan strategis, memberi penghargaan kepada pemain, dan meningkatkan motivasi. Barang koleksi dapat digunakan untuk membuka fitur, level, atau kemampuan baru, sementara power-up memberikan keuntungan sementara dan mekanisme permainan yang unik.

Dengan merancang dan menerapkan fitur-fitur ini dengan hati-hati, Anda dapat membuat game yang lebih imersif, menantang, dan menyenangkan bagi para pemain.

Comment
Share:

Leave a Reply

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

Ad