Я делаю игру, в которой у игрока есть три ценности; голод, температура, жажда. Эти три характеристики должны непрерывно уменьшаться, т.е. каждые одну секунду все три характеристики уменьшаются на единицу . Но значения не должны отображаться на экране. Между тем, поскольку статистика уменьшается, предполагается, что пользователь играет в игру. Статистика предназначена для отображения только тогда, когда пользователь нажимает «e». Вот мой код и то, что я пробовал:

import time

hunger = 100
thirst = 100
temperature = 100
print("You've woken up after a plane crash. What you do and where you go is up to you. Just watch out for the elements.")

while True:
    time.sleep(1)
    hunger -= 1
    temperature -= 1
    thirst -= 1
    stat = input("Enter command: ")
    if stat == "e":
        print("Your hunger is:",hunger,"Your thirst is",thirst, "Your temperature is",temperature)
0
OLDY 5 Май 2021 в 01:38

1 ответ

Лучший ответ

Чтобы иметь возможность уменьшать статистику игрока во время игры, вы можете использовать цикл while в другом потоке / задаче.

Использовать потоки с Python очень просто:

Во-первых, вам нужно импортировать потоки:

from threading import Thread

Теперь вы можете создать функцию, которую позже будете запускать как поток:

def decrease_stats():
    global hunger, thirst, temperature
    while True:
        time.sleep(1)
        hunger -= 1
        temperature -= 1
        thirst -= 1

После создания функции вам нужно запустить ее как поток. Сделайте это, набрав:

Thread(target=decrease_stats).start()

Теперь в вашем основном потоке вы можете просто дождаться, пока игрок введет свою команду:

while True:
    stat = input("Enter command: ")
    if stat == "e":
    print("Your hunger is:", hunger, "Your thirst is", thirst, "Your temperature is", temperature)

Конечный результат будет:

import time
from threading import Thread

hunger = 100
thirst = 100
temperature = 100
print("You've woken up after a plane crash. What you do and where you go is up to you. Just watch out for the elements.")

def decrease_stats():
    global hunger, thirst, temperature
    while True:
        time.sleep(1)
        hunger -= 1
        temperature -= 1
        thirst -= 1

Thread(target=decrease_stats).start()

while True:
    stat = input("Enter command: ")
    if stat == "e":
        print("Your hunger is:", hunger, "Your thirst is", thirst, "Your temperature is", temperature)
1
Jord_Shan 4 Май 2021 в 23:06