Cara Membuat Game Ular dengan Python
Diterbitkan: 2022-02-02Jika 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 lainnya adalah dengan memanfaatkan 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 Geekflare.
Ini harus menyenangkan!
Cara kerja permainan ular
Tujuan akhir dari game ini adalah agar pemain mencapai skor tertinggi dengan mengontrol 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.
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.
Jalankan file dan Anda akan memiliki output berikut:

Menyiapkan tombol arah untuk ular
Di sini, kami 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 petunjuk 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 pada 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.
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 melihat tutorial PyGame di sini dan melihat bagaimana Anda dapat mengimplementasikan game secara berbeda.
Anda juga dapat mencoba permainan menebak angka dengan Python atau cara mendapatkan data JSON dengan Python.
Nikmati pengkodean!