From 485bba1fac0ad333a0be1372295e96c9a2496974 Mon Sep 17 00:00:00 2001 From: Dalin Son Date: Mon, 7 Mar 2016 02:45:12 -0500 Subject: [PATCH 1/3] Adding new minigame: Avoid the guard - rule = avoid getting touched by the guard - lose = getting touched by the guard - difficulty = more guard, more speed - code = almost similar to LeprechaunBeatemup - tip = hit the other player on a guard --- minigames/__init__.py | 1 + minigames/avoid_the_guard/__init__.py | 1 + minigames/avoid_the_guard/avoid_the_guard.py | 95 +++++++++++++++++ .../avoid_the_guard/entities/__init__.py | 4 + minigames/avoid_the_guard/entities/perso.py | 97 ++++++++++++++++++ .../entities/persoLeprechaun.py | 35 +++++++ .../avoid_the_guard/entities/persoPlayer.py | 4 + minigames/avoid_the_guard/entities/sprite.py | 43 ++++++++ res/img/avoid_the_guard/Background.png | Bin 0 -> 14258 bytes res/img/avoid_the_guard/Guard.png | Bin 0 -> 2866 bytes res/img/avoid_the_guard/Player1.png | Bin 0 -> 2550 bytes res/img/avoid_the_guard/Player2.png | Bin 0 -> 2506 bytes 12 files changed, 280 insertions(+) create mode 100644 minigames/avoid_the_guard/__init__.py create mode 100644 minigames/avoid_the_guard/avoid_the_guard.py create mode 100644 minigames/avoid_the_guard/entities/__init__.py create mode 100644 minigames/avoid_the_guard/entities/perso.py create mode 100644 minigames/avoid_the_guard/entities/persoLeprechaun.py create mode 100644 minigames/avoid_the_guard/entities/persoPlayer.py create mode 100644 minigames/avoid_the_guard/entities/sprite.py create mode 100644 res/img/avoid_the_guard/Background.png create mode 100644 res/img/avoid_the_guard/Guard.png create mode 100644 res/img/avoid_the_guard/Player1.png create mode 100644 res/img/avoid_the_guard/Player2.png diff --git a/minigames/__init__.py b/minigames/__init__.py index 48e7001..b6c8459 100644 --- a/minigames/__init__.py +++ b/minigames/__init__.py @@ -1,3 +1,4 @@ +from avoid_the_guard.avoid_the_guard import AvoidTheGuard from stay_in_the_ring.stay_in_the_ring import StayInTheRing from blackcat import BlackCat from spingame import SpinGame diff --git a/minigames/avoid_the_guard/__init__.py b/minigames/avoid_the_guard/__init__.py new file mode 100644 index 0000000..b552838 --- /dev/null +++ b/minigames/avoid_the_guard/__init__.py @@ -0,0 +1 @@ +from avoid_the_guard import AvoidTheGuard \ No newline at end of file diff --git a/minigames/avoid_the_guard/avoid_the_guard.py b/minigames/avoid_the_guard/avoid_the_guard.py new file mode 100644 index 0000000..e724dfd --- /dev/null +++ b/minigames/avoid_the_guard/avoid_the_guard.py @@ -0,0 +1,95 @@ +import pygame +import input_map +from minigames import minigame +from minigames import multiplayer +from entities import PersoPlayer +from entities import PersoLeprechaun + +class AvoidTheGuard(multiplayer.Minigame): + name = 'Avoid the guards!' + max_duration = 10000 + + def __init__(self, game): + minigame.Minigame.__init__(self, game) + + self.width = game.GAME_WIDTH + self.height = game.GAME_HEIGHT + + def init(self): + self.background = pygame.image.load("./res/img/avoid_the_guard/Background.png").convert() + + self.players = [PersoPlayer(50, 300, "./res/img/avoid_the_guard/Player1.png", self.difficulty), \ + PersoPlayer(700, 300, "./res/img/avoid_the_guard/Player2.png", self.difficulty), ] + self.enemies = [] + self.initEnnemies() + + self.score = [self.players[0].life, self.players[1].life] + + self.currentTime = pygame.time.get_ticks()/1000.0 + + def initEnnemies(self): + for index in range(self.difficulty+3): + self.enemies.append(PersoLeprechaun(375, 300, "./res/img/avoid_the_guard/Guard.png", self.difficulty, self.players)) + + def tick(self): + self.score[0] = self.players[0].life + self.score[1] = self.players[1].life + + self.events() + self.update(pygame.time.get_ticks()/1000.0 - self.currentTime) + self.draw() + + self.currentTime = pygame.time.get_ticks()/1000.0 + + def get_results(self): + if self.players[0].life > self.players[1].life: + return [True, False] + elif self.players[0].life < self.players[1].life: + return [False, True] + else: + return [False, False] + + def update(self, timeElapsed): + for player in self.players: + player.update(timeElapsed) + + for enemy in self.enemies: + enemy.update(timeElapsed) + + self.checkEnnemyCollisions() + + def draw(self): + self.screen.blit(self.background, [0, 0]) + for player in self.players: + player.draw(self.screen) + + for enemy in self.enemies: + enemy.draw(self.screen) + + def events(self): + pygame.event.get() + for i in range(2): + keys = input_map.get_player_keys(i) + if keys[input_map.UP]: + self.players[i].move("up") + if keys[input_map.RIGHT]: + self.players[i].move("right") + if keys[input_map.DOWN]: + self.players[i].move("down") + if keys[input_map.LEFT]: + self.players[i].move("left") + if keys[input_map.ACTION]: + self.hit(i) + + def checkEnnemyCollisions(self): + for ennemy in self.enemies: + for player in self.players: + if ennemy.sprite.rect.colliderect(player.sprite.rect): + player.life -= 1 + self.elapsed_ms = 10000 + + def hit(self, player): + if self.players[player].hit(): + other = abs(player-1) + if not self.players[other].isHurt() and self.players[player].sprite.rect.colliderect(self.players[other].sprite.rect): + self.players[other].hurt(self.players[player].pos) diff --git a/minigames/avoid_the_guard/entities/__init__.py b/minigames/avoid_the_guard/entities/__init__.py new file mode 100644 index 0000000..f0e19ce --- /dev/null +++ b/minigames/avoid_the_guard/entities/__init__.py @@ -0,0 +1,4 @@ +from perso import Perso +from persoLeprechaun import PersoLeprechaun +from persoPlayer import PersoPlayer +from sprite import Sprite diff --git a/minigames/avoid_the_guard/entities/perso.py b/minigames/avoid_the_guard/entities/perso.py new file mode 100644 index 0000000..22883b8 --- /dev/null +++ b/minigames/avoid_the_guard/entities/perso.py @@ -0,0 +1,97 @@ +from sprite import Sprite + +class Perso: + def __init__(self, x, y, path, difficulty): + self.HIT_DURATION = 0.8 + self.HURT_DURATION = 0.8 + self.HURT_POWER = 300 + self.hitTime = 0 + self.hurtTime = 0 + + self.state = "normal" + self.sprite = Sprite(path) + self.sprite.rect.x = x + self.sprite.rect.y = y + + self.pos = [x,y] + self.speed = difficulty * 1.5 + 6 + self.life = 1 + + self.pushedVector = [0,0] + + def update(self, timeElapsed): + if self.state == "hit": + self.hitTime += timeElapsed + if self.hitTime >= self.HIT_DURATION: + self.normal() + self.hitTime = 0 + if self.state == "hurt": + self.hurtTime += timeElapsed + if self.hurtTime >= self.HURT_DURATION: + self.normal() + self.hurtTime = 0 + + self.updatePos(timeElapsed) + self.sprite.update(timeElapsed) + + def updatePos(self, timeElapsed): + if self.pos[0] < 25: + self.pos[0] = 25 + self.pushedVector[0] = -self.pushedVector[0] + elif self.pos[0] > 725: + self.pos[0] = 725 + self.pushedVector[0] = -self.pushedVector[0] + if self.pos[1] < 200: + self.pos[1] = 200 + self.pushedVector[1] = -self.pushedVector[1] + elif self.pos[1] > 525: + self.pos[1] = 525 + self.pushedVector[1] = -self.pushedVector[1] + + self.pos[0] = self.pos[0] + self.pushedVector[0] * timeElapsed / self.HURT_DURATION + self.pos[1] = self.pos[1] + self.pushedVector[1] * timeElapsed / self.HURT_DURATION + self.pushedVector[0] = self.pushedVector[0] - self.pushedVector[0] * timeElapsed / self.HURT_DURATION + self.pushedVector[1] = self.pushedVector[1] - self.pushedVector[1] * timeElapsed / self.HURT_DURATION + + def draw(self, screen): + self.sprite.draw(screen, self.pos) + + def move(self, direction): + if direction == "up": + self.pos[1] -= self.speed + elif direction == "left": + self.pos[0] -= self.speed + elif direction == "right": + self.pos[0] += self.speed + elif direction == "down": + self.pos[1] += self.speed + + if self.state != "hit" and self.state != "hurt": + self.sprite.changeSprite(direction) + + def normal(self): + self.state = "normal" + self.sprite.changeSprite("normal") + + def hit(self): + if self.state != "hit" and self.state != "hurt": + self.state = "hit" + self.sprite.changeSprite("action") + + return True + else: + return False + + def isHurt(self): + return self.state == "hurt" + + def hurt(self, pos): + newPos = [self.pos[0] - pos[0], self.pos[1] - pos[1]] + if newPos[0] == 0 and newPos[1] == 0: + newPos[0] = 1 + newPos[1] = 1 + max = abs(newPos[0]) if (abs(newPos[0]) > abs(newPos[1])) else abs(newPos[1]) + self.pushedVector = [self.HURT_POWER * newPos[0] / max, self.HURT_POWER * newPos[1] / max] + print self.pushedVector + self.state = "hurt" + self.sprite.changeSprite("action") diff --git a/minigames/avoid_the_guard/entities/persoLeprechaun.py b/minigames/avoid_the_guard/entities/persoLeprechaun.py new file mode 100644 index 0000000..502790d --- /dev/null +++ b/minigames/avoid_the_guard/entities/persoLeprechaun.py @@ -0,0 +1,35 @@ +from perso import Perso +import random + +class PersoLeprechaun(Perso): + def __init__(self, x, y, path, difficulty, players): + self.TELEPORT = 5 + self.KEEP_DIR_TIME = 0.25 + + Perso.__init__(self, x, y, path, difficulty) + self.money = 1 + self.difficulty = difficulty + self.players = players + self.keepDirTime = 0.5 + self.dir = 0 + + def update(self, timeElapsed): + Perso.update(self, timeElapsed) + + self.keepDirTime += timeElapsed + + if self.keepDirTime >= self.KEEP_DIR_TIME: + self.keepDirTime = 0 + self.dir = random.randint(0,3) + + if self.dir == 0: + self.move("up") + elif self.dir == 1: + self.move("right") + elif self.dir == 2: + self.move("down") + elif self.dir == 3: + self.move("left") + + if self.difficulty >= self.TELEPORT and random.randint(0, 1000) < 5: + self.pos = [random.randint(25, 725), random.randint(200, 525)] \ No newline at end of file diff --git a/minigames/avoid_the_guard/entities/persoPlayer.py b/minigames/avoid_the_guard/entities/persoPlayer.py new file mode 100644 index 0000000..4943814 --- /dev/null +++ b/minigames/avoid_the_guard/entities/persoPlayer.py @@ -0,0 +1,4 @@ +from perso import Perso + +class PersoPlayer(Perso): + pass diff --git a/minigames/avoid_the_guard/entities/sprite.py b/minigames/avoid_the_guard/entities/sprite.py new file mode 100644 index 0000000..c642ca7 --- /dev/null +++ b/minigames/avoid_the_guard/entities/sprite.py @@ -0,0 +1,43 @@ +import pygame + +class Sprite: + def __init__(self, path): + self.NB_SPRITE = 3 + self.NB_IMG_PER_SPRITE = 4 + self.UPDATE_TIME = 0.1 + self.updateTime = 0 + + self.path = path + self.image = pygame.image.load(path).convert_alpha() + self.flip = False + self.spriteRect = pygame.Rect(0, 0, self.image.get_rect().w / self.NB_IMG_PER_SPRITE, self.image.get_rect().h / self.NB_SPRITE) + self.rect = pygame.Rect(0, 0, self.image.get_rect().w / self.NB_IMG_PER_SPRITE, self.image.get_rect().h / self.NB_SPRITE) + + def update(self, elapsed): + if self.updateTime >= self.UPDATE_TIME: + self.updateTime = 0 + self.spriteRect.x += self.spriteRect.w + if self.spriteRect.x >= self.image.get_rect().w: + self.spriteRect.x = 0 + else: + self.updateTime += elapsed + + def changeSprite(self, sprite): + if sprite == "normal": + self.spriteRect.y = 0 * self.spriteRect.h + elif sprite == "left": + self.spriteRect.y = 1 * self.spriteRect.h + self.flip = True + elif sprite == "right": + self.spriteRect.y = 1 * self.spriteRect.h + self.flip = False + elif sprite == "action": + self.spriteRect.y = 2 * self.spriteRect.h + + def draw(self, screen, pos): + self.rect.x = pos[0] - self.rect.w/2 + self.rect.y = pos[1] - self.rect.h/2 + if self.flip: + screen.blit(pygame.transform.flip(self.image,1,0), self.rect, self.spriteRect) + else: + screen.blit(self.image, self.rect, self.spriteRect) diff --git a/res/img/avoid_the_guard/Background.png b/res/img/avoid_the_guard/Background.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc36cf4470a2ae15201980faa8f42d4e935c95c GIT binary patch literal 14258 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 literal 0 HcmV?d00001 diff --git a/res/img/avoid_the_guard/Player1.png b/res/img/avoid_the_guard/Player1.png new file mode 100644 index 0000000000000000000000000000000000000000..2e557a592935ec98ac89b126248f05ef94999caf GIT binary patch literal 2550 zcma)8c{tST7guV?zE+ILEgG4!j&LPm$eHlmDF9fpGs!ZFYxdO2{HkL(VZ*9N+_(ST5=b*tg8Bg4)@Z9WB5q_wuQ8DP4V}jNf$#Z(c zU~PA874=*R)9$A*VFHSfB0CJK>HcE?2gXDW{331aPz|^TiMKJ%7!}ENuIZk~`j)ON zZu9;A+~&58wdioA(hLL6T6oatbhphDcHCrk=*yWTtGlD_ySi0x014WVO` zlKIRLI85?P)15pES4lEHb`NwU^<}@Q?;TcZLi<)l`bm&3ajZOERzqqy+^o3RBmx96 zKzQ3uj`Kq?a3Dg4AF9O@b{-dWu!P{XV1`ZDwi=9ImU^(am(}3&m{d69*R%bD@=@Wk zvG1eMR;}_L&T8L@#-(%{w#`>FyRSG05t#?lr>3R)WTOhd=n$!4TN#5R3}Sh|Zj5Id zynxW5;L}w3+<_44zhiS_x97-EhiamSQk+LF2oRTl62wgwrLYsINxc7#J>i-={j5es zO*>Mj*(=rZBP3$_)v>J3`}i+AH2!h>qcCG>Gr^J9R-=Kcb?9pEIZ)ypsIuwE>l)FO ziZYWrYH>{U_cU8YFZz6)Bj&knik@^nyoS;~J6RH^B=PN4@sv>>D*W>plPrW|!_0yd zrhkANQvf!Ck&mwCb3fF~!Q?fay?Hh@^Dt-4f&tUnwf8;)cwKi3!n3y7KZ5|bMq?Kt z!q3`)GvJHkgbjCzPsRuT4!oP9CtC!b@kkWP8`oO@@wSSc zs)=pmA>-1XH9tnM{U#3ptmUDoxBMUf>Y^o{{4O9q{mRyGSvc~A#?;o}xkDZUw};;= zS+zO~&5a7xmWh@WSv@}?)<)79#DKZwtFT}vLPL4^-q>fO`{?-#*##en$&b4WNO$Vt zA=zy4o2WBHmcH|0g(Bv8aRmu{|HjjRS23N|MlP96ESc zYxStdKoR&AdUPXjJ+jT6RM+7+_zMUl3g{i$CTdR$1 z*rZ8xdWtlh1`|?lDnBC9e&p`lEiKwU3`+o3EtYIHS>iiJt~RWd(tkZM21q;~auY%n z8t{mdq*!DuI^1x(-rO|RV$`9TCsQjqec@HiFeAHspvf}>+~Q(H6O0O5Ow?M%m$!)h zmCol|1#6xZMpz$`X|c-FJzsh`FFB{*X=bH|bZ3xx3pd|;4{f?GXBhP`Hsm8Z9|jMnQ=r8LA2Jd++-$dQbUAI0+6j`a(xySmzO+h`|D zth(tVh|4nX;8I(lKUTn?11=7nFlK(m|3ADG@)AC^S%F6Ecn81G3kU$7!}Xc`ZLm}x z6#Wykb!~C;!wVsD=Z{+_Pjo|5+kr%t^xnx5Mb6n$q^`tEN%SZ@L0>?9CN1-R7pnUE z!LE+b&}U^7ZQ^i?h6%WZkjHE;e{2momj-usjaSFE*|i&@JJ?%34`#Z1FH!U|WcJEn zn@KUW?5!&K<$9mc1lDF|Y-CJOc^;@qJ}&=W9dfH%Uk=jXM5 zp)i{H>~311uh`n_$)+Hzbu>M!%;gg#eS*E`KF}F8P86-54D#cs67@dVv?~>bGd1^? z+C%Qod{86l_ZIMG2cxzrg*r0%{Q}+20bgLWD5$LdAlA;(PSG-gfy}oY(TTR=WuyGf z2W&p~RJH)Q_?yFubhKU=3!R1}VN3~L7Q_{cg&L+us^u&|Xn`uXyZ@^rRT5eK!Zt9G zl{u8c>o+ELjZ!OBa;6;iMR^@&cflz~V|5Do%f>YDn~3k%Ge5HvqwbUuzm|DXMl1+j zhx~6eUJ`SRlk|`h=QZUEbbC&hq=g1A9&qD<0O}?y*X@qdTkZ{w&kB0ooMP%0^Dns3 B_)q`< literal 0 HcmV?d00001 diff --git a/res/img/avoid_the_guard/Player2.png b/res/img/avoid_the_guard/Player2.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2fdcf64fd7d54ce681690598da1e122a89df6d GIT binary patch literal 2506 zcmbW3i$9a?AIJ453d>W3=1`HDL~|O6MbTojhDog zy^Z9DKU5_SAE9B8Ho!C&TWc%amBINO`-mZ!OxzBH>;9O1hmiBC(f2>ah}R|?{X?3S zEZ!cpA2iZYn4tAG3xVPLyD1Zp--co zKyOEnH)o|H0zLOD(BEd(NMh|~HiX+w9W)q#u|cG#bsX7z>X49|!8VKj(O5ldvGIew z#n7O|BddHKPkU3d+=y5`K)1{c@r0R4fLfGDQ2GxNi>owcO^zDH2=r! z$VSAq8e0gCSqJ_&`$tqq_un-envs{?U5@Ogd+Jy65~Ax}BN|gLcqs<(X}t!*1oSsF zLvGHR_@&M`vTk{`e+QBH!kf#o3~r@|^1` zJkTf6 z>&MWfDr#eP6l0RWQYVYU|G{P{ek`8Y{_~^FZgG^*{F6t!t;``sqQ3zy&e3T%r_`?} zi&hI#dRU-jBp(~^3G;=ve#mT%Ff0*;_oH3-wqf!3tUkS+gMQ8Y^o8}NQ=uwd?RbVR zWy8>nuXmUk=)OL(D(|!_crv{-!GJQ6iRm9C1;Y|NVcI@#v3GU8E>g6DMaT0mH?c;C zTKRc1AI3ue>76+Og4K5J0^gr^V+&z*X(Lr`GG2`DqhFDM(-qzt#Bsi>vPufBp2?!9&r$06Psf z%#8}hvb}Gr3RDPJkG`G;FUM!G{@qvCxiFCRQ?To{2H0IQ!|#Z!ru%a)WBfBKXm1}@ zpk2UdS|3_Ml*n$5A9E@FQLx+wBOc)Qge5ze7Jf+?H&BK{rLQcmEzmp2tpqF(V})Ll z&D@7vu*^-@0FUZd&26dOCeThg4v3y0RK%~9zi4fyTLLOgk^&;7f>1|_NX1bBF}zO# z2`C`+NdqpF8z59Ky}umMAb+#?h!$1P{ZRE<&^%38n z%y+-<@DnOmIK_mn@c7&oaMGB|e~x&Il>tD`-*l;?Ji@~V6oS54zc*-OT4a}OuNG^s zCT_wMjer>~KB`in@Ryb%KR440E2iZKI-Q0`WCIQrfiyXBT?eO1E`pVrI!+^D!^Y=O zR@wNQ{U8|T;7iGb{2n!*GYSxa%<`g=5zVHgvb@};D(dhcpSy?LGjt>}b4m70geZ0- zNY&Byap)Jc_QR!E1bi zAfdT?(Oecw&TC}S_N&ipib+N6u1vT4$C2n9LcoJ7CKldhW=}B)(W?_iQPT{HLle^@ zc6;BqClPqw7VJ(LFvp>m;N}*6$7~)_*|DD2?48&49+hV@ZOpP#$ss*v6pnl@dTG&i z&4)1W#?=%e*_Wkq(2u1rJ>Va=%5(`sg_eR?k+J&)XTv^>k*U!nE`=n$p1j0-z9==#Z3 zt&onD!pqJxPoMH7W2VMkyU@9V_PhM!@?6(!xcGKF>TQwIt0d>5;j^6$YeBaP!^i>a zfwk_dnG2NS9tYl(hMnCd;|F_QUmjP=ExWh+u%TSWImSEj{<%%V{l{QX(f`4qI0NdH zH0{Os&EP_wd$ML*oiY`GwK^rBCT_L<+RyKuyR$Q(6Gu1680dss((m0w=oe?lCZoFc zx^hOawf)Nz%k+aK`f}}?_&A5qmlv^%dmcW~-svu#;Q(^Z-QC#G)NH@twDudXN*>%4 z0fR6!z?w76)A@jE<(5lu5?0}}TL!paFO<>&?4F|&^X$86wB%wo@QRdR07+fw8HewH z3RNNASe~n3Hhp0=e=%j;F>nw+ggkdfL=-f#--`j9=b2>qW1{8>laISc^fJ^da+6h& zMu;q?DaRH3;<%KDK&sRMWza-)0fQf(KiBtvT)s4 zKGs3GC+hNiDls?wILdmMsgqb6q<*EKj1<;HOy~E{2OgPm=}tLHODv za5MMH+#(IE1FQU?kzVWp0WN1Nkmr9Td0*(Ho1D0F-Bp|5driY#;fC~o?m#fbfstXu zz46_FK6>NYl&bxojg#{N0dD35`o2&J(AW2${6mVW1EieULAa$wyEIpqF0>1k8y>ZG zKw>C7YGN}fh3fyRJaHyC`+1-9DZl(PF$f$k)Nsw$$#=7dn H#asUar1Hye literal 0 HcmV?d00001 From 253ede8a6410b02bf62e552ec771c89b874ea61b Mon Sep 17 00:00:00 2001 From: Dalin Son Date: Wed, 9 Mar 2016 23:44:02 -0500 Subject: [PATCH 2/3] Renamed leprechaun to guard; --- minigames/avoid_the_guard/avoid_the_guard.py | 4 ++-- minigames/avoid_the_guard/entities/__init__.py | 2 +- .../entities/{persoLeprechaun.py => persoGuard.py} | 9 ++------- 3 files changed, 5 insertions(+), 10 deletions(-) rename minigames/avoid_the_guard/entities/{persoLeprechaun.py => persoGuard.py} (74%) diff --git a/minigames/avoid_the_guard/avoid_the_guard.py b/minigames/avoid_the_guard/avoid_the_guard.py index e724dfd..ce892de 100644 --- a/minigames/avoid_the_guard/avoid_the_guard.py +++ b/minigames/avoid_the_guard/avoid_the_guard.py @@ -3,7 +3,7 @@ from minigames import minigame from minigames import multiplayer from entities import PersoPlayer -from entities import PersoLeprechaun +from entities import PersoGuard class AvoidTheGuard(multiplayer.Minigame): name = 'Avoid the guards!' @@ -29,7 +29,7 @@ def init(self): def initEnnemies(self): for index in range(self.difficulty+3): - self.enemies.append(PersoLeprechaun(375, 300, "./res/img/avoid_the_guard/Guard.png", self.difficulty, self.players)) + self.enemies.append(PersoGuard(375, 300, "./res/img/avoid_the_guard/Guard.png", self.difficulty, self.players)) def tick(self): self.score[0] = self.players[0].life diff --git a/minigames/avoid_the_guard/entities/__init__.py b/minigames/avoid_the_guard/entities/__init__.py index f0e19ce..ac2d8b2 100644 --- a/minigames/avoid_the_guard/entities/__init__.py +++ b/minigames/avoid_the_guard/entities/__init__.py @@ -1,4 +1,4 @@ from perso import Perso -from persoLeprechaun import PersoLeprechaun +from persoGuard import PersoGuard from persoPlayer import PersoPlayer from sprite import Sprite diff --git a/minigames/avoid_the_guard/entities/persoLeprechaun.py b/minigames/avoid_the_guard/entities/persoGuard.py similarity index 74% rename from minigames/avoid_the_guard/entities/persoLeprechaun.py rename to minigames/avoid_the_guard/entities/persoGuard.py index 502790d..69e5bf9 100644 --- a/minigames/avoid_the_guard/entities/persoLeprechaun.py +++ b/minigames/avoid_the_guard/entities/persoGuard.py @@ -1,13 +1,11 @@ from perso import Perso import random -class PersoLeprechaun(Perso): +class PersoGuard(Perso): def __init__(self, x, y, path, difficulty, players): - self.TELEPORT = 5 self.KEEP_DIR_TIME = 0.25 Perso.__init__(self, x, y, path, difficulty) - self.money = 1 self.difficulty = difficulty self.players = players self.keepDirTime = 0.5 @@ -29,7 +27,4 @@ def update(self, timeElapsed): elif self.dir == 2: self.move("down") elif self.dir == 3: - self.move("left") - - if self.difficulty >= self.TELEPORT and random.randint(0, 1000) < 5: - self.pos = [random.randint(25, 725), random.randint(200, 525)] \ No newline at end of file + self.move("left") \ No newline at end of file From dc9d2c716da7f11cb8c88ae60d1b790bd9406a68 Mon Sep 17 00:00:00 2001 From: Dalin Son Date: Thu, 10 Mar 2016 00:18:36 -0500 Subject: [PATCH 3/3] Renamed the game so to reflect that if they have the same score, it makes more sense that they lose a life; --- minigames/avoid_the_guard/avoid_the_guard.py | 4 ++-- minigames/stay_in_the_ring/stay_in_the_ring.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/minigames/avoid_the_guard/avoid_the_guard.py b/minigames/avoid_the_guard/avoid_the_guard.py index ce892de..709fcba 100644 --- a/minigames/avoid_the_guard/avoid_the_guard.py +++ b/minigames/avoid_the_guard/avoid_the_guard.py @@ -6,7 +6,7 @@ from entities import PersoGuard class AvoidTheGuard(multiplayer.Minigame): - name = 'Avoid the guards!' + name = 'Push him on the guard!' max_duration = 10000 def __init__(self, game): @@ -28,7 +28,7 @@ def init(self): self.currentTime = pygame.time.get_ticks()/1000.0 def initEnnemies(self): - for index in range(self.difficulty+3): + for index in range(self.difficulty+6): self.enemies.append(PersoGuard(375, 300, "./res/img/avoid_the_guard/Guard.png", self.difficulty, self.players)) def tick(self): diff --git a/minigames/stay_in_the_ring/stay_in_the_ring.py b/minigames/stay_in_the_ring/stay_in_the_ring.py index 606d21d..8f9a141 100644 --- a/minigames/stay_in_the_ring/stay_in_the_ring.py +++ b/minigames/stay_in_the_ring/stay_in_the_ring.py @@ -7,7 +7,7 @@ from entities import Ring class StayInTheRing(multiplayer.Minigame): - name = 'Stay in the dome!' + name = 'Knock him out of ring!' max_duration = 10000 def __init__(self, game):