Objek bergerak acak membuat game lebih seru dan menantang. Pelajari cara memasukkannya ke dalam proyek Pygame Anda.

Pygame, pustaka Python populer untuk pengembangan game, memungkinkan Anda membuat game yang menarik dan interaktif dengan mudah. Salah satu cara untuk menyempurnakan kreasi Pygame Anda adalah dengan menambahkan objek bergerak acak. Objek-objek ini bisa berupa rintangan, musuh, power-up, atau apapun yang menambah dinamisme dunia game Anda.

Buat Game Sederhana

Mulailah dengan menyiapkan jendela Pygame dasar dan menambahkan objek pemain beserta beberapa platform. Anda juga dapat menerapkan gerakan dasar pemain menggunakan tombol panah atau menggunakan input sentuh.

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

Buat file baru bernama simple-game.py dan tambahkan kode untuk game dasar Anda.

Tambahkan Beberapa Objek Bergerak

Sekarang Anda memiliki permainan sederhana dengan objek dan platform pemain, tambahkan beberapa objek bergerak acak ke dalam permainan. Objek-objek ini akan bergerak secara horizontal melintasi layar dengan kecepatan berbeda.

instagram viewer

object_width, object_height = 30, 30
object_speed_range = (2, 7)
objects = []

defcreate_random_object():
return {
'x': random.randint(0, screen_width - object_width),
'y': random.randint(0, screen_height - object_height),
'speed': random.randint(*object_speed_range)
}

for _ in range(5):
objects.append(create_random_object())

defdraw_object(obj):
obj_dim = (obj['x'], obj['y'], object_width, object_height)
pygame.draw.rect(screen, WHITE, obj_dim)

# Game loop
while running:
screen.fill((0, 0, 0))

#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Di bawah ini adalah outputnya:

Menerapkan Algoritma Gerakan Acak

Saat ini, objek bergerak acak Anda hanya bergerak dalam garis horizontal lurus. Untuk membuat gerakan mereka lebih tidak dapat diprediksi, Anda dapat menambahkan algoritma gerakan acak.

# Random Movement Algorithm
defupdate_random_movement(obj):
# Change the direction randomly
if random.random() < 0.01:
obj['speed'] = -obj['speed']

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Buat Objek Bergerak Menuju Pemain

Untuk menambah kerumitan permainan, Anda dapat memperkenalkan beberapa objek yang bergerak ke arah pemain. Anda dapat mencapainya dengan menghitung sudut antara objek dan pemutar dan menyesuaikan posisi objek.

import math

# Objects Moving Towards Player
defmove_towards_player(obj):
player_center_x = player_x + player_width // 2
player_center_y = player_y + player_height // 2
object_center_x = obj['x'] + object_width // 2
object_center_y = obj['y'] + object_height // 2

angle1 = player_center_y - object_center_y
angle2 = player_center_x - object_center_x

angle = math.atan2(angle1, angle2)
obj['x'] += obj['speed'] * math.cos(angle)
obj['y'] += obj['speed'] * math.sin(angle)

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

move_towards_player(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Buat Objek Hanya Bergerak Saat Pemain Memasuki Lingkungan

Alih-alih membuat semua objek bergerak dari awal, Anda dapat membiarkan objek mulai bergerak hanya saat pemain memasuki lingkungannya.

# Objects Start to Move When Player Enters Surroundings
surrounding_distance = 150

defshould_start_moving(obj):
surrounded1 = abs(obj['x'] - player_x) < surrounding_distance
surrounded2 = abs(obj['y'] - player_y) < surrounding_distance
return surrounded1 or surrounded2

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Deteksi Tabrakan dan Interaksi

Untuk membuat game lebih menarik, Anda bisa tambahkan deteksi tabrakan antara pemain dan objek bergerak. Misalnya, Anda dapat menghapus objek dari layar saat pemain bertabrakan dengannya.

# Collision Detection and Interaction
defis_collision(obj):

condition1 = player_x + player_width > obj['x']
condition2 = player_x < obj['x'] + object_width
condition3 = player_y + player_height > obj['y']
condition4 = player_y < obj['y'] + object_height
return ( condition1 and condition2 and condition3 and condition4)

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

if is_collision(obj):
objects.remove(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Termasuk Fitur Tambahan

Menambahkan objek bergerak secara acak dapat berfungsi sebagai dasar untuk mengimplementasikan berbagai fitur menarik di Pygame Anda. Berikut adalah beberapa ide tambahan untuk meningkatkan permainan Anda:

Penilaian dan Progresi

Tetapkan skor berbeda untuk objek berdasarkan tingkat kesulitan atau kelangkaannya. Anda dapat membuat dan menampilkan sistem penilaian yang memberi penghargaan kepada pemain karena berhasil menavigasi objek bergerak atau mengumpulkan item khusus.

Terapkan pelacak kemajuan yang meningkatkan kesulitan permainan saat pemain mencapai skor lebih tinggi, membuat mereka tetap terlibat dan termotivasi untuk meningkat.

Power-Up dan Bonus

Buat objek khusus yang memberi pemain keuntungan sementara saat dikumpulkan. Power-up ini dapat mencakup peningkatan kecepatan, tak terkalahkan, atau bahkan kemampuan untuk membekukan atau menghancurkan objek lain untuk sementara.

Berkreasilah dengan efek power-up ini untuk menambah kedalaman strategis pada gameplay.

AI dan Perilaku Musuh

Rancang pola gerakan yang lebih canggih untuk objek musuh agar lebih menantang untuk dihindari pemain. Terapkan algoritme AI sederhana untuk membuat musuh mengejar pemain dengan cerdas atau bergerak dalam pola terkoordinasi.

Memvariasikan perilaku musuh akan membuat pemain tetap waspada dan mencegah permainan menjadi monoton.

Koleksi dan Hadiah

Sebarkan item koleksi di seluruh dunia game. Ini bisa berupa koin, permata, atau item tematik lainnya. Saat pemain mengumpulkan sejumlah item ini, mereka dapat membuka kunci level, karakter, atau bahkan fitur rahasia baru di dalam game.

Praktik Terbaik untuk Menambahkan Objek Bergerak Acak

Saat memasukkan objek bergerak acak ke dalam Pygame Anda, mengikuti praktik terbaik ini akan membantu Anda menciptakan pengalaman bermain game yang seimbang dan sempurna:

Kesulitan Menyeimbangkan

Kecepatan dan pola pergerakan objek yang bergerak secara acak harus diseimbangkan dengan hati-hati untuk memberikan tantangan yang adil. Hindari membuat objek bergerak terlalu cepat atau tidak menentu, karena dapat membuat pemain frustrasi dan membuat permainan terasa tidak adil.

Di sisi lain, objek yang bergerak terlalu lambat dapat membuat permainan menjadi terlalu mudah dan kurang menarik.

Optimalisasi untuk Performa

Jika game Anda menyertakan banyak objek bergerak acak atau algoritme gerakan kompleks, pertimbangkan untuk mengoptimalkan kode untuk meningkatkan performa. Gunakan struktur data dan algoritme yang efisien untuk menangani tabrakan dan perhitungan gerakan.

Minimalkan perhitungan yang tidak perlu untuk memastikan gameplay yang lancar dan responsif, terutama pada perangkat yang lebih tua atau kurang kuat.

Pengujian dan Tweak

Uji game Anda secara menyeluruh dengan berbagai skenario untuk memastikan bahwa objek bergerak acak berinteraksi dengan benar dengan elemen game lainnya. Uji tabrakan, interaksi dengan pemain, dan perilaku gerakan khusus apa pun.

Sesuaikan kecepatan, perilaku, dan pola objek berdasarkan umpan balik playtesting untuk mencapai pengalaman gameplay yang optimal.

Keacakan Dengan Kontrol

Meskipun istilah "acak" digunakan untuk objek bergerak ini, memiliki keacakan yang lengkap mungkin tidak selalu diinginkan. Pertimbangkan untuk menggabungkan keacakan terkontrol, di mana gerakan atau pola tertentu ditentukan dalam rentang atau rangkaian kemungkinan.

Keacakan yang terkontrol memastikan bahwa permainan tetap menantang dan menyenangkan tanpa menjadi terlalu kacau.

Membuat Game Lebih Menarik Dengan Objek Bergerak Acak

Objek bergerak acak menambahkan elemen kejutan dan ketidakpastian ke game Anda, menjadikannya lebih dinamis dan menarik. Mereka membuat pemain tetap waspada, membutuhkan refleks cepat dan pemikiran strategis. Selain itu, variasi gerakan dan interaksi dengan objek ini memastikan bahwa tidak ada dua pengalaman permainan yang sama.