Xây dựng trò chơi màu bằng Tkinter trong Python
Battlefield2, World of Tanks, The Sims4 và Freedom Force là một vài trong số hàng ngàn trò chơi tuyệt vời được phát triển bằng Python.
tkinter, giao diện Python tiêu chuẩn cho bộ công cụ Tk GUI, là một mô-đun mạnh giúp việc tạo giao diện người dùng đồ họa trở nên dễ dàng và thú vị. Hãy sử dụng mô-đun này để phát triển Trò chơi Màu sắc xoắn não. Ngoài ra, hãy tìm hiểu cách sử dụng mô-đun trên đường đi.
Mục Lục
Trò chơi màu sắc là gì?
Trong Trò chơi màu, chương trình hiển thị tên của một màu trên màn hình nhưng ở một màu phông chữ khác. Chẳng hạn, nó hiển thị từ Màu vàng sử dụng màu chữ đỏ và người chơi phải nhập màu của văn bản.
Sự không khớp thông tin này cùng với bộ đếm thời gian tạo ra vô số nhầm lẫn và tạo ra trải nghiệm chơi thú vị.
Mô-đun Tkinter và Ngẫu nhiên
Để xây dựng Trò chơi Màu sắc, bạn sẽ sử dụng tkinter mô-đun và ngẫu nhiên mô-đun. Tkinter là một mô-đun GUI đ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.
Nó có một số công cụ hữu ích chẳng hạn như tiện ích nhãn và mục nhập cũng như trình quản lý bố cục như gói, lưới và địa điểm. Các chức năng được cung cấp khá đơn giản giúp các lập trình viên mới có thể dễ dàng thiết kế ứng dụng mà không cần nỗ lực nhiều. Để cài đặt tkinter trong hệ thống của bạn, hãy chạy lệnh sau trong terminal:
pip install tkinter
Mô-đun ngẫu nhiên là một thư viện tích hợp mà bạn có thể tạo các lựa chọn ngẫu nhiên. Sử dụng mô-đun này, bạn có thể phát triển trò chơi cricket bằng tay, trò chơi đoán số, trò chơi tám quả bóng ma thuật, trình tạo mật khẩu ngẫu nhiên, v.v.
Cách xây dựng trò chơi màu bằng Python
Mã nguồn của Trò chơi sắc màu có sẵn trong kho lưu trữ GitHub và bạn được sử dụng miễn phí theo Giấy phép MIT.
Bắt đầu bằng cách nhập tkinter và mô-đun ngẫu nhiên. Lưu trữ tên của các màu dưới dạng danh sách các chuỗi và khởi tạo điểm biến thành 0 và thời gian còn lại đến 60.
from tkinter import *
import randomcolours = ['Red', 'Green', 'Blue', 'Black', 'Pink', 'White', 'Purple', 'Yellow', 'Brown']
score = 0
time_remaining = 60
Xác định một chức năng có tên bắt đầuGame() mất sự kiện như một đối số đầu vào. Chức năng thực hiện hai nhiệm vụ. Đầu tiên, nó kiểm tra xem thời gian còn lại bằng 60. Nếu có, nó gọi và thực hiện lệnh đếm ngược() chức năng. Thứ hai, nó gọi màu tiếp theo() chức năng xáo trộn ngẫu nhiên và hiển thị màu sắc cũng như điểm số khi trò chơi đang diễn ra.
def beginGame(event):
if time_remaining == 60:
countdown()
nextColour()
Xác định một chức năng có tên nextColor() và tham chiếu các biến trên toàn cầu. Nếu thời gian còn lại lớn hơn 0, hãy đặt tiêu điểm vào trường nhập bằng cách sử dụng focus_set() phương pháp trên nhãn mục nhập (được lưu trữ trong biến e) được xác định trong nửa sau của mã.
Sử dụng lấy() để truy xuất văn bản hiện tại của mục nhập dưới dạng chuỗi và biến nó thành chữ thường để tránh trường hợp không khớp. Nếu giá trị này bằng với màu hiển thị trên màn hình, hãy tăng điểm lên một. Sử dụng xóa bỏ() chức năng từ 0 đến chỉ mục cuối cùng trên tiện ích mục nhập để xóa nội dung.
def nextColour():
global score
global time_remaining
if time_remaining > 0:
e.focus_set()
if e.get().lower() == colours[1].lower():
score += 1
e.delete(0, END)
Sử dụng xáo trộn() chức năng sắp xếp lại các mục trong danh sách và hiển thị nhãn màu với văn bản là màu đầu tiên trong danh sách và màu phông chữ là màu thứ hai trong danh sách. Sử dụng cấu hình() bật chức năng điểmNhãn (yêu cầu nhấn Enter) để hiển thị điểm khi trò chơi đang diễn ra.
random.shuffle(colours)
label.config(fg=str(colours[1]), text=str(colours[0]))
scoreLabel.config(text="Score: " + str(score))
Xác định một chức năng có tên đếm ngược() tham chiếu biến thời gian còn lại và giảm nó đi một. Sử dụng cấu hình() chức năng trên nhãn thời gian để hiển thị thời gian còn lại trên màn hình và sau đó() chức năng gọi lại đếm ngược hoạt động sau độ trễ 1000 mili giây hoặc một giây.
def countdown():
global time_remaining
if time_remaining > 0:
time_remaining -= 1
timeLabel.config(text="Time left: " + str(time_remaining))
timeLabel.after(1000, countdown)
Khởi tạo phiên bản tkinter và hiển thị cửa sổ gốc. Đặt tiêu đề, kích thước tính bằng pixel và màu nền của cửa sổ.
root = Tk()
root.title("Color Game With a Twist")
root.geometry("750x450")
root.configure(background='Orange')
Sử dụng Nhãn tiện ích để hướng dẫn người chơi về hướng dẫn trò chơi. Nó chấp nhận cửa sổ mẹ mà bạn sẽ đặt nó vào. Văn bản sẽ hiển thị loại phông chữ và kích thước cùng với màu nền của nhãn. Sử dụng đóng gói() chức năng sắp xếp tiện ích nhãn theo khối trước khi đặt chúng vào tiện ích mẹ.
Tương tự, xác định nhãn điểm để hướng dẫn người dùng nhấn Đi vào để bắt đầu trò chơi cũng như nhãn thời gian để hiển thị thời gian còn lại. Đảm bảo rằng tất cả các nhãn đều có màu nền cam để chúng hòa vào nền. Xác định một nhãn trống sẽ chứa tên màu trong nextColor() chức năng.
instructions = Label(root, text="Type the colour of the word not the text ;)", font=('Arial', 24), bg="orange")
instructions.pack()
scoreLabel = Label(root, text="Press Enter to begin", font=('Arial', 24), bg="orange")
scoreLabel.pack()
timeLabel = Label(root, text="Time remaining: " + str(time_remaining), font=('Arial', 24), bg="orange")
timeLabel.pack()
label = Label(root, font=('Arial', 90), bg="orange")
Như đã đề cập trước đó, hãy sử dụng tiện ích mục nhập để nắm bắt câu trả lời của người chơi. Một bước quan trọng là liên kết phím Enter với một sự kiện trong cửa sổ tkinter để khi người chơi nhấn nó, một chức năng cụ thể sẽ thực thi.
Để đạt được điều này, bạn vượt qua
e = Entry(font=20)
root.bind('<Return>', beginGame)
e.pack()
e.focus_set()
Các vòng lặp chính() chức năng yêu cầu Python chạy vòng lặp sự kiện tkinter và lắng nghe các sự kiện (chẳng hạn như nhấn nút) cho đến khi bạn đóng cửa sổ.
root.mainloop()
Đặt tất cả các mã lại với nhau và bạn có Trò chơi Màu sắc với một bước ngoặt sẵn sàng để chơi trong tầm tay.
Đầu ra của trò chơi màu bằng Python
Khi chạy chương trình Color Game, trên màn hình sẽ xuất hiện một cửa sổ. Khi nhấn Enter, quá trình đếm ngược bắt đầu và người chơi phải bắt đầu nhập màu của từ. Đối với mỗi câu trả lời đúng, điểm sẽ tăng thêm một và cuối cùng, nó sẽ hiển thị điểm cuối cùng.
Phát triển trò chơi bằng Python
Python là một ngôn ngữ tuyệt vời để phát triển trò chơi. Ngôn ngữ này không chỉ đơn giản để hiểu và sử dụng mà còn cho phép các nhà phát triển trò chơi ở mọi cấp độ kinh nghiệm tạo ra thế giới trò chơi tuyệt đẹp, thú vị và giải trí.
Ngoài ra, người sáng tạo có rất nhiều lựa chọn khi đưa ý tưởng vào cuộc sống, nhờ vào các nền tảng phát triển trò chơi khác nhau có sẵn trên thị trường, chẳng hạn như PyGame hoặc Kivy.