Tamagotchi e Giga Pets eram pequenos dispositivos eletrônicos que simulavam um pequeno animal de estimação virtual. Este animal de estimação tinha várias estatísticas, como saúde, fome etc.
Escrevi recentemente este exemplo:
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
Este é um animal de estimação virtual básico em 467 bytes! Então me perguntei o quão bem os profissionais de código de golfe poderiam fazer, agora o desafio.
O desafio
Faça um programa que rastreie 6 estatísticas de um animal de estimação virtual e atualize-as com o tempo e em resposta à entrada do usuário. As estatísticas são: saúde e dinheiro (começando em 100), comida (começando em 10) e fome, sono e poções (começando em 0).
O programa deve atualizar os valores em resposta aos seguintes eventos:
Enquanto o programa não estiver recebendo nenhuma entrada, ele deve executar atualizações em intervalos regulares (o intervalo entre as atualizações não deve ser menor que meio segundo nem maior que um segundo). Cada atualização faz o seguinte:
- A fome e o sono aumentam em 1.
- Se a Fome for 80 ou superior, a Vida diminui em 1.
- Se o Sleep for 80 ou superior, ele será redefinido para 0 e o Fome aumentará 9.
- Se a Saúde tiver 80 anos ou mais, o dinheiro aumentará 1.
- Se Saúde for 0, o programa será encerrado.
O programa também deve responder imediatamente após as seguintes teclas pressionadas pelo usuário (isso significa que você precisará usar um recurso ou biblioteca de idioma que possa detectar uma tecla pressionada e responder a ela imediatamente, em vez de apenas ler da entrada padrão), executando as seguintes ações:
f: Se a fome for maior que 8 e a comida for diferente de zero, a comida diminuirá em 1 e a fome diminuirá em 9.s: O sono é redefinido para 0.p: Se Poções for maior que zero, Poções será reduzida em 1 e Saúde aumentada em 9.b: Se o dinheiro for maior que 8, o dinheiro será reduzido em 9 e as poções aumentadas em 1.t: Se o dinheiro for maior que 8, o dinheiro será reduzido em 9 e o alimento aumentado em 1.
Sempre que os valores das estatísticas mudam, eles devem ser exibidos na tela no formulário . Todas as seis estatísticas devem ser exibidas sempre que alguma delas mudar; e as estatísticas em uma exibição devem ser separadas por vírgulas ou por novas linhas.Stat: value
Esse desafio segue as regras normais de código-golfe : o programa mais curto que atenda às especificações acima vence. (Observe que, como de costume, se o idioma for mais recente que o da concorrência, o envio deverá ser marcado como não competitivo.)
