Rastgele hareket eden nesneler, oyunları daha heyecanlı ve zorlu hale getirir. Bunu Pygame projelerinize nasıl dahil edeceğinizi öğrenin.

Oyun geliştirmeye yönelik popüler bir Python kitaplığı olan Pygame, kolaylıkla heyecan verici ve etkileşimli oyunlar oluşturmanıza olanak tanır. Pygame kreasyonlarınızı geliştirmenin bir yolu, rastgele hareket eden nesneler eklemektir. Bu nesneler engeller, düşmanlar, güçlendiriciler veya oyun dünyanıza dinamizm katan herhangi bir şey olabilir.

Basit Bir Oyun Yaratın

Temel bir Pygame penceresi kurarak ve bazı platformlarla birlikte bir oyuncu nesnesi ekleyerek başlayın. Ok tuşlarını kullanarak temel oyuncu hareketini de uygulayabilirsiniz veya dokunmatik girişleri kullanma.

Bu makalede kullanılan kod bu makalede mevcuttur. GitHub deposu ve MIT lisansı altında ücretsiz olarak kullanabilirsiniz.

adlı yeni bir dosya oluşturun. basit oyun.py ve temel oyununuz için kodu ekleyin.

Birden Çok Hareketli Nesne Ekleme

Artık bir oyuncu nesnesi ve platformları olan basit bir oyununuz olduğuna göre, oyuna birden çok rasgele hareket eden nesne ekleyin. Bu nesneler ekranda farklı hızlarda yatay olarak hareket edecektir.

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()

Çıktı aşağıdadır:

Rastgele Hareket Algoritmasını Uygulayın

Şu anda, rastgele hareket eden nesneleriniz yalnızca düz bir yatay çizgide hareket ediyor. Hareketlerini daha öngörülemez hale getirmek için rastgele bir hareket algoritması ekleyebilirsiniz.

# 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()

Nesnelerin Oyuncuya Doğru Hareket Etmesini Sağlayın

Oyuna daha fazla karmaşıklık katmak için oyuncuya doğru hareket eden bazı nesneleri tanıtabilirsiniz. Bunu, nesne ile oyuncu arasındaki açıyı hesaplayarak ve nesnenin konumunu buna göre ayarlayarak elde edebilirsiniz.

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()

Nesneleri Yalnızca Oyuncu Çevreye Girdiğinde Hareket Ettirin

Tüm nesnelerin baştan hareket etmesi yerine, nesnelerin yalnızca oyuncu çevrelerine girdiğinde hareket etmeye başlamasına izin verebilirsiniz.

# 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()

Çarpışma Algılama ve Etkileşim

Oyunu daha ilgi çekici hale getirmek için şunları yapabilirsiniz: oynatıcı ve hareketli nesneler arasında çarpışma tespiti ekleyin. Örneğin, oyuncu bir nesneyle çarpıştığında ekrandan bir nesneyi kaldırabilirsiniz.

# 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()

Ek Özellikler Dahil

Rastgele hareketli nesneler eklemek, Pygame'inizde çeşitli heyecan verici özelliklerin uygulanması için bir temel oluşturabilir. İşte oyununuzu bir sonraki seviyeye taşımak için bazı ek fikirler:

Puanlama ve İlerleme

Zorluk seviyelerine veya nadirliklerine göre nesnelere farklı puanlar atayın. oluşturabilir ve bir puanlama sistemi göster Bu, oyuncuları hareketli nesneler arasında başarılı bir şekilde gezinmek veya özel öğeler toplamak için ödüllendirir.

Oyuncular daha yüksek puanlar elde ettikçe oyunun zorluğunu artıran, onları gelişmek için meşgul ve motive eden bir ilerleme izleyicisi uygulayın.

Güçlendirmeler ve Bonuslar

Oyuncuya toplandığında geçici avantajlar sağlayan özel nesneler oluşturun. Bu güçlendirmeler, artan hız, yenilmezlik ve hatta diğer nesneleri geçici olarak dondurma veya yok etme yeteneğini içerebilir.

Oyuna stratejik derinlik katmak için bu güçlendirmelerin etkileriyle yaratıcı olun.

Düşman Yapay Zekası ve Davranışı

Oyuncuların kaçınmasını zorlaştırmak için düşman nesneleri için daha karmaşık hareket modelleri tasarlayın. Düşmanların oyuncuyu akıllıca takip etmesini veya koordineli kalıplarda hareket etmesini sağlamak için basit yapay zeka algoritmaları uygulayın.

Değişken düşman davranışları, oyuncuları tetikte tutacak ve oyunun monotonlaşmasını engelleyecektir.

Koleksiyon ve Ödüller

Toplanabilir öğeleri oyun dünyasının her yerine dağıtın. Bunlar madeni paralar, değerli taşlar veya diğer tematik öğeler olabilir. Oyuncu bu öğelerden belirli sayıda topladığında, oyundaki yeni seviyelerin, karakterlerin ve hatta gizli özelliklerin kilidini açabilir.

Rastgele Hareket Eden Nesneler Eklemek İçin En İyi Uygulamalar

Rastgele hareket eden nesneleri Pygame'inize dahil ederken, bu en iyi uygulamaları takip etmek, dengeli ve gösterişli bir oyun deneyimi oluşturmanıza yardımcı olacaktır:

Dengeleme Zorluğu

Rastgele hareket eden nesnelerin hız ve hareket kalıpları, adil bir meydan okuma sağlamak için dikkatli bir şekilde dengelenmelidir. Oyuncuları hayal kırıklığına uğratabileceği ve oyunu adaletsiz hissettirebileceği için nesneleri çok hızlı veya düzensiz hareket ettirmekten kaçının.

Öte yandan, aşırı yavaş hareket eden nesneler oyunu çok kolay ve daha az ilgi çekici hale getirebilir.

Performans için Optimizasyon

Oyununuz çok sayıda rastgele hareket eden nesne veya karmaşık hareket algoritmaları içeriyorsa, performansı artırmak için kodu optimize etmeyi düşünün. Çarpışmaları ve hareket hesaplamalarını işlemek için verimli veri yapılarını ve algoritmaları kullanın.

Özellikle eski veya daha az güçlü cihazlarda sorunsuz ve hızlı yanıt veren oyun deneyimi sağlamak için gereksiz hesaplamaları en aza indirin.

Test Etme ve Ayarlama

Rastgele hareket eden nesnelerin diğer oyun öğeleriyle doğru şekilde etkileşime girdiğinden emin olmak için oyununuzu çeşitli senaryolarla kapsamlı bir şekilde test edin. Çarpışmaları, oyuncuyla etkileşimleri ve herhangi bir özel hareket davranışını test edin.

Optimum oyun deneyimini elde etmek için oyun testi geri bildirimlerine dayalı olarak nesnelerin hızını, davranışını ve modellerini ayarlayın.

Kontrollü Rastgelelik

Bu hareketli nesneler için "rastgele" terimi kullanılsa da, tam bir rasgeleliğe sahip olmak her zaman istenmeyebilir. Belirli hareketlerin veya modellerin bir olasılıklar aralığı veya kümesi içinde tanımlandığı kontrollü rastgeleliği dahil etmeyi düşünün.

Kontrollü rastgelelik, oyunun fazla kaotik hale gelmeden zorlu ve keyifli kalmasını sağlar.

Rastgele Hareket Eden Nesnelerle Oyunları Daha İlgi Çekici Hale Getirmek

Rastgele hareket eden nesneler, oyununuza bir sürpriz ve öngörülemezlik unsuru ekleyerek oyunu daha dinamik ve ilgi çekici hale getirir. Hızlı refleksler ve stratejik düşünme gerektiren oyuncuları tetikte tutarlar. Ek olarak, bu nesnelerle yapılan hareketlerin ve etkileşimlerin çeşitliliği, iki oyun deneyiminin aynı olmamasını sağlar.