Tamagotchi e Giga Pets erano piccoli dispositivi elettronici che simulavano un animaletto virtuale. Questo animale domestico aveva diverse statistiche, come salute, fame, ecc
. Di recente ho scritto questo esempio:
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
Questo è un animale domestico a ossa nude in 467 byte! Mi sono quindi chiesto quanto bene i professionisti del codice golf potrebbero fare, quindi ora la sfida.
La sfida
Crea un programma che tiene traccia di 6 statistiche di un animale domestico virtuale e le aggiorna nel tempo e in risposta all'input dell'utente. Le statistiche sono: salute e denaro (a partire da 100), cibo (a partire da 10) e fame, sonno e pozioni (a partire da 0).
Il programma dovrebbe aggiornare i valori in risposta ai seguenti eventi:
Mentre il programma non riceve input, dovrebbe eseguire gli aggiornamenti a intervalli regolari (l'intervallo tra gli aggiornamenti non deve essere inferiore a mezzo secondo né più lungo di un secondo). Ogni aggiornamento procede come segue:
- Fame e sonno aumentano ciascuno di 1.
- Se la fame è 80 o superiore, la salute diminuisce di 1.
- Se il sonno è 80 o superiore, viene reimpostato su 0 e la fame aumenta di altri 9.
- Se la salute è 80 o superiore, il denaro aumenta di 1.
- Se Health è 0, il programma viene chiuso.
Il programma deve inoltre rispondere immediatamente ai seguenti tasti premuti dall'utente (ciò significa che sarà necessario utilizzare una funzione o una libreria linguistica in grado di rilevare un tasto premuto e rispondere immediatamente, anziché limitarsi a leggere dallo standard input), eseguendo le seguenti azioni:
f: Se la fame è maggiore di 8 e il cibo è diverso da zero, allora il cibo è diminuito di 1 e la fame è diminuita di 9.s: La sospensione viene reimpostata su 0.p: Se Pozioni è maggiore di zero, Pozioni viene ridotta di 1 e Salute aumenta di 9.b: Se il denaro è maggiore di 8, il denaro viene ridotto di 9 e le pozioni aumentate di 1.t: Se il denaro è maggiore di 8, il denaro viene ridotto di 9 e il cibo viene aumentato di 1.
Ogni volta che i valori delle statistiche cambiano, devono essere visualizzati sullo schermo nel modulo . Tutte e sei le statistiche devono essere visualizzate ogni qualvolta cambiano; e le statistiche all'interno di un display devono essere separate da virgole o da righe.Stat: value
Questa sfida segue le normali regole del code-golf : vince il programma più breve conforme alle specifiche sopra. (Tieni presente che, come al solito, se la lingua è più recente della concorrenza, la presentazione deve essere contrassegnata come non competitiva.)
