import threading, time
import sys
import random
from queue import Queue
MIN, MAX = 0, 100 # number range in which random integer is created
THRESHOLD = 15 # time given to a player
def countdown(n: int):
'''Countdown function. From n to 0'''
while n > 0:
sys.stderr.write(f'\n{n}')
time.sleep(1)
n -= 1
sys.stderr.write(f'\nOVER')
def game():
'''Represents the game. Must be executed in daemon'''
num = random.randint(MIN, MAX)
print(f'Game started. Enter your number (from {MIN} to {MAX})')
while True:
guess = int(input('Your guess: '))
if guess > num:
print(f'Wrong! {guess} is GREATER than the target')
elif guess < num:
print(f'Wrong! {guess} is SMALLER than the target')
elif guess == num:
print(f'You are RIGHT! {guess} is the number')
break
def main():
counter = threading.Thread(target=countdown, args=[THRESHOLD])
daemon_game = threading.Thread(target=game, daemon=True)
counter.start()
daemon_game.start()
if __name__ == '__main__':
main()
aW1wb3J0IHRocmVhZGluZywgdGltZQppbXBvcnQgc3lzCmltcG9ydCByYW5kb20KZnJvbSBxdWV1ZSBpbXBvcnQgUXVldWUKCk1JTiwgTUFYID0gMCwgMTAwICAjIG51bWJlciByYW5nZSBpbiB3aGljaCByYW5kb20gaW50ZWdlciBpcyBjcmVhdGVkClRIUkVTSE9MRCA9IDE1ICAjIHRpbWUgZ2l2ZW4gdG8gYSBwbGF5ZXIKCgpkZWYgY291bnRkb3duKG46IGludCk6CiAgICAnJydDb3VudGRvd24gZnVuY3Rpb24uIEZyb20gbiB0byAwJycnCiAgICB3aGlsZSBuID4gMDoKCSAgICBzeXMuc3RkZXJyLndyaXRlKGYnXG57bn0nKQoJICAgIHRpbWUuc2xlZXAoMSkKCSAgICBuIC09IDEKICAgIHN5cy5zdGRlcnIud3JpdGUoZidcbk9WRVInKQoKCmRlZiBnYW1lKCk6CiAgICAnJydSZXByZXNlbnRzIHRoZSBnYW1lLiBNdXN0IGJlIGV4ZWN1dGVkIGluIGRhZW1vbicnJwogICAgbnVtID0gcmFuZG9tLnJhbmRpbnQoTUlOLCBNQVgpCiAgICBwcmludChmJ0dhbWUgc3RhcnRlZC4gRW50ZXIgeW91ciBudW1iZXIgKGZyb20ge01JTn0gdG8ge01BWH0pJykKICAgIHdoaWxlIFRydWU6CiAgICAgICAgZ3Vlc3MgPSBpbnQoaW5wdXQoJ1lvdXIgZ3Vlc3M6ICcpKQogICAgICAgIGlmIGd1ZXNzID4gbnVtOgogICAgICAgICAgICBwcmludChmJ1dyb25nISB7Z3Vlc3N9IGlzIEdSRUFURVIgdGhhbiB0aGUgdGFyZ2V0JykKICAgICAgICBlbGlmIGd1ZXNzIDwgbnVtOgogICAgICAgICAgICBwcmludChmJ1dyb25nISB7Z3Vlc3N9IGlzIFNNQUxMRVIgdGhhbiB0aGUgdGFyZ2V0JykKICAgICAgICBlbGlmIGd1ZXNzID09IG51bToKICAgICAgICAgICAgcHJpbnQoZidZb3UgYXJlIFJJR0hUISB7Z3Vlc3N9IGlzIHRoZSBudW1iZXInKQogICAgICAgICAgICBicmVhawoKCmRlZiBtYWluKCk6CiAgICBjb3VudGVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9Y291bnRkb3duLCBhcmdzPVtUSFJFU0hPTERdKQogICAgZGFlbW9uX2dhbWUgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1nYW1lLCBkYWVtb249VHJ1ZSkKICAgIGNvdW50ZXIuc3RhcnQoKQogICAgZGFlbW9uX2dhbWUuc3RhcnQoKQoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBtYWluKCk=