たまごっちとギガペットは、小さな仮想ペットを模した小型電子機器でした。このペットには、健康、空腹などのいくつかの統計がありました。
私は最近この例を書きました:
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
これは467バイトの骨のない仮想ペットです!それから私は、ゴルフのプロがどれほどうまくやれるか疑問に思ったので、今、挑戦しました。
チャレンジ
仮想ペットの6つの統計を追跡するプログラムを作成し、それらを時間の経過とともにユーザー入力に応じて更新します。統計は、健康とお金(100から始まる)、食べ物(10から始まる)、空腹、睡眠、およびポーション(0から始まる)です。
プログラムは、次のイベントに応答して値を更新する必要があります。
プログラムが入力を受け取っていない間、プログラムは定期的に更新を実行する必要があります(更新の間隔は0.5秒以上1秒以下にする必要があります)。各更新は次のことを行います。
- 空腹と睡眠はそれぞれ1増加します。
- 空腹度が80以上の場合、ヘルスは1減少します。
- 睡眠が80以上の場合は0にリセットされ、空腹はさらに9増加します。
- 体力が80以上の場合、お金は1増加します。
- Healthが0の場合、プログラムは終了します。
プログラムは、ユーザーが次のキーを押したときにも即座に応答する必要があります(つまり、標準入力から読み取るだけでなく、押されているキーを検出してすぐに応答できる言語機能またはライブラリを使用する必要があります)。次のアクション:
f:飢餓が8より大きく、食料がゼロ以外の場合、食料は1減少し、飢餓は9減少します。s:スリープは0にリセットされます。p:ポーションがゼロより大きい場合、ポーションは1減少し、ヘルスは9増加します。b:Moneyが8より大きい場合、Moneyは9減少し、ポーションは1増加します。t:Moneyが8より大きい場合、Moneyは9減少し、Foodは1増加します。
統計の値が変わるときはいつでも、フォームに画面に表示する必要があります。6つすべての統計は、それらのいずれかが変更されるたびに表示する必要があります。また、表示内の統計は、コンマまたは改行で区切る必要があります。Stat: value
この課題は、通常のコードゴルフの規則に従います。上記の仕様に準拠する最短のプログラムが優先されます。(いつものように、言語がコンテストより新しい場合、提出物は非競合としてマークする必要があります。)
