제스처 게임을 위한 Python 웹 앱
(이 앱에 대해 제 동료 Ryan에게 특별히 감사드립니다!)
나쁜 인상을 가진 좋은 게임
모두가 크리스마스에 좋은 제스처 게임을 즐깁니다. 1년에 한 번 나쁜 엘비스 인상을 목격하게 되는 이유입니다!
해마다 같은 문구를 적는 데 시간을 보내는 대신 설정을 건너뛰고 바로 영화 제목을 흉내낼 수 있는 빠른 앱을 만들 수 있다고 생각했습니다.
확인해보세요here
임의의 문구 선택
Anvil’s Data Tables service 및 Python’s random module 을 사용하면 응용 프로그램 데이터베이스에서 임의의 문구를 선택하는 것이 간단했습니다.
우리는 앱 서버 모듈에서 앱 데이터 테이블에서 모든 구문을 가져온 다음 choice()
함수를 사용하여 임의의 구문을 선택하는 getter 함수를 만들었습니다.
from random import randint
@anvil.server.callable
def get_phrase():
# Return a random phrase from the phrases data table
return choice(app_tables.phrase.search())['phrase']
클라이언트 측에서 누군가가 get_phrase()
를 클릭할 때마다 실행되는 Show me a phrase button
함수를 만들었습니다.
def show_phrase_button_click(self, **event_args):
"""This method is called when the button is clicked"""
self.phrase_label.text = anvil.server.call('get_phrase')
그런 다음 Anvil IDE에서 구문 테이블을 편집하고 게임에 대한 구문을 추가했습니다.
타이머 만들기
앱을 더 유용하게 사용하려면 간단한 타이머를 앱에 내장하는 것이 좋겠다고 생각했습니다.
먼저 카운트다운 타이머의 초 수를 저장할 변수를 만들었습니다. 그런 다음 사용자가 타이머 텍스트 상자를 편집할 때마다 카운트다운 변수를 업데이트하는 이벤트 핸들러를 만들었습니다.
def __init__(self, **properties):
# Set Form properties and Data Bindings.
self.init_components(**properties)
# Init the default countdown for the form
self.countdown = 60
def countdown_textbox_change(self, **event_args):
"""This method is called when the text in the countdown text box is edited"""
# Set the forms countdown to whatever number is entered by the user
self.countdown = self.countdown_textbox.text
사용자가 업데이트할 수 있는 기본 변수가 있으면 start timer
및 reset timer
버튼을 클릭할 때 함수를 생성하기만 하면 됩니다.
양식 맨 위에 있는 time module을 가져오는 것으로 시작했습니다.
그런 다음 카운트다운이 여전히 1보다 위에 있는지 확인하는 while 루프가 포함된 start_timer_click()
함수를 만들었습니다. 각 반복은 time.sleep()
함수를 사용하여 1초 동안 일시 중지한 다음 카운트다운에서 1을 뺍니다. 카운트다운이 0이 되면 타이머가 재설정되고 알림이 트리거되어 사용자에게 알립니다.
reset_timer_button_click()
는 단순히 start_timer_click()
변수를 마이너스 1로 설정하여 countdown
의 while 루프를 중단합니다. 재설정 버튼을 클릭해도 경고가 발생하지 않도록 마이너스 1을 사용했습니다.
마지막으로 클릭할 때마다 시작 버튼과 재설정 버튼의 가시성을 바꾸는 간단한 함수를 만들었습니다.
def start_timer_click(self, **event_args):
"""This method is called when the start button is clicked"""
# Change buttons from start to reset
self.change_timer_buttons()
# Countdown
while self.countdown > 0:
self.countdown_textbox.text = self.countdown = self.countdown - 1
time.sleep(1)
# Send an alert if the time runs out
if self.countdown == 0:
anvil.alert(anvil.Label(text="Time's up!", align="center",font_size=30))
# Reset buttons and timer field
self.countdown = 60
self.countdown_textbox.text = None
self.change_timer_buttons()
def reset_timer_button_click(self, **event_args):
"""This method is called when the reset button is clicked"""
# Stop the timer by tripping the 'while self.countdown > 0' in start_timer_clock()
self.countdown = -1
def change_timer_buttons(self):
"""This method swaps the visibility of the start and reset timer buttons"""
self.reset_timer_button.visible = not self.reset_timer_button.visible
self.start_timer_button.visible = not self.start_timer_button.visible
클라이언트 측 Python으로 작성된 간단한 타이머입니다.
Reference
이 문제에 관하여(제스처 게임을 위한 Python 웹 앱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/anvil/a-python-web-app-for-playing-charades-dce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from random import randint
@anvil.server.callable
def get_phrase():
# Return a random phrase from the phrases data table
return choice(app_tables.phrase.search())['phrase']
def show_phrase_button_click(self, **event_args):
"""This method is called when the button is clicked"""
self.phrase_label.text = anvil.server.call('get_phrase')
def __init__(self, **properties):
# Set Form properties and Data Bindings.
self.init_components(**properties)
# Init the default countdown for the form
self.countdown = 60
def countdown_textbox_change(self, **event_args):
"""This method is called when the text in the countdown text box is edited"""
# Set the forms countdown to whatever number is entered by the user
self.countdown = self.countdown_textbox.text
def start_timer_click(self, **event_args):
"""This method is called when the start button is clicked"""
# Change buttons from start to reset
self.change_timer_buttons()
# Countdown
while self.countdown > 0:
self.countdown_textbox.text = self.countdown = self.countdown - 1
time.sleep(1)
# Send an alert if the time runs out
if self.countdown == 0:
anvil.alert(anvil.Label(text="Time's up!", align="center",font_size=30))
# Reset buttons and timer field
self.countdown = 60
self.countdown_textbox.text = None
self.change_timer_buttons()
def reset_timer_button_click(self, **event_args):
"""This method is called when the reset button is clicked"""
# Stop the timer by tripping the 'while self.countdown > 0' in start_timer_clock()
self.countdown = -1
def change_timer_buttons(self):
"""This method swaps the visibility of the start and reset timer buttons"""
self.reset_timer_button.visible = not self.reset_timer_button.visible
self.start_timer_button.visible = not self.start_timer_button.visible
Reference
이 문제에 관하여(제스처 게임을 위한 Python 웹 앱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anvil/a-python-web-app-for-playing-charades-dce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)