Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Tkinter로 만드는 컬러 게임: 30초 색깔 맞추기 챌린지

GUI 애플리케이션 개발에 있어 tkinter는 파이썬에 기본 포함되어 있을 만큼 인기가 높고 배우기 쉬운 라이브러리입니다. 복잡한 설치 과정 없이도 짧은 코드만으로 GUI 게임을 손쉽게 만들 수 있습니다.

이번 글에서는 tkinter를 활용해 재미있는 컬러 게임을 만들어 보겠습니다. 게임 규칙은 다음과 같습니다. 화면에 표시된 단어의 '글자색'을 입력해야 하며, 정답을 맞힐 때마다 점수가 1점씩 올라갑니다. 게임 시간은 총 30초이며, 사용되는 색상은 빨강(Red), 파랑(Blue), 초록(Green), 분홍(Pink), 검정(Black), 노랑(Yellow), 주황(Orange), 흰색(White), 보라(Purple), 갈색(Brown)입니다.

인터페이스에는 다양한 색상 이름이 서로 다른 색으로 출력됩니다. 예를 들어 "Red"라는 단어가 파란색 글씨로 나타나면, 플레이어는 단어의 의미가 아니라 실제 글자색인 'blue'를 입력해야 합니다. 단어의 텍스트와 색상이 계속 어긋나기 때문에 스톱프(Stroop) 효과가 발생하며, 이로 인해 집중력과 순발력이 동시에 요구되는 게임이 됩니다. 제한 시간 안에 올바른 색상 이름을 입력해 최고 점수를 기록하는 것이 목표입니다.

예제 코드

import tkinter
import random
# list of colour.
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:
      # start the countdown timer.
      my_countdown()
   my_nextColour()
def my_nextColour():
   global my_score
   global my_timeleft
   # if a game is currently in play
   if my_timeleft > 0:
      e.focus_set()
      if e.get().lower() == my_colours[1].lower():
         my_score += 1
      # clear the text entry box.
      e.delete(0, tkinter.END)
      random.shuffle(my_colours)
      label.config(fg = str(my_colours[1]), text = str(my_colours[0]))
      # update the score.
      my_scoreLabel.config(text = "Score: " + str(my_score))
# Countdown timer function
def my_countdown():
   global my_timeleft
   # if a game is in play
   if my_timeleft > 0:
      # decrement the timer.
      my_timeleft -= 1
      # update the time left label
      timeLabel.config(text = "Time left: "+ str(my_timeleft))
      # run the function again after 1 second.
      timeLabel.after(1000, my_countdown)
# Driver Code
root = tkinter.Tk()
root.title("COLORGAME")
root.geometry("375x200")
my_instructions = tkinter.Label(root, text = "Type in the color of 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('<Return>', my_startGame)
e.pack()
e.focus_set()
# start the GUI
root.mainloop()

코드 핵심 동작 원리

  • my_startGame : Enter 키 입력 시 게임을 시작하고, 첫 실행이라면 카운트다운 타이머를 함께 작동시킵니다.
  • my_nextColour : 입력한 값이 현재 글자색과 일치하면 점수를 1점 올리고, 색상 목록을 무작위로 섞어 새로운 문제를 화면에 표시합니다.
  • my_countdown : 1초마다 남은 시간을 1씩 감소시키며, 시간이 0이 되면 더 이상 점수가 올라가지 않아 게임이 자동으로 종료됩니다.

실행 결과

파이썬 Tkinter로 만드는 컬러 게임: 30초 색깔 맞추기 챌린지
파이썬 Tkinter로 만드는 컬러 게임: 30초 색깔 맞추기 챌린지