From ba0ba1650e7bbdaf2f7e800c299101836942e7bf Mon Sep 17 00:00:00 2001 From: Skullheadx <704277@pdsb.net> Date: Fri, 8 Jul 2022 16:51:04 -0400 Subject: [PATCH] added the world blocks & textures --- Actors.py | 12 +-- Assets/ARROW.png | Bin 0 -> 677 bytes Assets/BOW.png | Bin 0 -> 863 bytes Assets/BOW_PULLED.png | Bin 0 -> 862 bytes Assets/FLINTLOCK_PISTOL.png | Bin 0 -> 873 bytes Assets/GrassBlock.png | Bin 990 -> 0 bytes Assets/world/blocks/DIRT.png | Bin 0 -> 805 bytes Assets/world/blocks/GRASS.png | Bin 0 -> 5793 bytes Assets/{LEAFS1.png => world/blocks/LEAF.png} | Bin Assets/{ => world/blocks}/LEAFS.png | Bin Assets/world/blocks/PLACEHOLDER.png | Bin 0 -> 4934 bytes Assets/world/blocks/SAND.png | Bin 0 -> 980 bytes .../blocks/STONE.png} | Bin Assets/{ => world/blocks}/TREEBARK.png | Bin Assets/{Water.png => world/blocks/WATER.png} | Bin Assets/world/decor/BLUE_CRYSTAL.png | Bin 0 -> 1421 bytes Assets/world/decor/PURPLE_CRYSTAL.png | Bin 0 -> 1356 bytes Block.py | 15 +++- Enemy.py | 4 +- Game.py | 14 ++-- Player.py | 77 ++++++++++-------- Weapon.py | 5 +- World.py | 61 ++++++++++++++ main.py | 1 - 24 files changed, 133 insertions(+), 56 deletions(-) create mode 100644 Assets/ARROW.png create mode 100644 Assets/BOW.png create mode 100644 Assets/BOW_PULLED.png create mode 100644 Assets/FLINTLOCK_PISTOL.png delete mode 100644 Assets/GrassBlock.png create mode 100644 Assets/world/blocks/DIRT.png create mode 100644 Assets/world/blocks/GRASS.png rename Assets/{LEAFS1.png => world/blocks/LEAF.png} (100%) rename Assets/{ => world/blocks}/LEAFS.png (100%) create mode 100644 Assets/world/blocks/PLACEHOLDER.png create mode 100644 Assets/world/blocks/SAND.png rename Assets/{StoneBlock.png => world/blocks/STONE.png} (100%) rename Assets/{ => world/blocks}/TREEBARK.png (100%) rename Assets/{Water.png => world/blocks/WATER.png} (100%) create mode 100644 Assets/world/decor/BLUE_CRYSTAL.png create mode 100644 Assets/world/decor/PURPLE_CRYSTAL.png create mode 100644 World.py diff --git a/Actors.py b/Actors.py index 6913cba..8468580 100644 --- a/Actors.py +++ b/Actors.py @@ -53,10 +53,10 @@ class Actor: def modify_health(self, amount, reason): self.health += amount if amount < 0: - self.stun_time = -amount * 50 + self.stun_time = -amount * 10 self.is_dead(reason) def attack(self, enemy, weapon): - self.modify_health(-10,"enemy") + self.modify_health(weapon.damage,"enemy") self.push(enemy) def follow_target(self, node, follow_range=None, stop_dist=None): if stop_dist is None: @@ -94,10 +94,10 @@ class Actor: # if enemy.velocity.x != pg.Vector2(0,0): # v = enemy.velocity.normalize().x - self.velocity += pg.Vector2(0.75 * v, -1) + self.velocity += pg.Vector2(v, -1) def push2(self, direction): - self.velocity += pg.Vector2(0.75 * direction, -1) + self.velocity += pg.Vector2(direction, -1) def move_and_collide(self, pos, vel, delta): @@ -115,10 +115,10 @@ class Actor: thing.position.x = pos.x - thing.width if vel.x > 0: pos.x = thing.position.x - self.width - vel.x = min(vel.x, 0) + # vel.x = min(vel.x, 0) elif vel.x < 0: pos.x = thing.position.x + thing.width - vel.x = max(vel.x, 0) + # vel.x = max(vel.x, 0) collision_rect = self.get_collision_rect(pos) self.on_ground = False diff --git a/Assets/ARROW.png b/Assets/ARROW.png new file mode 100644 index 0000000000000000000000000000000000000000..d79c4e019d45ba8b8a8f5d92a982a36b634a8ca7 GIT binary patch literal 677 zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqrn)=X#T08eLUg@U5|w9K4T z1_q6ZwG(YU4m(J+-CySAs-;vWAb2uB_DIu;j>RDxImEo87lyJ=_Wr-X(|OXPM;bfC zWd201vD#tr`qcw1jwXABK0m)My`V?so(o-j%4NQPxc7bEomzH|uSUUV`#2r0>L^Qg zcg=jWN}|HGAx*x`P|Yy7f4SJ@4>IxJKYaYFcWCpT*Z*W}z0RdH_^ZrI-jyhrFK|95 z%IbOTBLQtMu8)= zBmTsWH3jz`t(mrZO{M?8LkWJ-o`rL-2_!{0$#8Z|2z2F4jp(?rZeo&>=kq}R{|g@b zPw-X?=j@T;Ug6OCWi-4VhTV8r{xr+uxtNyO8O}{6_7y zPuE{*yy<@_TUWP+B{P-(hnX8NazN9+jV^R?pwdV<@;`~x1W$*w7Kqd#sdZh2DT(`cNd2LAh=-f z^2rPg44efXk;M!QddeWoSh3W;jDdlHy~NYkmHinzyP%b!*V=`X7#J89db&7-7PoP zR~_ARlBeR{`^<*aNoT|g&#YVZ?!I2gPQyH*w&j%~vG+B_Tn%N5_r>ir+DZ+v0n8sjYKf&+R2EZ>P=t{pIX+ fZrk_rHVljQ8{Ep=x5$ivfq}u()z4*}Q$iB}?$|6l literal 0 HcmV?d00001 diff --git a/Assets/BOW.png b/Assets/BOW.png new file mode 100644 index 0000000000000000000000000000000000000000..74435e7d173a80b4ebfcecb0992608e3d6208cf5 GIT binary patch literal 863 zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqrn)=X#T08eLUg@U5|w9K4T z1_q6ZwG(YU4m(J+-CySAs-;vWAb2uB_DIu;j>RDxImEo87lyJ=_Wr-X(|OXPM;bfC zWd201vD#tr`qcw1jwXABK0m)My`V?so(o-j%4NQPxc7bEomzH|uSUUV`#2r0>L^Qg zcg=jWN}|HGAx*x`P|Yy7f4SJ@4>IxJKYaYFcWCpT*Z*W}z0RdH_^ZrI-jyhrFK|95 z%IbOTBLQtMu8)= zBmTsWH3jz`t(mrZO{M?8LkWJ-o`rL-2_!{0$#8Z|2z2F4jp(?rZeo&>=kq}R{|g@b zPw-X?=j@T;Ug6OCWi-4VhTV8r{xr+uxtNyO8O}{6_7y zPuE{*yy<@_TUWP+B{P-(hnX8NazN9+jV^R?pwdV<@;`~x1W$*w7Kqd#sdZh2DT(`cNd2LAh=-f z^2rPg44efXk;M!QddeWoSh3W;jDdlHy~NYkmHinzyP%aRvrPGfx-C5R21mr`UQkI|{U=r+qhwxEX!p zMpSoehkVDyV~6w?xo|wR*|_CX{)&}68ZNzuM4eb14~j%Z{4jpAHfNK3vY?QyUgooR zYs(~_-4y>emsMazRMf*n+bIl(_bRbBvL!sbbyfNA`-vj(WwyoISspr(H|8z9uz4Gq`I1 znSa-mwAX(8_Ru$->05|KkArd^d*{|E4R&$K9jCH+7RDxImEo87lyJ=_Wr-X(|OXPM;bfC zWd201vD#tr`qcw1jwXABK0m)My`V?so(o-j%4NQPxc7bEomzH|uSUUV`#2r0>L^Qg zcg=jWN}|HGAx*x`P|Yy7f4SJ@4>IxJKYaYFcWCpT*Z*W}z0RdH_^ZrI-jyhrFK|95 z%IbOTBLQtMu8)= zBmTsWH3jz`t(mrZO{M?8LkWJ-o`rL-2_!{0$#8Z|2z2F4jp(?rZeo&>=kq}R{|g@b zPw-X?=j@T;Ug6OCWi-4VhTV8r{xr+uxtNyO8O}{6_7y zPuE{*yy<@_TUWP+B{P-(hnX8NazN9+jV^R?pwdV<@;`~x1W$*w7Kqd#sdZh2DT(`cNd2LAh=-f z^2rPg44efXk;M!QddeWoSh3W;jDdlHy~NYkmHinzyP%<-N?_?41_s6`PZ!4!i_>eT z?DapCAaHE{zAfF{R#M3^F_K3NoPtbUtPBP0qYm~fJb3eDzv3*3$!#Y{P!%$q!IY~uOVbST^>1_I! zN^57tDlRU#E@^k?`iX6_D`uJXoP2l8^0|!J^X{j|ub=O9C_TJjS7OiGNGsLL2fwjZ zvi-gG(68pt{j8OO3qJuDiqN^)3$v1-^uZ1rZ+}?K>=)RUUfC zeY58W ky)9VhN^W!$Y8`posOGW9+Z}a!8JGRLDD$8+CV7TzEBZcWnoX?|no6{-0<=KMd9Wppcaa$xl< zyHIUWt*Kth5B{z#^;-U9UjB3K`GF^Wn(3n^|(bnUzgGAf?WnQjYN@W6tCj#c`bchMYEa`IH5O9lYt<{W}U+lh8lSIVb z4{m+%;C#~6gGVF7*~1+L{xBAn6a|$`6x#32rJJ%IvRqY!>%ecx+F(A3J*-vN z@9f)puJ9K_%8KyQ<_8Wc8iXx*Q`%qtz2w{5`?JFS*D-wDP;_e(x4a?)0|Q%S|xv6<249-QVi6yBi3gww484B*6z5(HleBulYjP{-`jv*GO-%c|0KAa%XHedhb zb+xeFoz2PW;ma*t)D^8d6k=s!-n_W9)qYX5W5$|pXR$z$Eydjr6>kd4^Dr&q_p(v)|{f}-(E$>zkRoNR)GZDK9T3#JATUCDtz&kear6eT3t#j zL$tDP9kyb~vukIn`pft_+B)amw0hRl4J$p$=0>eumR7m<%tNO{J>kDoXRj1y+t<>l dzqu%m!N@=7)|=LYf(#4{44$rjF6*2UngGH)fBFCb literal 0 HcmV?d00001 diff --git a/Assets/GrassBlock.png b/Assets/GrassBlock.png deleted file mode 100644 index b4a37fc86d749dcf475d5976431d3897669ad34a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 990 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLTQi-V13aCb6$*;-(=u~X z85lGs)=sqbIP4&EG(LE1ke2M51&<~yw2BlEEu5kycF-wPd&{eYqL=L#mMD4_7K+4h z^VR8u$;QknEiDjbImj>IuCDGXuKBUvbD?Vw`|-aO^9e|aE}IqmxM5YKo0Xt= z@lR314_ypZ0&W7$LdIWH(iFMRe=OyfkAI(JbNct4`HTHEXYhRJJhIuxT<1~gqnEzk z&-eJtB&K>Q+NsMKzi2wrA2U6+?r}^}#DkfF%CqMw_X%__<(pt=hpWyG{!E7-2V1`^6k8N4FA#}cxC@y z&71IS@|UXUZaKz>xep%gT6?nkz*9bh4@j zm&_BEuA7$E(CnPB#pPzU-1~QL-@LtVy!KxmgU;HbZdsPMYLBs_fYbU__~`^V$!e;@6v4PEZk!N=}8DRV<7Uw5v;o2+XwOD6Z_s3%SnoqN@_ zxJ~&Y%Zs>M+t{_zr!zwgc`iLJ$d{^nNhykhjUXGYwDh)EB={o-1% zG;Iq@@*ex^wZAO4*uL6w{!4%gDd?) zLkfeC2a8qr)Ptp(2PV05vpGhpIJ!*O#$?1XN$1AqsV#5b`@PQWeQWvs=C*5Ehb1@m z=W(v+(YYODoOEtqZ{d9oHb!aP?IxP19dEptXBzEtb48D(?%^y329uWmsmF3W*R7K3 zRh@J6M9+eptvS*P3YJZGrJNbMUew?F_S*7%_STfyES@(QcqZKW##yi}^~&{V`}Wm; vZhYUG(fs85^sL)#oVOVg(m&ny{m&%0Jmup`J;9p{3=9mOu6{1-oD!MdlNvH7L?qz$H5AG5i1K`*&xxuJkn56k*;KpYuDJh2ss=*cQxXq@w?)I!b>@n{cn*DdBc=SD4t|`KG;J0LLFrUN@)~aiF?nV8! zsAVv^a`h8$K>Q>WxNfm*s zZ$sX3Pfjoo4Bha}yY+STyeG@IO{`lldMz=LJ@AZ>(v8?}{K7wX$YuQgeu063fx*+& K&t;ucLK6TGSzG%6 literal 0 HcmV?d00001 diff --git a/Assets/world/blocks/GRASS.png b/Assets/world/blocks/GRASS.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec4647251a5babfac81e7a54ca5d4fbc48b7672 GIT binary patch literal 5793 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 literal 0 HcmV?d00001 diff --git a/Assets/world/blocks/SAND.png b/Assets/world/blocks/SAND.png new file mode 100644 index 0000000000000000000000000000000000000000..22da8855a80534c75c5518eb6e3b8e7c6dba3628 GIT binary patch literal 980 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLTQZ%U13aCb6$*;-(=u~X z85lGs)=sqbIP4(Nc7K_dtCmukfZ)l1xjG$P7SpuE4mxFOZ+Vqa^itj=(<3NGhV^<= zvwe3cyLfu6Yz(X82lgWuPkLT-_4=cyxuxS{-($IZzwb@o{hncAVB)HqrkpEgr7n47 zXgE7slzBbJ1(^kwT86>?OT>*o$i#pD@bRzSq0M_<|C6cpx|h=6uhM69cSDDHN4mN0 z+|PD}9aB|Wf6S>kw18X4z9_crXK(Sv#K!ct9-pjv7A`ts))DU#!i+*5Nj}=JC~Jy- zN^F=#eqorl>9t+z^@#@S*Dl%Vm(5bBqu8k8a$?289xff1jO!kT6Bm7+(O!S!qxwnJ z$*XzX`dC92Iu-qSQ2$}~_O!&RQ@&is8s3TD{wKlAwA*2G-tGIxx81d2{B!=m)N9|u zr4QUufBAKrm>tuv?Ty{9x2e5noNj&K!el+kNy zb_|lQu72VzDB$Q3*Q~z#_^$2T+TYukUEMDqBvUl2W8eN%1_lPs0*}aI1_nK45N51c zYG1~{z`$PO>Fdh=jGbLjmOqe_FNT4EL9)a(qQp5rH#aq}gu%HeHL)Z$MWH;iBtya7 z(>EZzkx!g~fpMRwi(`n!`Ory`eKLvyF3lJIVRk~a_9{jdy++cSta~{K-<7^EHr%mGKe_oxk`-s402L3l{Kgy;Z@6QW1X1Kg( z%e5ma%MOMl7reT&#pZnS>yNiT1{!EE8>}?6U; zTkzb*WA&V(6t&##D;ZX-t$lw@b@`df2~ieL?a~=Ce_cHKt&UNmNM_N8JsnP2j0Y+i z6xO<>t$OtQA6r3vpPzWDsd(WFR)@3Oa=AHq$xj!$=u6kLr=Qmm$N!e;t zz4q$enLl4oJ@;2PmHoiQ@UKr@Wz`(%Z>FVdQ&MBb@0R6?R2mk;8 literal 0 HcmV?d00001 diff --git a/Assets/StoneBlock.png b/Assets/world/blocks/STONE.png similarity index 100% rename from Assets/StoneBlock.png rename to Assets/world/blocks/STONE.png diff --git a/Assets/TREEBARK.png b/Assets/world/blocks/TREEBARK.png similarity index 100% rename from Assets/TREEBARK.png rename to Assets/world/blocks/TREEBARK.png diff --git a/Assets/Water.png b/Assets/world/blocks/WATER.png similarity index 100% rename from Assets/Water.png rename to Assets/world/blocks/WATER.png diff --git a/Assets/world/decor/BLUE_CRYSTAL.png b/Assets/world/decor/BLUE_CRYSTAL.png new file mode 100644 index 0000000000000000000000000000000000000000..391154807681d1599c0f969568e94df0550cfa8b GIT binary patch literal 1421 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 UF1PAC0|Nttr>mdKI;Vst0044+6#xJL literal 0 HcmV?d00001 diff --git a/Block.py b/Block.py index fcf4a4e..89bcf03 100644 --- a/Block.py +++ b/Block.py @@ -2,20 +2,27 @@ from Setup import * class Block: - width, height = SCREEN_WIDTH*4/5, 50 + textures = {file[:file.index(".")]:pg.transform.scale( + pg.image.load(path.join("Assets/world/blocks", file)), (50, 50)) for + file in listdir("Assets/world/blocks")} + width, height = textures["PLACEHOLDER"].get_size() colour = (71, 77, 97) - def __init__(self, pos, collision_layer): + def __init__(self, pos, collision_layer, texture="PLACEHOLDER"): self.position = pg.Vector2(pos) self.velocity = pg.Vector2(0,0) # So that we may have moving blocks collision_layer.add(self) + self.texture = self.textures[texture] + self.movable = False def update(self, delta): - pass # when player "moves", it's actually the blocks + pass def get_collision_rect(self): return pg.Rect(self.position, (self.width, self.height)) + def draw(self, surf): - pg.draw.rect(surf, self.colour, get_display_rect(self.get_collision_rect()), border_radius=5) + pg.draw.rect(surf, self.colour, get_display_rect(self.get_collision_rect()), border_radius=3) + surf.blit(self.texture, get_display_rect(self.get_collision_rect())) diff --git a/Enemy.py b/Enemy.py index 0a14e33..6564b2c 100644 --- a/Enemy.py +++ b/Enemy.py @@ -20,9 +20,9 @@ class Enemy(Actor): self.movable = True self.dizzy_time = 0 - # self.health = 0 + self.health = 0 # for debugging without getting killed - self.weapon = Melee(self.position, (-Melee.width/2 + 7, Melee.height/2 + self.height/3 - 8), (-5,Melee.height), self.width,-1) + self.weapon = Melee(self.position, (-Melee.width/2 + 7, Melee.height/2 + self.height/3 - 8), (-5,Melee.height), self.width,-1, -10) def update(self, delta, target=None): super().update(delta) diff --git a/Game.py b/Game.py index 5293288..69d408a 100644 --- a/Game.py +++ b/Game.py @@ -6,22 +6,25 @@ from Pet import Pet from Enemy import Enemy from Block import Block from PhysicsBody import PhysicsBody +from World import World from EndScreen import EndScreen class Game: def __init__(self): - self.collision_layer = {"world": set(), "player": set(), "enemy": set(), "pet": set()} + self.collision_layer = {"none":set(),"world": set(), "player": set(), "enemy": set(), "pet": set()} self.player = Player(center, self.collision_layer["player"], [self.collision_layer["enemy"], self.collision_layer["world"]], [self.collision_layer["enemy"]]) # self.pet = Pet(center, self.collision_layer["pet"], [self.collision_layer["world"]]) + self.world = World(self.collision_layer) + self.enemies = [Enemy((SCREEN_WIDTH *3/ 4, SCREEN_HEIGHT / 2), self.collision_layer["enemy"], [self.collision_layer["player"], self.collision_layer["world"]])] - self.blocks = [Block((-0, SCREEN_HEIGHT * 3 / 4), self.collision_layer["world"])] + self.scene = EndScreen() self.level = 1 @@ -40,17 +43,16 @@ class Game: self.collision_layer["enemy"].remove(enemy) self.collision_layer["enemy"].add(self.enemies[i]) - for block in self.blocks: - block.update(delta) + self.world.update(delta) # self.pet.update(delta, self.player, self.camera_pos) def draw(self, surf): screen.fill((255, 255, 255)) + self.world.draw(surf) for enemy in self.enemies: enemy.draw(surf) - for block in self.blocks: - block.draw(surf) + self.player.draw(surf) diff --git a/Player.py b/Player.py index a75a72c..fc44fc5 100644 --- a/Player.py +++ b/Player.py @@ -9,11 +9,14 @@ from datetime import datetime, timedelta from Potion import Potion from Weapon import Melee + class Player(Actor): scale = 100 - factor = 640/scale - crop = pg.Rect(179,169, 170, 401) - idle_frames = [pygame.transform.scale(pg.image.load(path.join("Assets/player/idle", file)).subsurface(pg.Rect(179,169, 170, 401)), (50,100)) for file in listdir("Assets/player/idle")] + factor = 640 / scale + crop = pg.Rect(179, 169, 170, 401) + idle_frames = [ + pg.transform.scale(pg.image.load(path.join("Assets/player/idle", file)).subsurface(pg.Rect(179, 169, 170, 401)), + (50, 100)) for file in listdir("Assets/player/idle")] width, height = idle_frames[0].get_size() colour = (52, 94, 235) @@ -22,7 +25,6 @@ class Player(Actor): gravity = 0.098 friction = 0.7 - def __init__(self, pos, collision_layer, collision_mask, can_hurt): super().__init__(pos, collision_layer, collision_mask) self.initial_position = pg.Vector2(pos) @@ -36,7 +38,9 @@ class Player(Actor): self.lastValueL = False self.lastPressedRight = datetime.utcnow() self.lastValueR = False - # self.areas = {"body":Area(self.position, pg.Vector2(0, self.height/2),self.width, self.height/2,Actor)} + self.areas = {"body": Area(self.position, pg.Vector2(0, self.height / 2), self.width, self.height / 2, Actor), + "head": Area(self.position, pg.Vector2(self.width * 1 / 3 * 1 / 2, -2), self.width * 2 / 3, 25, + Actor)} self.potion_cooldown = 0 self.starting_potions = 999 @@ -44,7 +48,8 @@ class Player(Actor): for i in range(self.starting_potions): self.potion_bag.append(Potion(self)) - self.weapon = Melee(self.position, (-Melee.width/2 + 7, Melee.height/2 + self.height/3 - 8), (-5,Melee.height), self.width,-1) + self.weapon = Melee(self.position, (-Melee.width / 2 + 7, Melee.height / 2 + self.height / 3 - 8), + (-5, Melee.height), self.width, -1, -25) self.targets = can_hurt self.direction = -1 @@ -52,7 +57,7 @@ class Player(Actor): self.state = "IDLE" self.current_frame = 0 self.display = self.idle_frames[0] - self.display_offsets = {"weapon":pg.Vector2(0,0)} + self.display_offsets = {"weapon": pg.Vector2(0, 0)} def update(self, delta): super().update(delta) @@ -60,8 +65,8 @@ class Player(Actor): # Get and handle input self.handle_input() - #if self.potion_cooldown > 0: - #threading.Thread(Potion.cooldown) + # if self.potion_cooldown > 0: + # threading.Thread(Potion.cooldown) if len(self.potion_bag) > 0: self.potion_bag[0].get_input(self) @@ -73,8 +78,8 @@ class Player(Actor): if self.velocity.x == 0: self.direction = 0 else: - self.direction = math.copysign(1,self.velocity.x) - self.weapon.update(delta,self.position, self.direction) + self.direction = math.copysign(1, self.velocity.x) + self.weapon.update(delta, self.position, self.direction) if self.state == "IDLE": frame = math.floor(self.current_frame) @@ -90,52 +95,56 @@ class Player(Actor): # 1 - 10 up, 11 down by 1, 12 - 18 down by 2, 19-20 down 1 FIX THIS frame += 1 if 1 < frame < 10: - self.display_offsets["weapon"] = pg.Vector2(0,2) + self.display_offsets["weapon"] = pg.Vector2(0, 2) elif frame == 11 or frame == 19 or frame == 20: - self.display_offsets["weapon"] = pg.Vector2(0,1) + self.display_offsets["weapon"] = pg.Vector2(0, 1) else: - self.display_offsets["weapon"] = pg.Vector2(0,0) + self.display_offsets["weapon"] = pg.Vector2(0, 0) self.current_frame = (self.current_frame + 0.1) % len(self.idle_frames) return self.position - self.initial_position - - def handle_input(self): pressed = pygame.key.get_pressed() if pressed[pg.K_w] or pressed[pg.K_UP] or pressed[pg.K_SPACE]: self.jump() if pressed[pg.K_a] or pressed[pg.K_LEFT]: self.move_left() - if(self.lastValueL == False): + if (self.lastValueL == False): timeSincePressed = datetime.utcnow() - self.lastPressedLeft timeSinceLastDash = datetime.utcnow() - self.lastDash - if(timeSinceLastDash >= self.dashCooldown): self.dashPossible = True - else: self.dashPossible = False - if(timeSincePressed < self.timeBetweenDoublePress and self.dashPossible == True): - self.move_left(self.dashSpeed) # change this to change how the player dashes (maybe replace with a custom dash function) + if (timeSinceLastDash >= self.dashCooldown): + self.dashPossible = True + else: + self.dashPossible = False + if (timeSincePressed < self.timeBetweenDoublePress and self.dashPossible == True): + self.move_left( + self.dashSpeed) # change this to change how the player dashes (maybe replace with a custom dash function) self.dashPossible = False self.lastDash = datetime.utcnow() - self.lastPressedLeft = datetime.utcnow() - + self.lastPressedLeft = datetime.utcnow() + if pressed[pg.K_d] or pressed[pg.K_RIGHT]: self.move_right() - if(self.lastValueR == False): + if (self.lastValueR == False): timeSincePressed = datetime.utcnow() - self.lastPressedRight timeSinceLastDash = datetime.utcnow() - self.lastDash - if(timeSinceLastDash >= self.dashCooldown): self.dashPossible = True - else: self.dashPossible = False - if(timeSincePressed < self.timeBetweenDoublePress and self.dashPossible == True): + if (timeSinceLastDash >= self.dashCooldown): + self.dashPossible = True + else: + self.dashPossible = False + if (timeSincePressed < self.timeBetweenDoublePress and self.dashPossible == True): self.lastDash = datetime.utcnow() self.dashPossible = False - self.move_right(self.dashSpeed) # change this to change how the player dashes (maybe replace with a custom dash function) - self.lastPressedRight = datetime.utcnow() - + self.move_right( + self.dashSpeed) # change this to change how the player dashes (maybe replace with a custom dash function) + self.lastPressedRight = datetime.utcnow() + self.lastValueL = pressed[pg.K_a] or pressed[pg.K_LEFT] self.lastValueR = pressed[pg.K_d] or pressed[pg.K_RIGHT] mouse_pressed = pg.mouse.get_pressed(3) - if mouse_pressed[0]: # LMB + if mouse_pressed[0]: # LMB if not self.weapon.attacking: self.weapon.swing() for mask in self.targets: @@ -143,12 +152,10 @@ class Player(Actor): if self.weapon.get_collision_rect().colliderect(enemy.get_collision_rect()): enemy.attack(self, self.weapon) - - def draw(self, surf): self.weapon.draw(surf, self.display_offsets["weapon"]) - # super().draw(surf) surf.blit(self.display, get_display_rect(self.get_collision_rect())) + # super().draw(surf) # print(self.position, self.velocity, get_display_rect(self.get_collision_rect()).topleft, Setup.camera_offset) # pg.draw.rect(surf, self.colour, get_display_rect(self.get_collision_rect()), border_radius=8) @@ -163,7 +170,7 @@ class Player(Actor): # make sure the red part health bar always sits on the left # sets bar to center of background bar, then subtracts 1/2 of blank space to put it on the left foreground_rect.center = ( - background_rect.centerx - 1080 * 0.185 * ((1 - self.health * 0.01) / 2), background_rect.centery) + background_rect.centerx - 1080 * 0.185 * ((1 - self.health * 0.01) / 2), background_rect.centery) pg.draw.rect(surf, (54, 54, 54), background_rect) pg.draw.rect(surf, (255, 0, 0), foreground_rect) diff --git a/Weapon.py b/Weapon.py index 54e84a1..a36395f 100644 --- a/Weapon.py +++ b/Weapon.py @@ -4,11 +4,11 @@ from Setup import * class Melee: - img = pg.transform.scale(pg.image.load("Assets/SWORD.png"), (40,40)) + img = pg.transform.scale(pg.image.load("Assets/SWORD.png"), (40, 40)) flipped_img = pg.transform.flip(img,True,False) width,height = img.get_size() - def __init__(self, pos, offset, pivot, width,direction): + def __init__(self, pos, offset, pivot, width,direction, damage): self.position = pg.Vector2(pos) self.offset = pg.Vector2(offset) self.pivot = self.position + pg.Vector2(pivot) @@ -21,6 +21,7 @@ class Melee: self.swing_timer = 0 self.attacking = False + self.damage = damage def update(self, delta, pos, direction): self.position = pg.Vector2(pos) diff --git a/World.py b/World.py new file mode 100644 index 0000000..c7ddb92 --- /dev/null +++ b/World.py @@ -0,0 +1,61 @@ +from Setup import * +from Block import Block + +class World: + + def __init__(self, collision_layer): + self.collision_layer = collision_layer + self.blocks = [] + self.add_world() + + def add_world(self): + for i in range(25): + self.blocks.append(Block((i * Block.width,SCREEN_HEIGHT*3/4),self.collision_layer["world"],"GRASS")) + self.blocks.append(Block((i * Block.width,SCREEN_HEIGHT*3/4 + Block.height),self.collision_layer["world"],"DIRT")) + if random.random() < 0.5: + self.blocks.append( + Block((i * Block.width, SCREEN_HEIGHT * 3 / 4 + Block.height * 2), self.collision_layer["world"], + "STONE")) + else: + self.blocks.append( + Block((i * Block.width, SCREEN_HEIGHT * 3 / 4 + Block.height * 2), self.collision_layer["world"], + "DIRT")) + self.blocks.append(Block((i * Block.width,SCREEN_HEIGHT*3/4 + Block.height * 3),self.collision_layer["world"],"STONE")) + self.blocks.append(Block((i * Block.width,SCREEN_HEIGHT*3/4 + Block.height * 4),self.collision_layer["world"],"STONE")) + + self.blocks.append(Block((Block.width * 10,SCREEN_HEIGHT*3/4 + Block.height * -1),self.collision_layer["none"],"TREEBARK")) + self.blocks.append(Block((Block.width * 10,SCREEN_HEIGHT*3/4 + Block.height * -2),self.collision_layer["none"],"TREEBARK")) + self.blocks.append(Block((Block.width * 10,SCREEN_HEIGHT*3/4 + Block.height * -3),self.collision_layer["none"],"TREEBARK")) + self.blocks.append(Block((Block.width * 10,SCREEN_HEIGHT*3/4 + Block.height * -4),self.collision_layer["none"],"TREEBARK")) + + self.blocks.append(Block((Block.width * 10,SCREEN_HEIGHT*3/4 + Block.height * -3),self.collision_layer["none"],"LEAFS")) + self.blocks.append(Block((Block.width * 10,SCREEN_HEIGHT*3/4 + Block.height * -4),self.collision_layer["none"],"LEAFS")) + self.blocks.append(Block((Block.width * 10,SCREEN_HEIGHT*3/4 + Block.height * -5),self.collision_layer["none"],"LEAFS")) + # self.blocks.append(Block((Block.width * 10,SCREEN_HEIGHT*3/4 + Block.height * -6),self.collision_layer["none"],"LEAFS")) + + self.blocks.append(Block((Block.width * 9,SCREEN_HEIGHT*3/4 + Block.height * -3),self.collision_layer["none"],"LEAFS")) + self.blocks.append(Block((Block.width * 9,SCREEN_HEIGHT*3/4 + Block.height * -4),self.collision_layer["none"],"LEAFS")) + self.blocks.append(Block((Block.width * 9,SCREEN_HEIGHT*3/4 + Block.height * -5),self.collision_layer["none"],"LEAFS")) + # self.blocks.append(Block((Block.width * 9,SCREEN_HEIGHT*3/4 + Block.height * -6),self.collision_layer["none"],"LEAFS")) + + self.blocks.append(Block((Block.width * 11,SCREEN_HEIGHT*3/4 + Block.height * -3),self.collision_layer["none"],"LEAFS")) + self.blocks.append(Block((Block.width * 11,SCREEN_HEIGHT*3/4 + Block.height * -4),self.collision_layer["none"],"LEAF")) + self.blocks.append(Block((Block.width * 11,SCREEN_HEIGHT*3/4 + Block.height * -5),self.collision_layer["none"],"LEAFS")) + # self.blocks.append(Block((Block.width * 11,SCREEN_HEIGHT*3/4 + Block.height * -6),self.collision_layer["none"],"LEAFS")) + + + # self.blocks.append(Block((Block.width * 12,SCREEN_HEIGHT*3/4 + Block.height * -3),self.collision_layer["none"],"LEAFS")) + # self.blocks.append(Block((Block.width * 12,SCREEN_HEIGHT*3/4 + Block.height * -4),self.collision_layer["none"],"LEAFS")) + # self.blocks.append(Block((Block.width * 12,SCREEN_HEIGHT*3/4 + Block.height * -5),self.collision_layer["none"],"LEAFS")) + # self.blocks.append(Block((Block.width * 8,SCREEN_HEIGHT*3/4 + Block.height * -3),self.collision_layer["none"],"LEAFS")) + # self.blocks.append(Block((Block.width * 8,SCREEN_HEIGHT*3/4 + Block.height * -4),self.collision_layer["none"],"LEAFS")) + # self.blocks.append(Block((Block.width * 8,SCREEN_HEIGHT*3/4 + Block.height * -5),self.collision_layer["none"],"LEAFS")) + + + def update(self, delta): + for block in self.blocks: + block.update(delta) + + def draw(self, surf): + for block in self.blocks: + block.draw(surf) diff --git a/main.py b/main.py index 75a122b..7f5847f 100644 --- a/main.py +++ b/main.py @@ -29,7 +29,6 @@ while is_running: case 1: scene = Game() old_level = level - scene.update(delta) scene.draw(screen) -- 2.54.0