Farih.co.id
Home Programming Cara Membangun Game Ubin Memori Menggunakan Python

Cara Membangun Game Ubin Memori Menggunakan Python

neon pink brain image on a black background

Ubin memori atau permainan mencocokkan adalah cara yang bagus dan menyenangkan untuk meningkatkan kemampuan kognitif, meningkatkan memori, dan meningkatkan fokus. Gim ini memiliki seperangkat ubin yang harus Anda balik satu per satu, hafalkan, dan pilih ubin yang cocok. Saat mencocokkan semua ubin dengan benar, Anda memenangkan permainan.


Jadi bagaimana Anda bisa mengembangkan game luar biasa ini menggunakan Python?


Modul Tkinter dan Acak

Anda dapat membuat game petak memori menggunakan modul Tkinter dan Random. Tkinter memungkinkan Anda membuat aplikasi desktop. Ini menawarkan berbagai widget seperti tombol, label, dan kotak teks yang memudahkan untuk mengembangkan aplikasi seperti kalender, kalkulator, dan daftar tugas. Untuk menginstal Tkinter, buka terminal dan jalankan:

 pip install tkinter 

Modul Random adalah modul Python bawaan yang digunakan untuk menghasilkan angka pseudo-random. Dengan menggunakan ini, Anda dapat membuat pembuat kata sandi acak, aplikasi simulasi lemparan dadu, atau pengocok daftar. Selain itu, Anda juga dapat mengembangkan permainan menarik seperti kriket tangan dan permainan tebak angka.

Cara Membangun Game Ubin Memori Menggunakan Python

Anda dapat menemukan kode sumber untuk membuat game petak memori menggunakan Python di sini repositori GitHub.

Mulailah dengan mengimpor modul Tkinter dan Random. Inisialisasi jendela akar, dan atur judul dan dimensi dalam piksel.

 from tkinter import *
import random
from tkinter import messagebox

root = Tk()
root.title('Memory Tile Game')
root.geometry("760x550")

Tentukan dua variabel global dan inisialisasi variabel pemenang ke nol. Deklarasikan daftar item yang akan muncul di ubin. Susun ulang daftar menggunakan modul acak acak() metode. Tentukan bingkai di jendela root dan tambahkan padding 10 ke arah vertikal.

Inisialisasi variabel hitungan ke 0 dan nyatakan masing-masing daftar jawaban dan kamus.

 global winner, matches
winner = 0
matches = ["apple","apple","banana","banana", "orange","orange", "blueberry","blueberry","mulberry","mulberry", "grapes","grapes"]
random.shuffle(matches)
my_frame = Frame(root)
my_frame.pack(pady=10)
count = 0
answer_list = []
answer_dict = {}

Tentukan fungsi, mengatur ulang(). Setel teks label ke string kosong menggunakan konfigurasi() fungsi. Tentukan daftar tombol, satu untuk setiap ubin. Ulangi daftar dan setel teks pada ubin tombol ke string kosong, warna latar belakang ke default (SystemButtonFace), dan keadaan normal.

 def reset():
    my_label.config(text="")
    button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
    for button in button_list:
        button.config(text=" ", bg="SystemButtonFace", state="normal")

Tentukan fungsi, menang(). Tetapkan pesan pemenang di parameter teks label menggunakan konfigurasi() fungsi. Tetapkan daftar tombol seperti sebelumnya dan ulangi untuk menyetel warna latar ubin menjadi hijau muda.

 def win():
    my_label.config(text="Congratulations! You Win!")
    button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
    for button in button_list:
        button.config(bg="#90EE90")

Tentukan fungsi, tombol_klik() yang menggunakan tombol dan nomornya sebagai parameter masukan. Referensi variabel global, daftar, dan kamus. Jika teks tombol sama dengan spasi dan jumlahnya kurang dari dua, maka sisipkan dan tampilkan teks tombol. Tambahkan nomor tombol ke daftar jawaban dan nama ke kamus jawaban. Naikkan variabel hitungan satu per satu.

 def button_click(b, number):
    global count, answer_list, answer_dict, winner
    if b["text"] == ' ' and count < 2:
        b["text"] = matches[number]
        answer_list.append(number)
        answer_dict[b] = matches[number]
        count += 1

Jika panjang daftar jawaban adalah dua, berarti pengguna telah memilih dua petak. Jika teks petak pertama cocok dengan yang lain, konfigurasikan label untuk menampilkan bahwa keduanya cocok dengan benar. Ubah status tombol menjadi nonaktif. Setel hitungan ke nol, dan kosongkan daftar dan kamus. Tingkatkan variabel pemenang satu per satu dan jika berubah menjadi enam, panggil fungsi win yang dideklarasikan sebelumnya.

     if len(answer_list) == 2:
        if matches[answer_list[0]] == matches[answer_list[1]]:
            my_label.config(text="It's a Match!")
            for key in answer_dict:
                key["state"] = "disabled"
            count = 0
            answer_list = []
            answer_dict = {}
            winner += 1
            if winner == 6:
                win()

Jika tidak, setel ulang variabel hitungan dan daftar. Tampilkan kotak pesan dengan judul dan konten yang menggambarkannya sebagai kecocokan yang salah. Ulangi daftar jawaban dan atur teks ubin ke spasi. Setel ulang label dan kosongkan kamus. Ini memastikan bahwa tidak ada teks yang terlihat pada tombol dan label setelah pengguna memilih petak yang salah.

         else:
            count = 0
            answer_list = []
            messagebox.showinfo("Incorrect!", "Incorrect")
            for key in answer_dict:
                key["text"] = " "
            my_label.config(text=" ")
            answer_dict = {}

Tentukan 12 tombol. Setel jendela induk tempat Anda ingin menempatkannya, teks yang harus ditampilkan, gaya font yang harus dimiliki, tinggi dan lebarnya, dan perintah untuk dijalankan saat diklik. Ingatlah untuk menggunakan fungsi lambda untuk meneruskan data ke tombol_klik() fungsi. Mengatur lega parameter ke alur untuk membuat efek kedalaman 3-D di sekitar tombol.

 b0 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b0, 0), relief="groove")
b1 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b1, 1), relief="groove")
b2 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b2, 2), relief="groove")
b3 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b3, 3), relief="groove")
b4 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b4, 4), relief="groove")
b5 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b5, 5), relief="groove")
b6 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b6, 6), relief="groove")
b7 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b7, 7), relief="groove")
b8 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b8, 8), relief="groove")
b9 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b9, 9), relief="groove")
b10 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b10, 10), relief="groove")
b11 = Button(my_frame, text=' ', font=("Helvetica", 20), height=4, width=8, command=lambda: button_click(b11, 11), relief="groove")

Atur tombol dalam format tabular yang terdiri dari tiga baris dan empat kolom menggunakan pengelola kisi Tkinter. Untuk melakukannya, hubungi kisi() metode dan berikan baris bersama dengan nomor kolom yang ingin Anda tempatkan.

 b0.grid(row=0, column=0)
b1.grid(row=0, column=1)
b2.grid(row=0, column=2)
b3.grid(row=0, column=3)
b4.grid(row=1, column=0)
b5.grid(row=1, column=1)
b6.grid(row=1, column=2)
b7.grid(row=1, column=3)
b8.grid(row=2, column=0)
b9.grid(row=2, column=1)
b10.grid(row=2, column=2)
b11.grid(row=2, column=3)

Tentukan label yang menampilkan string kosong dan tambahkan padding 20 pada arah vertikal. Tentukan menu tingkat atas pada jendela root dan pasang dengan memutar sobek parameter ke PALSU. Tambahkan item sub-menu, Pilihan menggunakan add_cascade parameter.

Tambahkan dua item menu bersama dengan perintah yang harus mereka jalankan saat diklik di submenu bernama Atur Ulang Permainan Dan Keluar permainan. Tambahkan pemisah di antara mereka untuk demarkasi.

 my_label = Label(root, text="")
my_label.pack(pady=20)

my_menu = Menu(root)
root.config(menu=my_menu)
option_menu = Menu(my_menu, tearoff=False)
my_menu.add_cascade(label="Options", menu=option_menu)
option_menu.add_command(label="Reset Game", command=reset)
option_menu.add_separator()
option_menu.add_command(label="Exit Game", command=root.quit)

Itu mainloop() fungsi memberi tahu Python untuk menjalankan loop acara Tkinter dan mendengarkan acara sampai Anda menutup jendela.

 root.mainloop() 

Gabungkan semua kode. Sekarang permainan ubin memori siap dimainkan.

Output dari Game Ubin Memori

Saat menjalankan program, 12 tombol muncul dengan teks kosong bersama dengan Pilihan menu. Saat mengklik Atur Ulang Permainanjendela muncul dengan cara yang sama.

Output dari game ubin memori di awal atau saat menekan reset game

Saat memilih dua petak yang cocok, tombol tampak dinonaktifkan dan label menampilkan bahwa pilihannya benar.

Output dari permainan ubin memori pada pemilihan ubin yang benar

Saat memilih dua petak yang tidak cocok, kotak pesan akan muncul yang menunjukkan bahwa pemilihan salah. Tombol dan label kembali ke keadaan kosong aslinya.

Output dari permainan ubin memori pada pemilihan ubin yang salah

Saat berhasil mencocokkan semua pilihan, program mengubah semua ubin menjadi hijau dan menampilkan pesan pemenang.

Output dari game ubin memori saat Anda menang

Game yang Dapat Anda Bangun Menggunakan Python

Python menawarkan berbagai modul untuk membuat game. Untuk membuat permainan berbasis kata atau pilihan sederhana seperti Hangman, Tic-Tac-Toe, atau Rock Paper Scissors, Anda dapat menggunakan modul Tkinter dan Random. Untuk mengembangkan game yang membutuhkan lebih banyak grafis, Anda dapat menggunakan Pygame.

Pygame adalah sekumpulan modul Python yang berfungsi di semua platform. Ini termasuk grafik komputer dan perpustakaan suara yang membuat game lebih interaktif. Beberapa game yang dapat Anda buat menggunakan Pygame termasuk game Snake, game puzzle memori, dan Sudoku.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad