Tamagotchi和Giga Pets是模拟小型虚拟宠物的小型电子设备。这只宠物有一些统计数据,例如健康,饥饿等。
我最近写了这个例子:
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开始)。
程序应响应以下事件来更新值:
当程序不接收任何输入时,它应以固定的间隔执行更新(两次更新之间的间隔不应短于半秒,也不应长于一秒)。每个更新执行以下操作:
- 饥饿和睡眠分别增加1。
- 如果饥饿大于或等于80,则生命值降低1。
- 如果“睡眠”为80或更高,它将重置为0,并且饥饿感会额外增加9。
- 如果健康值为80或更高,则金钱增加1。
- 如果“健康”为0,则程序退出。
该程序还必须在用户按下以下键时立即做出响应(这意味着您将需要使用一种语言功能或库,该功能或库可以检测到被按下的键并立即做出响应,而不仅仅是从标准输入中读取内容),以下动作:
f:如果饥饿大于8并且食物不为零,则食物减少1,饥饿减少9。s:睡眠重设为0。p:如果药水大于零,则药水减少1,生命值提高9。b:如果金钱大于8,则金钱减少9,魔药增加1。t:如果金钱大于8,则金钱减少9,食物增加1。
每当统计值改变时,它们都必须以表格形式显示在屏幕上。无论何时更改,必须显示所有六个统计信息。并且显示器中的统计信息必须用逗号或换行符分隔。Stat: value
这个挑战遵循正常 代码高尔夫球规则:符合上述规格的最短程序将获胜。(请注意,与往常一样,如果语言比竞赛语言新,则提交的内容必须标记为非竞争内容。)
