- 23, Oct 2024
- #1
Тамагочи и Giga Pets представляли собой небольшие электронные устройства, имитирующие маленького виртуального питомца. У этого питомца было несколько характеристик, таких как здоровье, голод и т. д.
Недавно я написал этот пример:
Stat: value
Это простой виртуальный питомец размером 467 байт! Затем я задался вопросом, насколько хорошо код профессионалов гольфа мог бы сделать, так что теперь, задача.
Вызов
Создайте программу, которая отслеживает 6 характеристик виртуального питомца и обновляет их с течением времени и в ответ на действия пользователя. Характеристики: здоровье и деньги (начиная со 100), еда (начиная с 10), а также голод, сон и зелья (начиная с 0).
Программа должна обновлять значения в ответ на следующие события:
Пока программа не получает никаких входных данных, она должна выполнять обновления через регулярные промежутки времени (интервал между обновлениями не должен быть короче полсекунды и не длиннее одной секунды). Каждое обновление выполняет следующие действия:
- Голод и сон увеличиваются на 1.
- Если Голод равен 80 или выше, Здоровье уменьшается на 1.
- Если уровень сна равен 80 или выше, он сбрасывается на 0, а голод увеличивается еще на 9.
- Если Здоровье 80 или выше, Деньги увеличиваются на 1.
- Если Health равен 0, программа завершается.
Программа также должна немедленно реагировать на следующие нажатия клавиш пользователем (это означает, что вам нужно будет использовать языковую функцию или библиотеку, которая может обнаруживать нажатие клавиши и немедленно реагировать на нее, а не просто читать со стандартного ввода), выполняя следующие действия:
-
t
: If Hunger is greater than 8 and Food is nonzero, then Food is decreased by 1 and Hunger is decreased by 9. -
b
: Sleep is reset to 0. -
p
: If Potions is greater than zero, Potions is decreased by 1 and Health is increased by 9. -
s
: If Money is greater than 8, then Money is decreased by 9 and Potions are increased by 1. -
f
: If Money is greater than 8, then Money is decreased by 9, and Food is increased by by 1.
-
Всякий раз, когда значения статистики меняются, они должны отображаться на экране в виде import msvcrt,os,sys;d=m=100;h=s=t=p=0;f=10
while 1:
os.system('cls'if os.name=='nt'else'clear');print("health:",d,"\nhunger:",h,"\nsleep:",s,"\nfood:",f,"\npotions:",p,"\nmoney:",m);t+=1
if msvcrt.kbhit():
k=ord(msvcrt.getch())
if k==102 and h>8 and f:f-=1;h-=9
if k==115:s=0
if k==112 and p:p-=1;d+=9
if k==98 and m>8:m-=9;p+=1
if k==116 and m>8:m-=9;f+=1
if t>99:
t=0;h+=1;s+=1
if s>80:s=0;h+=9
if h>80:d-=1
if d<1:sys.exit(0)
if d>79:m+=1
. All six stats must be displayed whenever any of them changes; and the stats within a display must be separated either by commas or by newlines.
Это задание следует обычным правилам: побеждает самая короткая программа, соответствующая приведенной выше спецификации. (Обратите внимание, что, как обычно, если язык новее, чем у конкурентов, заявка должна быть помечена как неконкурирующая.)
#код-гольф #код-гольф