Cara Membuat Game 3D Dengan Python

Yowatech.idMembuat Game 3D Dengan Python. Python adalah bahasa pemrograman yang populer karena kemampuannya yang sangat luas, salah satunya adalah untuk membuat game. Meskipun Python dikenal sebagai bahasa pemrograman untuk aplikasi web dan pengolahan data, namun fungsionalitasnya tidak terbatas hanya pada itu saja.

Saat ini, Python juga digunakan untuk membuat game dengan teknologi 3D. Dengan Python, para pengembang game dapat membuat game 3D yang menarik dengan menggunakan beberapa library dan framework yang tersedia.

advertser--

Read Also: 4+ Contoh Program Python Biodata

Pada artikel ini, kita akan membahas tentang cara membuat game 3D dengan Python menggunakan PyOpenGL. PyOpenGL adalah library Python yang digunakan untuk membuat aplikasi grafis 3D menggunakan OpenGL.

advertser--

Dalam tutorial ini, kita akan membahas langkah-langkah dasar untuk Membuat Game 3D Dengan Python. dengan PyOpenGL, mulai dari membuat jendela, membuat objek 3D, hingga membuat interaksi dengan pemain. Hal ini akan membantu Anda memulai membuat game 3D dengan Python dan memberikan dasar yang kuat untuk mengembangkan game yang lebih kompleks.

Read Also: 5+ Contoh Program Python Game

advertser--

#1 Membuat Game 3D Dengan Python

Membuat Game 3D Dengan Python.

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *

# Initialize pygame and the OpenGL display
pygame.init()
display = (800, 600)
pygame.display.set_mode(display, DOUBLEBUF | OPENGL)

# Set up the camera
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0, 0.0, -5.0)

# Game loop
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    # Clear the screen
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

    # Draw objects
    glBegin(GL_TRIANGLES)
    glColor3f(1.0, 0.0, 0.0)
    glVertex3f(-1.0, -1.0, 0.0)
    glColor3f(0.0, 1.0, 0.0)
    glVertex3f(1.0, -1.0, 0.0)
    glColor3f(0.0, 0.0, 1.0)
    glVertex3f(0.0, 1.0, 0.0)
    glEnd()

    # Update the display
    pygame.display.flip()
    pygame.time.wait(10)

#2 Membuat Game 3D Python Sederhana Tebak Gambar

import pygame
import random

# Inisialisasi pygame
pygame.init()

# Ukuran layar
screen_width = 640
screen_height = 480

# Warna
black = (0, 0, 0)
white = (255, 255, 255)

# Membuat jendela
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Tebak Gambar")

# Mengatur font
font = pygame.font.Font(None, 36)

# Daftar gambar
images = ["apel.png", "jeruk.png", "mangga.png", "pisang.png", "strawberry.png"]
# Daftar jawaban
answers = ["apel", "jeruk", "mangga", "pisang", "strawberry"]

# Memilih gambar acak
image_index = random.randint(0, len(images)-1)
image_name = images[image_index]

# Memuat gambar
image = pygame.image.load(image_name)
image_rect = image.get_rect()
image_rect.center = (screen_width // 2, screen_height // 2)

# Memulai game loop
running = True
while running:
    # Menangani event
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                running = False
            elif event.key == pygame.K_RETURN:
                # Mengambil jawaban dari input
                input_text = input("Jawaban: ")
                if input_text.lower() == answers[image_index]:
                    # Menampilkan pesan jika benar
                    text = font.render("Jawaban benar!", True, white)
                    text_rect = text.get_rect()
                    text_rect.center = (screen_width // 2, screen_height - 50)
                    screen.blit(text, text_rect)
                    pygame.display.update()
                    pygame.time.delay(2000)
                    # Memilih gambar acak lagi
                    image_index = random.randint(0, len(images)-1)
                    image_name = images[image_index]
                    image = pygame.image.load(image_name)
                    image_rect = image.get_rect()
                    image_rect.center = (screen_width // 2, screen_height // 2)
                else:
                    # Menampilkan pesan jika salah
                    text = font.render("Jawaban salah!", True, white)
                    text_rect = text.get_rect()
                    text_rect.center = (screen_width // 2, screen_height - 50)
                    screen.blit(text, text_rect)
                    pygame.display.update()
                    pygame.time.delay(2000)

    # Menampilkan gambar
    screen.fill(black)
    screen.blit(image, image_rect)

    # Menampilkan instruksi
    text = font.render("Tebak nama buah!", True, white)
    text_rect = text.get_rect()
    text_rect.center = (screen_width // 2, 50)
    screen.blit(text, text_rect)

    pygame.display.update()

# Keluar dari pygame
pygame.quit()

Membuat Game 3D Dengan Python. Program di atas adalah sebuah game sederhana yang meminta pengguna untuk menebak nama buah berdasarkan gambar buah yang ditampilkan secara acak dari daftar gambar buah yang sudah disediakan.

advertser--

Setiap kali pengguna menjawab, program akan memeriksa jawaban yang diberikan, dan jika benar, program akan menampilkan pesan “Jawaban benar!” dan memilih gambar buah acak baru untuk ditebak. Jika jawaban salah, program akan menampilkan pesan “Jawaban salah!” dan tidak memilih gambar baru.

Pertama-tama, program menginisialisasi pygame dan mengatur ukuran layar serta warna. Kemudian, program membuat jendela dengan judul “Tebak Gambar” dan mengatur font yang akan digunakan untuk menampilkan teks pada layar. Membuat Game 3D Dengan Python.

#3 Membuat Game 3D Dengan Python (Tebak Angka)

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
import random

def draw_ball():
    glPushMatrix()
    glColor3fv((1,0,0))
    glTranslatef(x_ball, y_ball, z_ball)
    glutSolidSphere(0.5, 20, 20)
    glPopMatrix()

def draw_text(text, x, y, z):
    glRasterPos3f(x, y, z)
    for c in text:
        glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, ord(c))

def main():
    pygame.init()
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF|OPENGL)

    glViewport(0, 0, 800, 600)
    glMatrixMode(GL_PROJECTION)
    gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()

    number = random.randint(1,100)
    x_ball, y_ball, z_ball = 0, 0, 0
    x_speed, y_speed, z_speed = 0, 0, 0

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            x_speed = -0.1
        elif keys[pygame.K_RIGHT]:
            x_speed = 0.1
        else:
            x_speed = 0

        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

        x_ball += x_speed
        y_ball += y_speed
        z_ball += z_speed

        if abs(x_ball) > 10:
            x_speed = 0
            x_ball = 0

        draw_ball()

        if keys[pygame.K_RETURN]:
            if number == int(input("Guess the number: ")):
                draw_text("Congratulations, you guessed it!", -3, 0, -5)
            else:
                draw_text("Sorry, wrong number. Try again.", -3, 0, -5)

        pygame.display.flip()
        pygame.time.wait(10)

if __name__ == '__main__':
    main()

Cara menjalankan program:

  1. Pastikan library Pygame dan PyOpenGL sudah terinstall di Python.
  2. Simpan kode program di atas dengan nama file misalnya “tebak_angka_3D.py”.
  3. Buka terminal atau command prompt, lalu jalankan program dengan perintah:

python tebak_angka_3D.py

Mainkan game tebak angka dengan menggunakan tombol panah kiri dan kanan untuk menggerakkan bola, dan tombol Enter untuk menebak angka. Membuat Game 3D Dengan Python.

#4 Membuat Game 3D Puzzle pada Python

Untuk membuat 3D puzzle game pada Python, Anda bisa menggunakan library Pygame untuk membuat tampilan grafisnya, dan PyOpenGL untuk membuat tampilan 3D-nya.

Berikut adalah contoh kode untuk membuat sebuah kubus dan menggerakkannya dengan menggunakan Pygame dan PyOpenGL:

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *

vertices = (
    (1, -1, -1),
    (1, 1, -1),
    (-1, 1, -1),
    (-1, -1, -1),
    (1, -1, 1),
    (1, 1, 1),
    (-1, -1, 1),
    (-1, 1, 1)
)

edges = (
    (0,1),
    (0,3),
    (0,4),
    (1,2),
    (1,5),
    (2,3),
    (2,7),
    (3,6),
    (4,5),
    (4,6),
    (5,7),
    (6,7)
)

def Cube():
    glBegin(GL_LINES)
    for edge in edges:
        for vertex in edge:
            glVertex3fv(vertices[vertex])
    glEnd()

def main():
    pygame.init()
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
    gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
    glTranslatef(0.0,0.0,-5)
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
        glRotatef(1, 3, 1, 1)
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
        Cube()
        pygame.display.flip()
        pygame.time.wait(10)

main()

Kode di atas akan membuat sebuah kubus dan menggerakkannya dengan rotasi. Anda dapat menambahkan logika untuk memeriksa kebenaran teka-teki dan mengubah gerakan kubus berdasarkan input pengguna untuk membuat game teka-teki 3D yang lebih lengkap.

#5 Game 3D Game Sederhana Pada Python (“lompatan”)

Membuat Game 3D Dengan Python. Pertama, Anda perlu menginstal Pygame dan PyOpenGL melalui pip. Setelah itu, Anda bisa membuat file Python baru dan memulai dengan mengimpor modul yang diperlukan:

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *

Kemudian, atur pengaturan Pygame:

pygame.init()
display = (800, 600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
pygame.display.set_caption("Simple 3D Game")

Setelah itu, Anda bisa membuat fungsi-fungsi yang diperlukan, seperti fungsi untuk membuat objek, menggerakkan objek, dan menggambar objek:

def cube():
    glBegin(GL_QUADS)
    glVertex3f(1.0, 1.0, -1.0)
    glVertex3f(-1.0, 1.0, -1.0)
    glVertex3f(-1.0, 1.0, 1.0)
    glVertex3f(1.0, 1.0, 1.0)
    glEnd()
    
def move_cube():
    glTranslatef(0.0, 0.0, -1.0)
    
def draw_cube():
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
    glLoadIdentity()
    move_cube()
    cube()
    pygame.display.flip()
    pygame.time.wait(10)

Selanjutnya, Anda bisa membuat loop utama game dan menambahkan kontrol pemain. Misalnya, Anda dapat menggunakan tombol panah untuk menggerakkan pemain ke kiri atau kanan:

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                glTranslatef(-1.0, 0.0, 0.0)
            if event.key == pygame.K_RIGHT:
                glTranslatef(1.0, 0.0, 0.0)
    
    draw_cube()

Ini adalah contoh sederhana tentang bagaimana Anda bisa membuat game 3D sederhana dengan Pygame dan PyOpenGL. Tentu saja, Anda dapat menambahkan lebih banyak fitur seperti musik, suara, animasi, dan lebih banyak rintangan untuk membuat game yang lebih menantang.

Penutup

Dalam Membuat Game 3D Dengan Python., Anda telah belajar tentang cara membuat game 3D sederhana dengan Python menggunakan Pygame dan PyOpenGL.

Anda dapat membuat game Anda sendiri dengan mengikuti langkah-langkah yang dijelaskan di atas dan menambahkan kreativitas Anda sendiri untuk membuat game yang menarik dan menyenangkan.

Read Also: 5+ Contoh Program Python Absensi Karyawan

Membuat game sendiri adalah cara yang menyenangkan dan menantang untuk belajar Python dan juga dapat membantu meningkatkan keterampilan pemrograman Anda.

Dengan dukungan Pygame dan PyOpenGL, Anda dapat memanfaatkan kekuatan Python untuk membuat game yang menarik dan interaktif. Jadi, mulailah membuat game Anda sendiri sekarang dan lihatlah betapa menyenangkan dan menariknya belajar Python dan membuat game! Membuat Game 3D Dengan Python.