Cara Mendesain dan Membuat Level di PyGame
![game level planning in white board](https://farih.co.id/wp-content/uploads/2023/05/game-level-planning-in-white-board.jpg)
Table of content:
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 pygamepygame.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 pygamepygame.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.