Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เกมทายสีด้วย Tkinter ใน Python

สำหรับการพัฒนาแอปพลิเคชัน GUI โมดูล tkinter เป็นที่นิยมและใช้งานง่าย สามารถพัฒนาเกม GUI ได้อย่างรวดเร็ว

ที่นี่เราจะพัฒนาเกมทายสี (Color Game) ในเกมนี้ ผู้เล่นต้องพิมพ์ชื่อสีของคำที่ปรากฏบนหน้าจอ (ไม่ใช่คำนั้นเอง) คะแนนจะเพิ่มขึ้นทีละ 1 ระยะเวลาเล่นเกมคือ 30 วินาที สีที่ใช้ในเกมมี 10 สี ได้แก่ แดง น้ำเงิน เขียว โรส ดำ เหลือง ส้ม ขาว ม่วง และน้ำตาล อินเทอร์เฟซจะแสดงชื่อสีต่างๆ ในสีที่ต่างกัน ผู้เล่นต้องระบุสีที่ถูกต้องและพิมพ์ชื่อสีให้ถูกต้องเพื่อชนะเกม

โค้ดตัวอย่างสมบูรณ์

import tkinter
import random

# รายการสี
my_colours = ['Red','Blue','Green','Pink','Black','Yellow','Orange','White','Purple','Brown']
my_score = 0
my_timeleft = 30

def my_startGame(event):
    if my_timeleft == 30:
        # เริ่มนับถอยหลัง
        my_countdown()
        my_nextColour()

def my_nextColour():
    global my_score
    global my_timeleft
    
    # ถ้าเกมกำลังเล่นอยู่
    if my_timeleft > 0:
        e.focus_set()
        
        # ตรวจสอบว่าคำตอบถูกต้องหรือไม่ (เปรียบเทียบกับสีที่ 2 ในรายการ)
        if e.get().lower() == my_colours[1].lower():
            my_score += 1
        
        # ล้างกล่องป้อนข้อความ
        e.delete(0, tkinter.END)
        random.shuffle(my_colours)
        
        # อัปเดตป้ายข้อความ: fg = สีของข้อความ, text = คำที่แสดง
        label.config(fg=str(my_colours[1]), text=str(my_colours[0]))
        
        # อัปเดตคะแนน
        my_scoreLabel.config(text="Score: " + str(my_score))

# ฟังก์ชันนับถอยหลัง
def my_countdown():
    global my_timeleft
    
    if my_timeleft > 0:
        my_timeleft -= 1
        timeLabel.config(text="Time left: " + str(my_timeleft))
        # เรียกฟังก์ชันนี้อีกครั้งหลังจาก 1 วินาที
        timeLabel.after(1000, my_countdown)

# โค้ดหลัก
root = tkinter.Tk()
root.title("COLORGAME")
root.geometry("375x200")

my_instructions = tkinter.Label(root, text="Type in the color\nof the words, and not the word text!", font=('Helvetica', 12))
my_instructions.pack()

my_scoreLabel = tkinter.Label(root, text="Press enter to start", font=('Helvetica', 12))
my_scoreLabel.pack()

my_timeLabel = tkinter.Label(root, text="Time left: " + str(my_timeleft), font=('Helvetica', 12))
my_timeLabel.pack()

label = tkinter.Label(root, font=('Helvetica', 60))
label.pack()

e = tkinter.Entry(root)
root.bind('', my_startGame)
e.pack()
e.focus_set()

# เริ่ม GUI
root.mainloop()

ผลลัพธ์

เกมทายสีด้วย Tkinter ใน Python
เกมทายสีด้วย Tkinter ใน Python

วิธีเล่น: กด Enter เพื่อเริ่มเกม -> พิมพ์ชื่อสีของข้อความที่แสดง (ไม่ใช่คำที่เขียน) -> กด Enter เพื่อยืนยัน -> ทำซ้ำจนหมดเวลา