Cara Membuat Game Snake Klasik dengan Python

Cara Membuat Game Snake Klasik dengan Python dan Pygame (Tutorial Lengkap untuk Pemula)

PythonCode ID - Selamat datang kembali di PythonCodeID- Siapa yang tidak kenal dengan game Snake? Game legendaris yang pernah merajai ponsel Nokia ini ternyata tidak serumit kelihatannya untuk dibuat. Jika Anda sedang belajar coding dan ingin membuat game pertama Anda, inilah proyek yang tepat, ikuti ulasannya di blog PythonCodeID ini.

Dalam tutorial lengkap ini, kita akan membahas tuntas cara membuat game Snake klasik dari nol menggunakan Python dan library super seru bernama Pygame. Tutorial ini dirancang khusus untuk pemula, jadi setiap langkah akan dijelaskan secara sederhana. Mari kita mulai! 🐍

PythonCodeID-Cara Membuat Game Snake Klasik dengan Python
Cara Membuat Game Snake Klasik dengan Python

Mengapa Membuat Game Snake?

Membuat game Snake adalah cara terbaik untuk memahami konsep fundamental dalam pengembangan game, seperti:

  • Game Loop: Jantung dari setiap game yang terus berjalan.
  • Event Handling: Mengelola input dari pemain (seperti menekan tombol panah).
  • Collision Detection: Mendeteksi saat ular menabrak dinding atau dirinya sendiri.
  • Logika Game: Mengatur skor, makanan, dan pertumbuhan ular.

Langkah 1: Persiapan Awal (Instalasi Pygame)

Sebelum kita mulai coding, pastikan Python sudah terinstal di komputermu. Setelah itu, kita hanya perlu menginstal satu library saja, yaitu Pygame.

Buka terminal atau Command Prompt, lalu ketik perintah sederhana ini:

pip install pygame



Hanya itu! Sekarang kita sudah siap untuk membuat game.


Langkah 2: Membedah Logika Game Snake

Secara garis besar, game kita akan memiliki beberapa komponen utama:

  • Layar Game: Sebuah jendela hitam sebagai arena permainan.
  • Ular (Snake): Karakter utama yang kita kendalikan, digambar sebagai rangkaian kotak hijau.
  • Makanan (Food): Sebuah kotak merah yang muncul acak. Jika dimakan, ular akan bertambah panjang.
  • Skor: Angka yang terus bertambah setiap kali ular memakan makanan.

Logika ini akan kita tuangkan ke dalam kode Python.


Langkah 3: Kode Lengkap Game Snake dengan Python dan Pygame

Inilah saatnya! Berikut adalah kode utuh untuk game Snake klasik. Kode ini sudah dilengkapi dengan komentar untuk membantumu memahami setiap barisnya. Cukup salin dan tempel ke dalam file snake_game.py.

import pygame
import time
import random

# Inisialisasi Pygame
pygame.init()

# Definisi Warna (R, G, B)
putih = (255, 255, 255)
kuning = (255, 255, 102)
hitam = (0, 0, 0)
merah = (213, 50, 80)
hijau = (0, 255, 0)
biru = (50, 153, 213)

# Ukuran Layar
lebar_layar = 600
tinggi_layar = 400

# Membuat Jendela Game dan Judulnya
layar = pygame.display.set_mode((lebar_layar, tinggi_layar))
pygame.display.set_caption('Game Ular Klasik')

# Kontrol Kecepatan/Frame Rate Game
jam = pygame.time.Clock()

# Properti Ular dan Makanan
ukuran_blok = 10
kecepatan_ular = 15

# Definisi Font untuk Teks
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)

# Fungsi untuk menampilkan skor
def tampilkan_skor(skor):
    nilai = score_font.render("Skor: " + str(skor), True, kuning)
    layar.blit(nilai, [0, 0])

# Fungsi untuk menggambar ular
def gambar_ular(ukuran_blok, list_ular):
    for x in list_ular:
        pygame.draw.rect(layar, hijau, [x[0], x[1], ukuran_blok, ukuran_blok])

# Fungsi untuk menampilkan pesan teks di layar
def tampilkan_pesan(msg, warna):
    pesan = font_style.render(msg, True, warna)
    # Menempatkan pesan di tengah layar
    layar.blit(pesan, [lebar_layar / 6, tinggi_layar / 3])

# Fungsi utama yang menjalankan seluruh game
def gameLoop():
    game_over = False
    game_close = False

    # Posisi awal ular di tengah layar
    x1 = lebar_layar / 2
    y1 = tinggi_layar / 2

    # Variabel untuk menampung perubahan posisi ular
    x1_change = 0
    y1_change = 0

    # List untuk menyimpan koordinat setiap segmen tubuh ular
    list_ular = []
    panjang_ular = 1

    # Menentukan posisi acak pertama untuk makanan
    makanan_x = round(random.randrange(0, lebar_layar - ukuran_blok) / 10.0) * 10.0
    makanan_y = round(random.randrange(0, tinggi_layar - ukuran_blok) / 10.0) * 10.0

    # Game loop utama
    while not game_over:

        # Loop yang berjalan saat game berakhir (menunggu input pemain)
        while game_close == True:
            layar.fill(biru)
            tampilkan_pesan("Kamu Kalah! Tekan 'Q' Keluar atau 'C' Main Lagi", merah)
            tampilkan_skor(panjang_ular - 1)
            pygame.display.update()

            # Mengecek input untuk keluar atau main lagi
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        gameLoop() # Memanggil fungsi ini lagi untuk restart

        # Meng-handle input dari pemain untuk menggerakkan ular
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -ukuran_blok
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = ukuran_blok
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -ukuran_blok
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = ukuran_blok
                    x1_change = 0

        # Mengecek jika ular menabrak dinding
        if x1 >= lebar_layar or x1 < 0 or y1 >= tinggi_layar or y1 < 0:
            game_close = True
           
        # Memperbarui posisi kepala ular
        x1 += x1_change
        y1 += y1_change
       
        # Menggambar latar belakang dan makanan
        layar.fill(hitam)
        pygame.draw.rect(layar, merah, [makanan_x, makanan_y, ukuran_blok, ukuran_blok])
       
        # Logika untuk pertumbuhan tubuh ular
        kepala_ular = []
        kepala_ular.append(x1)
        kepala_ular.append(y1)
        list_ular.append(kepala_ular)
        if len(list_ular) > panjang_ular:
            del list_ular[0]

        # Mengecek jika ular menabrak dirinya sendiri
        for x in list_ular[:-1]:
            if x == kepala_ular:
                game_close = True

        # Menggambar ular dan skor ke layar
        gambar_ular(ukuran_blok, list_ular)
        tampilkan_skor(panjang_ular - 1)

        # Memperbarui seluruh tampilan layar
        pygame.display.update()

        # Mengecek jika ular memakan makanan
        if x1 == makanan_x and y1 == makanan_y:
            makanan_x = round(random.randrange(0, lebar_layar - ukuran_blok) / 10.0) * 10.0
            makanan_y = round(random.randrange(0, tinggi_layar - ukuran_blok) / 10.0) * 10.0
            panjang_ular += 1

        # Mengatur kecepatan game (frame rate)
        jam.tick(kecepatan_ular)

    # Menutup Pygame dan keluar dari program
    pygame.quit()
    quit()

# Memanggil fungsi utama untuk memulai game
gameLoop()
 
Cara Membuat Game Snake Klasik dengan Python
Cara Membuat Game Snake Klasik dengan Python

Langkah 4: Kembangkan Gamenya Lebih Jauh! 🚀

Selamat! Anda baru saja berhasil membuat game Snake sendiri. Tapi jangan berhenti di sini. Ada banyak cara untuk membuat game ini lebih seru:

  • Tambah Suara: Berikan efek suara saat ular memakan makanan atau saat game over.
  • Tingkatkan Kecepatan: Buat kecepatan ular bertambah setiap kali memakan makanan.
  • Menu Utama: Buat tampilan menu sebelum game dimulai.
  • High Score: Simpan skor tertinggi ke dalam sebuah file agar tidak hilang saat game ditutup.

Kesimpulan

Menciptakan game klasik seperti Snake adalah langkah pertama yang fantastis dalam perjalananmu menjadi seorang game developer. Python dan Pygame menyediakan semua alat yang kamu butuhkan untuk mengubah ide-ide kreatif menjadi kenyataan.

Semoga tutorial ini bermanfaat dan membuatmu semakin semangat untuk belajar coding. Selamat mencoba dan selamat berkreasi. 🎮 Anda dapat mencoba membuat ToDo List menarik dengan Python loh...yuk coba baca artikelnya disini
Selamat mencoba dan selamat berkarya ampai jumpa di artikel PyCoding ID berikutnya



Posting Komentar

0 Komentar