Cara Membuat Game Ular dengan Python

Jika Anda adalah salah satu yang suka bermain game ular, saya yakin Anda akan menemukan artikel ini menarik.

Dalam artikel ini, saya akan mengajari Anda cara membuat permainan ular sederhana yang bahkan bagi pemula dalam Python akan mudah untuk dikembangkan.

Ada beberapa cara untuk membuat game ini dan salah satunya termasuk penggunaan library PyGame Python yang merupakan library Python yang kita gunakan untuk membuat game.

Cara lain adalah dengan menggunakan perpustakaan penyu. Modul ini sudah diinstal sebelumnya dengan Python dan menyediakan kanvas virtual bagi pengguna untuk membuat bentuk dan gambar.

Oleh karena itu, artikel ini akan menggunakan pustaka kura-kura untuk mengimplementasikan permainan ular sederhana kami yang ramah pemula terutama untuk pengembang Python pemula.

Selain modul ini, kita juga akan menggunakan dua modul lainnya yaitu;

  • Modul waktu – Metode ini memungkinkan kita untuk melacak jumlah detik yang telah berlalu sejak waktu sebelumnya.
  • Modul acak – Ini menghasilkan angka secara acak dengan Python.

Alat dasar lainnya yang perlu Anda gunakan termasuk editor teks pilihan Anda. Saya akan menggunakan VSCode dalam artikel ini. Tentu saja, Anda perlu menginstal Python 3 di mesin Anda jika Anda belum memilikinya. Anda juga dapat menggunakan Kompilator techking.id.

Ini harus menyenangkan!

Cara kerja permainan ular

Tujuan akhir dari game ini adalah agar pemain mencapai skor tertinggi dengan mengendalikan ular untuk mengumpulkan makanan yang ditampilkan layar.

Pemain mengontrol ular menggunakan empat tombol arah yang relatif terhadap arah ular bergerak. Jika ular menabrak balok atau dirinya sendiri, pemain kalah dalam permainan.

Berikut langkah-langkah yang akan kita ikuti untuk mengimplementasikan game ini.

  • Mengimpor ke program kami modul pra-instal (kura-kura, waktu, dan acak).
  • Membuat tampilan layar game menggunakan modul turtle.
  • Mengatur tombol untuk arah bergerak ular di sekitar layar.
  • Implementasi gameplay.
  Alternatif Terbaik untuk Akses Internet Pribadi (PIA) pada tahun 2020

Buat file snakegame.py di mana kita akan menambahkan kode implementasi.

Mengimpor modul

Sedikit kode ini akan mengimpor modul kura-kura, waktu, dan acak yang secara default sudah diinstal sebelumnya di Python. Selain itu, kami kemudian akan menetapkan nilai default untuk skor awal pemain, skor tertinggi yang akan dicapai pemain, dan waktu tunda yang diambil pemain dalam setiap gerakan. Modul waktu digunakan di sini untuk menghitung waktu tunda.

Tambahkan sedikit kode berikut ke file snakegame.py Anda.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Membuat tampilan layar game

Modul kura-kura yang kita impor di sini akan memungkinkan kita untuk membuat kanvas virtual yang akan menjadi layar jendela permainan. Dari sini, kita bisa membuat tubuh ular dan makanan yang akan dikumpulkan ular. Layar kami juga akan menampilkan skor terlacak pemain.

Tambahkan kode ini ke file Python.

# window screen created
wind = turtle.Screen()
wind.title("Snake Maze🐍")
wind.bgcolor("red")

# The screen size
wind.setup(width=600, height=600)


# creating the snake 
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 0)
snake.direction = "Stop"

# creating the food
snake_food = turtle.Turtle()
shapes = random.choice('triangle','circle')
snake_food.shape(shapes)
snake_food.color("blue")
snake_food.speed(0)
snake_food.penup()
snake_food.goto(0, 100)

pen = turtle.Turtle()
pen.speed(0)
pen.shape('square')
pen.color('white')
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("Your_score: 0 Highest_Score : 0", align="center", 
font=("Arial", 24, "normal"))
turtle.mainloop()

Cuplikan kode di atas dimulai dengan menginisialisasi layar kura-kura dan meneruskan judul dan warna latar belakang ke layar. Setelah menentukan ukuran jendela layar kita, kita menggambar bentuk ular di kanvas virtual.

Metode penup() hanya mengambil pena kura-kura sehingga garis tidak ditarik saat kura-kura bergerak. Metode goto(x,y) berisi posisi koordinat yang memindahkan kura-kura ke posisi absolut.

Kami kemudian membuat makanan yang dikumpulkan ular. Kami ingin menampilkan skor pemain setiap kali ular mengumpulkan makanan dan skor tertinggi yang dicapai pemain selama permainan. Oleh karena itu, kami menggunakan metode pen.write() untuk mengimplementasikan ini. Hideturtle() menyembunyikan ikon kura-kura dari layar di bagian header tempat teks ini ditulis.

Penting untuk menambahkan turtle.mainloop() di akhir kode Anda, yang akan menampilkan layar lebih lama untuk memungkinkan Anda sebagai pengguna melakukan sesuatu di layar.

  Cara Mengubah Nomor Telepon di Akun Samsung

Jalankan file dan Anda harus memiliki output berikut:

Menyiapkan tombol arah untuk ular

Di sini, kita akan menyiapkan tombol khusus yang akan memandu arah gerakan ular di layar. Kami akan menggunakan ‘L’ untuk kiri, ‘R’ untuk kanan, ‘U’ untuk atas, ‘D’ untuk bawah. Kami akan menerapkan arah ini menggunakan fungsi arah kura-kura yang akan kami panggil pada ular.

Tambahkan cuplikan kode berikut ke kode Anda.

# Assigning directions
def moveleft():
    if snake.direction != "right":
        snake.direction = "left"

def moveright():
    if snake.direction != "left":
        snake.direction = "right"

def moveup():
    if snake.direction != "down":
        snake.direction = "up"

def movedown():
    if snake.direction != "up":
        snake.direction = "down"

def move():
    if snake.direction == "up":
        coord_y = snake.ycor()
        snake.sety(coord_y+20)

    if snake.direction == "down":
        coord_y = snake.ycor()
        snake.sety(coord_y-20)

    if snake.direction == "right":
        coord_x = snake.xcor()
        snake.setx(coord_x+20)

    if snake.direction == "left":
        coord_x = snake.xcor()
        snake.setx(coord_x-20)

wind.listen()
wind.onkeypress(moveleft, 'L')
wind.onkeypress(moveright, 'R')
wind.onkeypress(moveup, 'U')
wind.onkeypress(movedown, 'D')

Fungsi move() di atas mengatur pergerakan ular di posisi yang ditentukan dalam nilai koordinat yang tepat.

Fungsi listen() adalah event listener yang memanggil metode yang memindahkan ular ke arah tertentu saat pemain menekan tombol.

Implementasi gameplay permainan ular

Setelah meletakkan pandangan dasar permainan ular kami, kami harus membuat permainan waktu nyata.

Ini akan melibatkan hal-hal berikut:

  • Menambah panjang ular setiap kali mengumpulkan makanan sebaiknya menggunakan warna yang berbeda.
  • Meningkatkan skor pemain setiap kali ular mengumpulkan makanan dan melacak skor tertinggi.
  • Pemain mampu mengendalikan ular agar tidak bertabrakan dengan dinding atau tubuhnya sendiri.
  • Permainan dimulai kembali ketika ular bertabrakan.
  • Skor pemain diatur ulang ke nol saat permainan dimulai ulang, sementara layar mempertahankan skor tertinggi pemain.

Tambahkan sisa kode ini ke file python Anda.

segments = []

#Implementing the gameplay
while True:
    wind.update()
    if snake.xcor() > 290 or snake.xcor() < -290 or snake.ycor() > 290 or snake.ycor() < -290:
        time.sleep(1)
        snake.goto(0, 0)
        snake.direction = "Stop"
        snake.shape("square")
        snake.color("green")

        for segment in segments:
            segment.goto(1000, 1000)
            segments.clear()
            player_score = 0
            delay_time = 0.1
            pen.clear()
            pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

        if snake.distance(snake_food) < 20:
            coord_x = random.randint(-270, 270)
            coord_y = random.randint(-270, 270)
            snake_food.goto(coord_x, coord_y)

            # Adding segment
            added_segment = turtle.Turtle()
            added_segment.speed(0)
            added_segment.shape("square")
            added_segment.color("white")
            added_segment.penup()
            segments.append(added_segment)
            delay_time -= 0.001
            player_score += 5

            if player_score > highest_score:
                highest_score = player_score
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

    # checking for collisions
    for i in range(len(segments)-1, 0, -1):
        coord_x = segments[i-1].xcor()
        coord_y = segments[i-1].ycor()
        segments[i].goto(coord_x, coord_y)

    if len(segments) > 0:
        coord_x = snake.xcor()
        coord_y = snake.ycor()
        segments[0].goto(coord_x, coord_y)
    move()

    for segment in segments:
        if segment.distance(snake) < 20:
            time.sleep(1)
            snake.goto(0, 0)
            snake.direction = "stop"
            snake.color('white')
            snake.shape('square')

            for segment in segments:
                segment.goto(1000, 1000)
                segment.clear()
                player_score = 0
                delay_time = 0.1
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

     time.sleep(delay_time)

turtle.mainloop()

Dalam cuplikan kode di atas, kami menetapkan posisi acak untuk makanan ular di dalam layar. Setiap kali ular mengumpulkan makanan ini, segmen tubuhnya bertambah dengan warna yang berbeda; putih, dalam hal ini, untuk membedakan pertumbuhannya.

  Cara Mengklik Tombol Beranda dengan Mouse di iPad

Setelah ular mengumpulkan makanan tanpa bertabrakan, makanan diatur pada posisi acak dalam rentang koordinat 270 ukuran layar. Setiap kali ular mengumpulkan makanan, skor pemain bertambah 5. Saat ular bertabrakan, skor pemain diatur ke 0 sementara layar mempertahankan skor tertinggi.

Sekarang kembalikan file Python dan Anda akan melihat layar kura-kura Anda terlihat seperti ini:

Kesimpulan

Menggunakan perpustakaan kura-kura adalah salah satu cara yang menyenangkan dan mudah untuk membuat permainan ular seperti yang telah kita lihat di artikel ini. Atau, Anda dapat menerapkan hal yang sama menggunakan pustaka PyGame. Anda dapat memeriksa Tutorial PyGame di sini dan lihat bagaimana Anda dapat mengimplementasikan permainan secara berbeda.

Anda juga dapat mencoba permainan menebak angka dengan Python atau cara mendapatkan data JSON dengan Python.
Nikmati pengkodean!