From 3e80d61fc4b18db4ee90f7465371a9a505422f1b Mon Sep 17 00:00:00 2001 From: luxick Date: Sun, 26 Jul 2015 19:06:09 +0200 Subject: [PATCH] tamagotchis now feed and wash each other --- mayorgotchi.py | 40 ++++++++++++++++++++++ mayorgotchi.pyc | Bin 1576 -> 3131 bytes tamagotchi.py | 87 ++++++++++++++++++++++++++++++++---------------- tamagotchi.pyc | Bin 3847 -> 4770 bytes test.py | 21 ++++-------- util.py | 5 +-- util.pyc | Bin 884 -> 929 bytes 7 files changed, 109 insertions(+), 44 deletions(-) diff --git a/mayorgotchi.py b/mayorgotchi.py index 9f9e4e6..1aa160c 100644 --- a/mayorgotchi.py +++ b/mayorgotchi.py @@ -2,6 +2,7 @@ from tamagotchi import Tamagotchi import names +import random class Mayorgotchi: mygotchis = [] @@ -25,7 +26,46 @@ class Mayorgotchi: result += n.status_abs() return result + def get_free(self): + freegotchis = [] + for n in self.mygotchis: + if n.status is 'Idle': + freegotchis.append(n) + if freegotchis is not None: + return freegotchis[random.randrange(0,len(freegotchis),1)] + else: + return None + + def get_hungry(self): + for n in self.mygotchis: + if n.status is 'Idle': + if n.hunger[0] <= 20: + return n + + def get_dirty(self): + dirties = [] + for n in self.mygotchis: + if n.hygiene[0] <= 20: + dirties.append(n) + if len(dirties) > 0: + return dirties[random.randrange(0,len(dirties),1)] + else: + return None + + def order_feed(self): + hungry = self.get_hungry() + if hungry is not None: + self.get_free().feed_other(hungry) + + def order_wash(self): + dirty = self.get_dirty() + if dirty is not None: + self.get_free().wash_other(dirty) + + def step(self): for n in self.mygotchis: n.step() self.remove_corpses() + self.order_feed() + self.order_wash() diff --git a/mayorgotchi.pyc b/mayorgotchi.pyc index 303e3f3a6f96537149da20bedbdb9874d9d1821c..68ec52b9c43a416b476fd32d7124cf9a716db442 100644 GIT binary patch literal 3131 zcmcImU2hvz5S?8oPS#BuHwlEOR9XoEMuHe2q>8G7((=*=@~|mHL_({r_r~62?REBU znpkR{!e8QV@xl*)bLOr;`XTX9YI&R*}#oO@>OZTx+^_1D&)zx1U3H1Pj1hW!B| z#n+QuWa!DUCm!d%0aeu7~Q1O{C9A=M|ndGzCaP=V)$TAFnT$7>9SkJcq^ zsuD=Lrbh-G3_-mHuN#8tdwUk~FlW>rdueM663mcDnl~z_gO-ipaMO^zL()+x z$^AaiGJBThCc{iJvaUmv9Hd0YrJy8D#$z)|^(P0#$T;FAqqG=mm6uR4P}EE-HzVC{ zM`t2(QW{hDfn|ct{bVEI>+dsQ(p`XZ+uQVZ!0!A0+qL{7meh1+ErZU}TCPz>Icr}7 zgnNMQ3{?M)ro+XmRtO_DCg!39t$wXZ20%S@lNXZrL}PCm!X5)l^m zrnmhLnz5(XH2Zee%)Ss*?u=%8$eJ0yn`+qJno=O-ij+C0HQ}Jlp1zZCbD-WN8)-L~ z^fNOu(Ff3@J&Ik5k0?HbSYQ;Fr&(EL#x4_19#@2uubzB`$pW3WL8q-nI`MeW()|XC z>y^XdK2g3#rhUp==#7slDcq7xx#17udlzmZmVd;s|-J}0X^f4A(;V7$5`}Vv; zV2gRSAMufHtVc}`JJnWr?D1kay$3N9*HGCoY-Pp~Z$Hr|6rVx-FP$M`FL;7sxy9@U zcf1z<=#kxg})O1V@smM_xcZ62MpI`KNb&-fjyXK*18g26c-zPRj?vcal`vzXC K<-%LkhW{@j1T0xMRA%&G8g@vJofuWg!Au@`2VuTx` z#l-oREJ48}K3k#F-;rd&o1VUSK9Ai=;W$SA2C6ZjZ4I3_>hvSbvVe39Ev sF$iQ7NDgcX8_)taCQcSkR!&Y0kOmEw$?LdfCtu)B diff --git a/tamagotchi.py b/tamagotchi.py index 678ec9a..55150bd 100644 --- a/tamagotchi.py +++ b/tamagotchi.py @@ -9,8 +9,12 @@ class Tamagotchi: sleep = 0 dead = False decayspeed = 0 + potential = 0 + power = 0 - def __init__(self, name, hunger, happiness, hygiene, sleep, decayspeed): + recovery = 10 + + def __init__(self, name, hunger, happiness, hygiene, sleep, decayspeed, potential): self.name = name self.hunger = [hunger, hunger] self.happiness = [happiness, happiness] @@ -19,52 +23,79 @@ class Tamagotchi: self.dead = False self.status = 'Idle' self.decayspeed = decayspeed + self.potential = potential + self.power = potential + + def set_status(self, status): + self.status = status def feed_other(self, tamagotchi): - tamagotchi.hunger += 5 + self.status = 'Working' + tamagotchi.status = 'Eating' def play_with(self, tamagotchi): tamagotchi.happiness += 5 self.happiness += 5 def wash_other(self,tamagotchi): - tamagotchi.hygiene += 5 + self.status = 'Working' + tamagotchi.status = 'Bathing' - def sleep(self): - self.sleep += 5 + def update_sleep(self): + if self.sleep[0] <= 0: + self.status = 'Sleeping' + if self.status is 'Sleeping': + if self.sleep[0] <= self.sleep[1] - self.decayspeed: + self.sleep[0] += 5 + if self.sleep[0] >= self.sleep[1]: + self.status = 'Idle' + else: + self.sleep[0] -= self.decayspeed - def decay(self, amount): - if not self.dead: - if self.hunger[0] < amount: + def update_hunger(self): + if self.status is 'Eating': + if self.hunger[0] <= self.hunger[1]: + self.hunger[0] += 10 + else: + self.status = 'Idle' + elif self.status is 'Idle': + # The Tamagotchi is starving + if self.hunger[0] < self.decayspeed: self.hunger[0] = 0 self.dead = True self.status = 'Dead' else: - self.hunger[0] -= amount + self.hunger[0] -= self.decayspeed - if self.happiness[0] < amount: - self.happiness[0] = 0 + def update_hygiene(self): + if self.status is 'Bathing': + if self.hygiene[0] >= self.hygiene[1]: + self.status = 'Idle' + if self.hygiene[0] >= self.hygiene[1] - self.recovery: + self.hygiene[0] = self.hygiene[1] else: - self.happiness[0] -= amount + self.hygiene[0] += self.recovery + else: + self.hygiene[0] -= self.decayspeed - if self.hygiene[0] < amount: - self.hygiene[0] = 0 - else: - self.hygiene[0] -= amount - - if self.sleep[0] <= 0: - self.status = "Sleeping" - - if self.status is 'Sleeping': - if self.sleep[0] <= self.sleep[1] - amount: - self.sleep[0] += 5 - if self.sleep[0] >= self.sleep[1]: - self.status = 'Idle' - else: - self.sleep[0] -= amount def step(self): - self.decay(self.decayspeed) + if not self.dead: + if self.status is 'Working': + if self.power <= 0: + self.status = 'Idle' + self.power = self.potential + else: + self.power -= 1 + else: + if self.happiness[0] < self.decayspeed: + self.happiness[0] = 0 + else: + self.happiness[0] -= self.decayspeed + + self.update_hunger() + self.update_sleep() + self.update_hygiene() def is_dead(self): if self.dead: diff --git a/tamagotchi.pyc b/tamagotchi.pyc index d3f9d3ac20dc1c2e20aee8d2a5ddbbc25b2a81a2..430b61e184580aecfe7f9f95b450b5b98ea496c6 100644 GIT binary patch literal 4770 zcmcIo&u<%55T0E-PV6Lgo3>6|3QbXqe1Ik`gjP`msL-laB};6I5WXyncN05t?CtKR zAxd%z;>dwB2M#?TDuIN=nSX=-gMWbUo44y9)QCe&*ZVRv`}Xa;@0&MoUUPrVm;Su) z`)5r_|K;%aBi!*K8Xv!$_?CPlaw_sg1G+7nwLG3BB{WaHJ#V|0G+XWd02a*mamRn4 z2}BwehiTZ_>R^pLhipt~ThMk|f*ENPRW4~etL+@W*O;dlaG`Nd{JaWf@uyTcFMdIV z3*t|!ups`73KzvMs&GmCk_wl_pH-nE{+tSn;?JwFB>p)Ss^XVbxFXJG?L6j?;Fh*F zoN{vp4R0Iw$GGF?XpSv87I7ii{B5I!3S*AHRE06mU#jBK6o09jmjo)_Qb;IF%W*+1 zGja?WmSQFVBmoihp`MVA$9^ZM%|cME>+Jt``8q8PUpCIn0%zoT=yYjeTKh^iAK7WFn`#!N#c z8VwH@`2hFXdEmMTJKmvt&`w%6prpQ+2fp*O>id5Y;V|-)jr(5G`WFhE$@xy;54^Z# zfF~XU;2FKV$%H!p69gb_aIYesb}fmnF}pIbEa{rZ$kn#&&Pep#Q1A4;oKz{yb%*tf ze&BFTO_~R0>68bvquqre&GKasP_aRVU9skob>_y9@gusAkn!yRiD5DjsB5e-2pnJ^ zS`b-23ba5EupZ$=TZ5iOq^ibojr7Jr__0x2Y2z!V=Rg2>L4s{p;4ET^)n;Z|Gu>j(^EeF!BGXs;C2zVKnFw z{=`}LwjCqeX^iHPWa0 zoWzGEW&m>ndApf|l-=qsCx@*G1vhGhQ%f#UvMF6oOWiidP#3l4-0Jka#LR-RsW~Y0 zqC_7aw0bCsVLp4Az@--kQ4{5^w;ce^ez}&VefH2f{0sqeKpz5cV%rvzi+4;6V?GG| z#epp^RoF5E&P53H(N3_9cETCql}@mYcA6g33AVJ;X#pjq#(n%4P9LqV-(EXeKDxbr zd-Y`bk)9jYkM0;PJ36c%y=x36E36;Ar>gGI>ql!;O1gj$Y^dhV3SwAkWxCai_PoTL z3J4ewU}#6t=#khgQnrIM2Px|VF)uq>KOvW~8;*k*8Pyx|W?qJ< za2P5SE~%e?*O&HLWGH}lPh$v1_V{W}?7D}COJ zEvt8Xt2eq9?GimqkhTSQq#XfC(h&hE(oq31(lG&P(gOlAq+J1nq~ijzq!R*iq&)#c z6fF5kBI@v|4kX?n0`vIzeG~w1+XQpsw(8*ajYEk%9%>w6nrdjDf_9p zZUDyx9(`iJ4^$z2JmTmbq74pNQviyzqO&`S8bqy|m>hbG9Sf5Rkq&`P&D_y4cLd&b zy9kEE)b3%TPCpUcRP51Ya*`IodVl**eU^CpESa2SMTN!8hN9L_h!1tzU22Bi*>E)m zs5K`&hT*7^kt5rUfH{7&iu|nDYj&}h;xwlbq1K9GEz3@{wW7Ad1C+q9ym1@`^EHHs zt0;?LMUD4r>)O1Jp1Tcy;KJZiWNo>%T?^uHMPQ%?xyha+5C-4+=Ckc)$6T>zyNJ`Z z>iWwG25p}WB%D)8ww{%DodRAH$)UX;=Y3oo+kcLQNhyl(fw2EFUQqlp0RSs(y zW*8*cglc1v@2BRoXrSGxJ->s$NY#8xlrl&d;GG>wbKXPS^>#(`G0d1vZ!7#&MCF2tUiuo7CXKG#+%2 zhQX^224SRhywP9;W(?*$%%r)MU6>9S%DZY$F^H;DpXJ6~+jV%@Zo#$9#8AV`Py=MMGSsj!)UY!&voi#1umQFDWd;Dr%nA^}2qKt41ncA+MrTHj$r~7h y`ARr}A_e&+sd*)ti8+%cnH?rOGf8j?07V%Xc^E|}Co$