Chơi trò chơi FLAMES bằng Python

FLAMES là một trò chơi thú vị dành cho trẻ em tượng trưng cho Bạn bè, Người yêu, Tình cảm, Hôn nhân và Kẻ thù. Trò chơi lấy tên của hai người và với một loạt các bước, xác định mối quan hệ của họ. Để chơi FLAMES, hãy ghi lại tên của hai người, loại bỏ các chữ cái phù hợp và đếm số ký tự còn lại.


Lặp lại các chữ cái của từ, FLAMES bằng cách sử dụng số đếm và xóa chữ cái đó. Ví dụ: nếu số đếm là bốn, hãy xóa chữ M. Số đếm bắt đầu lại từ E. Lặp lại quy trình này cho đến khi chỉ còn lại một chữ cái biểu thị trạng thái mối quan hệ.


Mô-đun Tkinter

Để xây dựng trò chơi FLAMES, bạn sẽ sử dụng mô-đun Tkinter. Tkinter là một mô-đun đa nền tảng, đơn giản và thân thiện với người dùng mà bạn có thể sử dụng để tạo giao diện người dùng đồ họa một cách nhanh chóng. Một số ứng dụng bạn có thể xây dựng khi mới bắt đầu sử dụng Tkinter bao gồm Trình phát nhạc, Lịch, Công cụ chuyển đổi trọng lượng và Trò chơi Word Jumble.

Để cài đặt tkinter trong hệ thống của bạn, hãy chạy lệnh sau trong terminal:

 pip install tkinter 

Cách xây dựng trò chơi FLAMES bằng Python

Bạn có thể tìm thấy mã nguồn của trò chơi FLAMES bằng Python trong kho lưu trữ GitHub này.

Nhập mô-đun Tkinter. Xác định một chức năng, remove_match_char() chấp nhận hai danh sách làm đầu vào. Sử dụng vòng lặp for lồng nhau để lặp qua cả hai danh sách. Kiểm tra xem có ký tự khớp không; nếu có, hãy xóa danh sách đó khỏi cả hai danh sách và tạo danh sách thứ ba nối cả hai danh sách với dấu hoa thị ở giữa. Dấu hoa thị hoạt động như một dấu phân cách.

Trả về danh sách thứ ba cùng với kết quả khớp được tìm thấy là True. Trong trường hợp không có chữ cái nào khớp, hãy trả về danh sách như đã tạo ở trên.

 from tkinter import *
def remove_match_char(list1, list2):
    for i in range(len(list1)):
        for j in range(len(list2)):
            if list1[i] == list2[j]:
                c = list1[i]
                list1.remove(c)
                list2.remove(c)
                list3 = list1 + ["*"] + list2
                return [list3, True]
    list3 = list1 + ["*"] + list2
    return [list3, False]

Xác định một chức năng, Tell_status(). Truy xuất tên của người mà người dùng đã nhập bằng cách sử dụng lấy() phương thức trên tiện ích Mục nhập. Chuyển đổi tất cả các chữ cái thành chữ thường và loại bỏ bất kỳ khoảng trắng nào ở giữa. Chuyển đổi tên thành một danh sách các ký tự. Lặp lại điều này với tên của người thứ hai và đặt tiếp tục biến thành ĐÚNG VẬY.

 def tell_status():
    p1 = Person1_field.get()
    p1 = p1.lower()
    p1.replace(" ", "")
    p1_list = list(p1)
    p2 = Person2_field.get()
    p2 = p2.lower()
    p2.replace(" ", "")
    p2_list = list(p2)
    proceed = True

Cho đến khi giá trị của tiến hành là đúng, hãy gọi remove_match_char() chức năng và chuyển hai danh sách bạn vừa tạo. Lưu trữ danh sách được nối và trạng thái cờ nhận được từ chức năng. Tìm chỉ mục của dấu hoa thị bạn đã chèn và cắt các chuỗi thành hai danh sách trước và sau nó.

Đếm số ký tự trong hai danh sách và xác định danh sách lưu trữ các trạng thái khác nhau mà một mối quan hệ có thể có theo trò chơi FLAMES.

     while proceed:
        ret_list = remove_match_char(p1_list, p2_list)
        con_list = ret_list[0]
        proceed = ret_list[1]
        star_index = con_list.index("*")
        p1_list = con_list[: star_index]
        p2_list = con_list[star_index + 1:]
    count = len(p1_list) + len(p2_list)
    result = ["Friends", "Love", "Affection", "Marriage", "Enemy", "Siblings"]

Cho đến khi các chữ cái trong danh sách kết quả khác 0, hãy lưu trữ giá trị chỉ mục từ nơi bạn phải thực hiện thao tác cắt. Nếu chỉ mục lớn hơn hoặc bằng 0, hãy chia danh sách thành hai phần và lưu trữ chuỗi được nối với phần bên phải được thêm vào trước theo thứ tự. Điều này đảm bảo bạn có thể đếm ngược chiều kim đồng hồ.

Chèn kết quả vào trường trạng thái ở vị trí ký tự đầu tiên để hiển thị trạng thái mối quan hệ.

     while len(result) > 1:
        split_index = (count % len(result) - 1)
        if split_index >= 0:
            right = result[split_index + 1:]
            left = result[: split_index]
            result = right + left
        else:
            result = result[: len(result) - 1]


    Status_field.insert(0, result[0])

Xác định một chức năng, Làm sạch tất cả(). Sử dụng hàm xóa () từ chỉ mục đầu tiên đến chỉ mục cuối cùng trên ba trường nhập để xóa nội dung hiển thị trên màn hình. Sử dụng phương thức focus_set() trên trường nhập đầu tiên để kích hoạt và cho biết người dùng nhập giá trị vào đó.

 def clear_all():
    Person1_field.delete(0, END)
    Person2_field.delete(0, END)
    Status_field.delete(0, END)
    Person1_field.focus_set()

Khởi tạo phiên bản Tkinter và hiển thị cửa sổ gốc bằng cách chuyển nó tới lớp. Đặt màu nền bạn chọn, kích thước và tiêu đề của ứng dụng của bạn.

 root = Tk()
root.configure(background='#A020F0')
root.geometry("700x200")
root.title("FLAMES Game")

Xác định ba nhãn để biểu thị hai người và tình trạng mối quan hệ của họ. Đặt cửa sổ chính mà bạn muốn đặt chúng vào, văn bản sẽ hiển thị, màu phông chữ, màu nền và kiểu phông chữ. Thêm một số phần đệm theo hướng ngang.

 label1 = Label(root, text="Name 1: ", fg='#ffffff',bg='#A020F0', font=("arial",20,"bold"), padx='20')
label2 = Label(root, text="Name 2: ", fg='#ffffff',bg='#A020F0', font=("arial",20,"bold"), padx='20')
label3 = Label(root, text="Relationship Status: ", fg='#ffffff', bg='#A020F0',font=("arial",20,"bold"), padx='20')

Sử dụng trình quản lý lưới để sắp xếp ba vật dụng trong cột đầu tiên. Đặt nhãn đầu tiên vào hàng thứ hai, nhãn thứ hai vào hàng thứ ba và nhãn thứ ba vào hàng thứ tư.

 label1.grid(row=1, column=0)
label2.grid(row=2, column=0)
label3.grid(row=4, column=0)

Xác định ba tiện ích nhập để lấy giá trị của hai người và hiển thị trạng thái của họ. Đặt cửa sổ chính mà bạn muốn đặt các tiện ích và kiểu phông chữ mà nó nên có.

 Person1_field = Entry(root, font=("arial", 15, "bold"))
Person2_field = Entry(root, font=("arial", 15, "bold"))
Status_field = Entry(root, font=("arial",15,"bold"))

Tương tự, sử dụng trình quản lý lưới để sắp xếp các vật dụng trong cột thứ hai. Sử dụng ipadx thuộc tính để đặt số lượng pixel để đệm bên trong đường viền của tiện ích con.

 Person1_field.grid(row=1, column=1, ipadx="50")
Person2_field.grid(row=2, column=1, ipadx="50")
Status_field.grid(row=4, column=1, ipadx="50")

Xác định hai nút, NộpThông thoáng. Đặt cửa sổ mẹ mà bạn muốn đặt chúng vào, văn bản sẽ hiển thị, màu nền, màu phông chữ, các chức năng mà chúng sẽ thực hiện khi được nhấp và kiểu phông chữ.

Sử dụng trình quản lý lưới để đặt các nút tương ứng ở hàng thứ tư và thứ sáu của cột thứ hai.

 button1 = Button(root, text="Submit", bg="#00ff00", fg="black", command=tell_status,font=("arial",13,"bold") )
button2 = Button(root, text="Clear", bg="#00ff00", fg="black", command=clear_all, font=("arial",13,"bold"))
button1.grid(row=3, column=1)
button2.grid(row=5, column=1)

Các vòng lặp chính() hàm yêu cầu Python chạy vòng lặp sự kiện Tkinter và lắng nghe các sự kiện cho đến khi bạn đóng cửa sổ.

 root.mainloop() 

Đặt tất cả các mã lại với nhau và sẵn sàng chơi trò chơi FLAMES trong tầm tay bạn.

Đầu ra mẫu của trò chơi FLAMES

Khi chạy chương trình trên, chương trình sẽ hiển thị ứng dụng trò chơi FLAMES với ba nhãn, ba trường nhập và hai nút được sắp xếp trong một lưới. Khi nhập tên “Tony Stark” và “Pepper Potts”, chương trình sẽ hiển thị trạng thái mối quan hệ của họ là “Love”.

LỬA Đầu ra trò chơi

Trò chơi bạn có thể xây dựng bằng Python

Pygame, Arcade, Panda3D, PyOpenGL và Pyglet là một số mô-đun hữu ích mà bạn có thể sử dụng để xây dựng trò chơi Python. Sử dụng Pygame, bạn có thể xây dựng các trò chơi 2D như Super Mario Bros, Flappy Bird và Snake. Sử dụng Arcade, bạn có thể tạo bản sao Pac-Man, Asteroids hoặc Breakout.

Panda3D có thể giúp bạn xây dựng các trò chơi 3D như Toontown Online, Pirates of the Caribbean Online và Disney’s Virtual Magic Kingdom.

Previous Post
Next Post

post written by: