Farih.co.id
Home Programming Cara Mendesain dan Membuat Level di PyGame

Cara Mendesain dan Membuat Level di PyGame

game level planning in white board

Level adalah aspek penting dari sebagian besar video game. Mereka memberikan struktur, tantangan, dan variasi, dan dapat meningkatkan pengalaman pemain secara signifikan. PyGame, pustaka Python populer untuk pengembangan game, menyediakan berbagai fitur yang dapat digunakan untuk membuat berbagai level dengan mudah. Level yang dirancang dengan baik dapat memikat pemain, menciptakan rasa kemajuan, dan pada akhirnya memberi penghargaan atas upaya mereka.


Tingkat Perencanaan dan Perancangan

Sebelum membuat level, penting untuk merencanakan dan mendesainnya. Level perencanaan membantu dalam menciptakan game yang terstruktur dengan baik yang memberikan tingkat kesulitan yang tepat bagi para pemain. Untuk merencanakan level, Anda perlu mempertimbangkan berbagai faktor seperti mekanisme game, cerita, dan keseluruhan struktur game.

Misalnya, jika Anda mendesain game platformer, Anda perlu memikirkan penempatan platform, musuh, dan rintangan. Anda juga perlu mempertimbangkan pergerakan pemain, seperti melompat dan berlari, dan merancang level yang sesuai.

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

Membuat Dua Tingkat Sederhana

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

 pip install pygame 

Sekarang, buat dua level sederhana dengan platform dan pemain. Berikut kode untuk level pertama:

 import pygame

pygame.init()


SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATFORM_WIDTH = 100
PLATFORM_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
PLAYER_COLOR = (255, 0, 0)


screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))


platform = pygame.Rect(350, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)


player = pygame.Rect(375, 450, PLAYER_WIDTH, PLAYER_HEIGHT)


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player.move_ip(-10, 0)
            elif event.key == pygame.K_RIGHT:
                player.move_ip(10, 0)

    
    screen.fill((0, 0, 0))

    
    pygame.draw.rect(screen, PLATFORM_COLOR, platform)

    
    pygame.draw.rect(screen, PLAYER_COLOR, player)

    
    pygame.display.flip()

pygame.quit()

Setelah itu, buat level kedua hanya dengan mengubah platform dan posisi pemain. Berikut kode untuk level kedua:

 import pygame

pygame.init()


SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATFORM_WIDTH = 150
PLATFORM_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
PLAYER_COLOR = (255, 0, 0)


screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))


platform = pygame.Rect(200, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)


player = pygame.Rect(225, 450, PLAYER_WIDTH, PLAYER_HEIGHT)


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player.move_ip(-10, 0)
            elif event.key == pygame.K_RIGHT:
                player.move_ip(10, 0)

    
    screen.fill((0, 0, 0))

    
    pygame.draw.rect(screen, PLATFORM_COLOR, platform)

    
    pygame.draw.rect(screen, PLAYER_COLOR, player)

    
    pygame.display.flip()

pygame.quit()

Kode ini mirip dengan level pertama, tetapi platform dan posisi pemain diubah.

Menghubungkan Berbagai Tingkat

Untuk menghubungkan level yang berbeda, Anda perlu memodifikasi loop game untuk beralih antar level saat pemain menyelesaikan level. Anda dapat melakukan ini dengan membuat variabel untuk melacak level saat ini dan menggunakan pernyataan bersyarat untuk beralih antar level. Anda juga dapat mendeteksi tabrakan untuk memeriksa apakah pemain telah mencapai akhir level.

Inilah loop game yang dimodifikasi:

 current_level = 1


if current_level == 1:
    pygame.draw.rect(screen, PLATFORM_COLOR, platform1)
    pygame.draw.rect(screen, PLAYER_COLOR, player)
    
    if player.colliderect(platform1) == False:
        current_level = 2
elif current_level == 2:
    pygame.draw.rect(screen, PLATFORM_COLOR, platform2)
    pygame.draw.rect(screen, PLAYER_COLOR, player)
    
    if player.colliderect(platform2) == True:
        running = False

Berbagi Data Game Antar Level

Anda perlu menyimpan data game untuk membagikannya di antara level. Untuk itu, buat modul Python terpisah untuk menyimpan data game dan mengimpornya ke setiap level.

Berikut langkah-langkahnya:

  • Buat modul Python baru bernama game_data.py.
  • Tentukan variabel global di game_data.py modul untuk menyimpan posisi pemain.
  • Di setiap level, impor file game_data modul.
  • Untuk mengambil posisi pemain di setiap level, gunakan game_data.player_pos variabel alih-alih membuat objek pemain baru.
  • Untuk memperbarui posisi pemain, ubah nilainya game_data.player_pos dalam setiap iterasi.

Berikut kode yang dimodifikasi untuk berbagi posisi pemain antar level.

Dalam game_data.py modul, tambahkan kode berikut:

 player_pos = (0, 0) 

Tingkat pertama:

 import pygame
import game_data


player = pygame.Rect(game_data.player_pos[0], game_data.player_pos[1], PLAYER_WIDTH, PLAYER_HEIGHT)


running = True
while running:
    
    pygame.draw.rect(screen, PLAYER_COLOR, player)

    
    game_data.player_pos = (player.x, player.y)

Jadikan Game Lebih Menarik Dengan Level

Menambahkan level yang berbeda ke game Anda dapat membuatnya lebih menarik dan menyenangkan bagi pemain. Dengan menghubungkan level dan berbagi data game, Anda dapat menciptakan pengalaman bermain game yang mulus dan kohesif. Ini dapat membantu pemain tetap tenggelam dalam dunia game dan mengurangi kemungkinan pelepasan atau kebosanan.

Comment
Share:

Leave a Reply

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

Ad